diff --git a/configure.d/1_bd_part_count.conf b/configure.d/1_bd_part_count.conf new file mode 100644 index 0000000..0986b23 --- /dev/null +++ b/configure.d/1_bd_part_count.conf @@ -0,0 +1,61 @@ +#!/bin/bash +# +# Copyright(c) 2012-2022 Intel Corporation +# SPDX-License-Identifier: BSD-3-Clause +# + +. $(dirname $3)/conf_framework + +check() { + cur_name=$(basename $2) + config_file_path=$1 + if compile_module $cur_name "struct gendisk *disk = NULL; struct xarray xa; xa = disk->part_tbl" "linux/genhd.h" + then + echo $cur_name "1" >> $config_file_path + elif compile_module $cur_name "struct gendisk *disk = NULL; struct disk_part_tbl *ptbl; ptbl = disk->part_tbl" "linux/genhd.h" + then + echo $cur_name "2" >> $config_file_path + else + echo $cur_name "X" >> $config_file_path + fi +} + +apply() { + case "$1" in + "1") + add_function " + static inline int cas_blk_get_part_count(struct block_device *bdev) + { + struct block_device *part; + unsigned long idx; + int count = 0; + + xa_for_each(&bdev->bd_disk->part_tbl, idx, part) { + count++; + } + + return count; + }" ;; + "2") + add_function " + static inline int cas_blk_get_part_count(struct block_device *bdev) + { + struct disk_part_tbl *ptbl; + int i, count = 0; + + rcu_read_lock(); + ptbl = rcu_dereference(bdev->bd_disk->part_tbl); + for (i = 0; i < ptbl->len; ++i) { + if (rcu_access_pointer(ptbl->part[i])) + count++; + } + rcu_read_unlock(); + + return count; + }" ;; + *) + exit 1 + esac +} + +conf_run $@ diff --git a/modules/cas_cache/layer_cache_management.c b/modules/cas_cache/layer_cache_management.c index 4907a49..6f4252d 100644 --- a/modules/cas_cache/layer_cache_management.c +++ b/modules/cas_cache/layer_cache_management.c @@ -4,7 +4,6 @@ */ #include "cas_cache.h" -#include "utils/utils_blk.h" #include "threads.h" extern u32 max_writeback_queue_size; diff --git a/modules/cas_cache/utils/utils_blk.c b/modules/cas_cache/utils/utils_blk.c deleted file mode 100644 index 2286bf3..0000000 --- a/modules/cas_cache/utils/utils_blk.c +++ /dev/null @@ -1,22 +0,0 @@ -/* -* Copyright(c) 2012-2021 Intel Corporation -* SPDX-License-Identifier: BSD-3-Clause -*/ - -#include "utils_blk.h" - -int cas_blk_get_part_count(struct block_device *bdev) -{ - struct disk_part_tbl *ptbl; - int i, count = 0; - - rcu_read_lock(); - ptbl = rcu_dereference(bdev->bd_disk->part_tbl); - for (i = 0; i < ptbl->len; ++i) { - if (rcu_access_pointer(ptbl->part[i])) - count++; - } - rcu_read_unlock(); - - return count; -} diff --git a/modules/cas_cache/utils/utils_blk.h b/modules/cas_cache/utils/utils_blk.h deleted file mode 100644 index 9a3946f..0000000 --- a/modules/cas_cache/utils/utils_blk.h +++ /dev/null @@ -1,14 +0,0 @@ -/* -* Copyright(c) 2012-2021 Intel Corporation -* SPDX-License-Identifier: BSD-3-Clause -*/ - -#ifndef UTILS_BLK_H_ -#define UTILS_BLK_H_ - -#include -#include - -int cas_blk_get_part_count(struct block_device *bdev); - -#endif /* UTILS_BLK_H_ */