From 4bb435555f28dc19d1782828bfa08b663686a7fe Mon Sep 17 00:00:00 2001 From: Gal Hammer Date: Sun, 30 Jan 2022 11:30:05 +0200 Subject: [PATCH] configure/bd_part_count: adapt to kernel 5.12 Moved cas_blk_get_part_count function to configure section after the the disk's partitions table was changed to xarray. Signed-off-by: Gal Hammer Signed-off-by: Shai Fultheim --- configure.d/1_bd_part_count.conf | 61 ++++++++++++++++++++++ modules/cas_cache/layer_cache_management.c | 1 - modules/cas_cache/utils/utils_blk.c | 22 -------- modules/cas_cache/utils/utils_blk.h | 14 ----- 4 files changed, 61 insertions(+), 37 deletions(-) create mode 100644 configure.d/1_bd_part_count.conf delete mode 100644 modules/cas_cache/utils/utils_blk.c delete mode 100644 modules/cas_cache/utils/utils_blk.h 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_ */