#!/bin/bash # # Copyright(c) 2012-2022 Intel Corporation # Copyright(c) 2024 Huawei Technologies # SPDX-License-Identifier: BSD-3-Clause # . $(dirname $3)/conf_framework.sh check() { cur_name=$(basename $2) config_file_path=$1 if compile_module $cur_name "blkdev_get_by_path(NULL, 0, NULL);" "linux/blkdev.h" then echo $cur_name 1 >> $config_file_path elif compile_module $cur_name "blkdev_get_by_path(NULL, 0, NULL, NULL);blkdev_put(NULL, FMODE_READ);" "linux/blkdev.h" then echo $cur_name 2 >> $config_file_path elif compile_module $cur_name "blkdev_get_by_path(NULL, 0, NULL, NULL);blkdev_put(NULL, NULL);" "linux/blkdev.h" then echo $cur_name 3 >> $config_file_path elif compile_module $cur_name "bdev_open_by_path(NULL, 0, NULL, NULL);" "linux/blkdev.h" then echo $cur_name 4 >> $config_file_path elif compile_module $cur_name "bdev_file_open_by_path(NULL, 0, NULL, NULL);" "linux/blkdev.h" then echo $cur_name 5 >> $config_file_path else echo $cur_name X >> $config_file_path fi } apply() { case "$1" in "1") # Related kernel commit 0718afd47f70cf46877c39c25d06b786e1a3f36c add_typedef "struct block_device *cas_bdev_handle_t;" add_define "cas_bdev_open_by_path(path, mode, holder) \\ blkdev_get_by_path(path, mode, holder)" add_define "cas_bdev_get_from_handle(handle) \\ ((struct block_device *)handle)" add_define "cas_bdev_release(handle, mode, holder) \\ blkdev_put((struct block_device *)handle, mode)" ;; "2") # Before kernel commit 2736e8eeb0ccdc71d1f4256c9c9a28f58cc43307 add_typedef "struct block_device *cas_bdev_handle_t;" add_define "cas_bdev_open_by_path(path, mode, holder) \\ blkdev_get_by_path(path, mode, holder, NULL)" add_define "cas_bdev_get_from_handle(handle) \\ ((struct block_device *)handle)" add_define "cas_bdev_release(handle, mode, holder) \\ blkdev_put((struct block_device *)handle, mode)" ;; "3") # From kernel commit 2736e8eeb0ccdc71d1f4256c9c9a28f58cc43307 add_typedef "struct block_device *cas_bdev_handle_t;" add_define "cas_bdev_open_by_path(path, mode, holder) \\ blkdev_get_by_path(path, mode, holder, NULL)" add_define "cas_bdev_get_from_handle(handle) \\ ((struct block_device *)handle)" add_define "cas_bdev_release(handle, mode, holder) \\ blkdev_put((struct block_device *)handle, holder)" ;; "4") # From kernel commit e719b4d156749f02eafed31a3c515f2aa9dcc72a add_typedef "struct bdev_handle *cas_bdev_handle_t;" add_define "cas_bdev_open_by_path(path, mode, holder) \\ bdev_open_by_path(path, mode, holder, NULL)" add_define "cas_bdev_get_from_handle(handle) \\ (handle->bdev)" add_define "cas_bdev_release(handle, mode, holder) \\ bdev_release(handle)" ;; "5") # From kernel commit e97d06a46526d9392cbdbd7eda193091e1af2723 add_typedef "struct file *cas_bdev_handle_t;" add_define "cas_bdev_open_by_path(path, mode, holder) \\ bdev_file_open_by_path(path, mode, holder, NULL)" add_define "cas_bdev_get_from_handle(handle) \\ file_bdev(handle)" add_define "cas_bdev_release(handle, mode, holder) \\ __fput_sync(handle)" ;; *) exit 1 esac } conf_run $@