From 1d64bc5294ce81b177e47dcbb9797f26f25e182d Mon Sep 17 00:00:00 2001 From: Gal Hammer Date: Mon, 7 Feb 2022 14:53:34 +0200 Subject: [PATCH] configure/bd_first_part: adapt to kernel 5.12 The disk's partitions table was changed to xarray. Signed-off-by: Gal Hammer Signed-off-by: Shai Fultheim --- configure.d/1_bd_first_part.conf | 32 ++++++++++++++++++++++++++------ 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/configure.d/1_bd_first_part.conf b/configure.d/1_bd_first_part.conf index 1495c70..a9643ba 100644 --- a/configure.d/1_bd_first_part.conf +++ b/configure.d/1_bd_first_part.conf @@ -1,6 +1,6 @@ #!/bin/bash # -# Copyright(c) 2012-2021 Intel Corporation +# Copyright(c) 2012-2022 Intel Corporation # SPDX-License-Identifier: BSD-3-Clause # @@ -9,15 +9,18 @@ check() { cur_name=$(basename $2) config_file_path=$1 - if compile_module $cur_name "struct block_device bd; bd = *disk_part_iter_next(NULL);" "linux/blk_types.h" "linux/genhd.h" + 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 hd_struct hd; hd = *disk_part_iter_next(NULL);" "linux/genhd.h" - then + elif compile_module $cur_name "struct block_device bd; bd = *disk_part_iter_next(NULL);" "linux/blk_types.h" + then echo $cur_name "2" >> $config_file_path + elif compile_module $cur_name "struct hd_struct hd; hd = *disk_part_iter_next(NULL);" "linux/genhd.h" + then + echo $cur_name "3" >> $config_file_path else echo $cur_name "X" >> $config_file_path - fi + fi } apply() { @@ -25,6 +28,23 @@ apply() { "1") add_function " static inline int cas_bd_get_next_part(struct block_device *bd) + { + int part_no = 0; + struct gendisk *disk = bd->bd_disk; + struct block_device *part; + unsigned long idx; + + xa_for_each(&disk->part_tbl, idx, part) { + if ((part_no = part->bd_partno)) { + break; + } + } + + return part_no; + }" ;; + "2") + add_function " + static inline int cas_bd_get_next_part(struct block_device *bd) { int part_no = 0; struct gendisk *disk = bd->bd_disk; @@ -44,7 +64,7 @@ apply() { return part_no; }" ;; - "2") + "3") add_function " static inline int cas_bd_get_next_part(struct block_device *bd) {