Merge pull request #1481 from mmichal10/fput-sync
Close block devices in a synchronous manner
This commit is contained in:
commit
6c0829d5ea
@ -14,15 +14,18 @@ check() {
|
|||||||
if compile_module $cur_name "blkdev_get_by_path(NULL, 0, NULL);" "linux/blkdev.h"
|
if compile_module $cur_name "blkdev_get_by_path(NULL, 0, NULL);" "linux/blkdev.h"
|
||||||
then
|
then
|
||||||
echo $cur_name 1 >> $config_file_path
|
echo $cur_name 1 >> $config_file_path
|
||||||
elif compile_module $cur_name "blkdev_get_by_path(NULL, 0, NULL, NULL);" "linux/blkdev.h"
|
elif compile_module $cur_name "blkdev_get_by_path(NULL, 0, NULL, NULL);blkdev_put(NULL, FMODE_READ);" "linux/blkdev.h"
|
||||||
then
|
then
|
||||||
echo $cur_name 2 >> $config_file_path
|
echo $cur_name 2 >> $config_file_path
|
||||||
elif compile_module $cur_name "bdev_open_by_path(NULL, 0, NULL, NULL);" "linux/blkdev.h"
|
elif compile_module $cur_name "blkdev_get_by_path(NULL, 0, NULL, NULL);blkdev_put(NULL, NULL);" "linux/blkdev.h"
|
||||||
then
|
then
|
||||||
echo $cur_name 3 >> $config_file_path
|
echo $cur_name 3 >> $config_file_path
|
||||||
elif compile_module $cur_name "bdev_file_open_by_path(NULL, 0, NULL, NULL);" "linux/blkdev.h"
|
elif compile_module $cur_name "bdev_open_by_path(NULL, 0, NULL, NULL);" "linux/blkdev.h"
|
||||||
then
|
then
|
||||||
echo $cur_name 4 >> $config_file_path
|
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
|
else
|
||||||
echo $cur_name X >> $config_file_path
|
echo $cur_name X >> $config_file_path
|
||||||
fi
|
fi
|
||||||
@ -31,29 +34,50 @@ check() {
|
|||||||
apply() {
|
apply() {
|
||||||
case "$1" in
|
case "$1" in
|
||||||
"1")
|
"1")
|
||||||
|
# Related kernel commit 0718afd47f70cf46877c39c25d06b786e1a3f36c
|
||||||
add_typedef "struct block_device *cas_bdev_handle_t;"
|
add_typedef "struct block_device *cas_bdev_handle_t;"
|
||||||
add_define "cas_bdev_open_by_path(path, mode, holder) \\
|
add_define "cas_bdev_open_by_path(path, mode, holder) \\
|
||||||
blkdev_get_by_path(path, mode, holder)"
|
blkdev_get_by_path(path, mode, holder)"
|
||||||
add_define "cas_bdev_get_from_handle(handle) \\
|
add_define "cas_bdev_get_from_handle(handle) \\
|
||||||
((struct block_device *)handle)" ;;
|
((struct block_device *)handle)"
|
||||||
|
add_define "cas_bdev_release(handle, mode, holder) \\
|
||||||
|
blkdev_put((struct block_device *)handle, mode)" ;;
|
||||||
"2")
|
"2")
|
||||||
|
# Before kernel commit 2736e8eeb0ccdc71d1f4256c9c9a28f58cc43307
|
||||||
add_typedef "struct block_device *cas_bdev_handle_t;"
|
add_typedef "struct block_device *cas_bdev_handle_t;"
|
||||||
add_define "cas_bdev_open_by_path(path, mode, holder) \\
|
add_define "cas_bdev_open_by_path(path, mode, holder) \\
|
||||||
blkdev_get_by_path(path, mode, holder, NULL)"
|
blkdev_get_by_path(path, mode, holder, NULL)"
|
||||||
add_define "cas_bdev_get_from_handle(handle) \\
|
add_define "cas_bdev_get_from_handle(handle) \\
|
||||||
((struct block_device *)handle)" ;;
|
((struct block_device *)handle)"
|
||||||
|
add_define "cas_bdev_release(handle, mode, holder) \\
|
||||||
|
blkdev_put((struct block_device *)handle, mode)" ;;
|
||||||
"3")
|
"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_typedef "struct bdev_handle *cas_bdev_handle_t;"
|
||||||
add_define "cas_bdev_open_by_path(path, mode, holder) \\
|
add_define "cas_bdev_open_by_path(path, mode, holder) \\
|
||||||
bdev_open_by_path(path, mode, holder, NULL)"
|
bdev_open_by_path(path, mode, holder, NULL)"
|
||||||
add_define "cas_bdev_get_from_handle(handle) \\
|
add_define "cas_bdev_get_from_handle(handle) \\
|
||||||
(handle->bdev)" ;;
|
(handle->bdev)"
|
||||||
"4")
|
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_typedef "struct file *cas_bdev_handle_t;"
|
||||||
add_define "cas_bdev_open_by_path(path, mode, holder) \\
|
add_define "cas_bdev_open_by_path(path, mode, holder) \\
|
||||||
bdev_file_open_by_path(path, mode, holder, NULL)"
|
bdev_file_open_by_path(path, mode, holder, NULL)"
|
||||||
add_define "cas_bdev_get_from_handle(handle) \\
|
add_define "cas_bdev_get_from_handle(handle) \\
|
||||||
file_bdev(handle)" ;;
|
file_bdev(handle)"
|
||||||
|
add_define "cas_bdev_release(handle, mode, holder) \\
|
||||||
|
__fput_sync(handle)" ;;
|
||||||
*)
|
*)
|
||||||
exit 1
|
exit 1
|
||||||
esac
|
esac
|
||||||
|
@ -1,50 +0,0 @@
|
|||||||
#!/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_put(NULL, FMODE_READ);" "linux/blkdev.h"
|
|
||||||
then
|
|
||||||
echo $cur_name 1 >> $config_file_path
|
|
||||||
elif compile_module $cur_name "blkdev_put(NULL, NULL);" "linux/blkdev.h"
|
|
||||||
then
|
|
||||||
echo $cur_name 2 >> $config_file_path
|
|
||||||
elif compile_module $cur_name "bdev_release(NULL);" "linux/blkdev.h"
|
|
||||||
then
|
|
||||||
echo $cur_name 3 >> $config_file_path
|
|
||||||
elif compile_module $cur_name "bdev_file_open_by_path(NULL, 0, NULL, NULL);" "linux/blkdev.h"
|
|
||||||
then
|
|
||||||
echo $cur_name 4 >> $config_file_path
|
|
||||||
else
|
|
||||||
echo $cur_name X >> $config_file_path
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
apply() {
|
|
||||||
case "$1" in
|
|
||||||
"1")
|
|
||||||
add_define "cas_bdev_release(handle, mode, holder) \\
|
|
||||||
blkdev_put((struct block_device *)handle, mode)" ;;
|
|
||||||
"2")
|
|
||||||
add_define "cas_bdev_release(handle, mode, holder) \\
|
|
||||||
blkdev_put((struct block_device *)handle, holder)" ;;
|
|
||||||
"3")
|
|
||||||
add_define "cas_bdev_release(handle, mode, holder) \\
|
|
||||||
bdev_release(handle)" ;;
|
|
||||||
"4")
|
|
||||||
add_define "cas_bdev_release(handle, mode, holder) \\
|
|
||||||
fput(handle)" ;;
|
|
||||||
*)
|
|
||||||
exit 1
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
conf_run $@
|
|
Loading…
Reference in New Issue
Block a user