From ac00bd503ad1403bfa160faee4354b0ecb54fea7 Mon Sep 17 00:00:00 2001 From: Jan Musial Date: Tue, 17 Aug 2021 12:02:21 +0200 Subject: [PATCH] Add config for BLK_MQ_F_BLOCKING flag Signed-off-by: Jan Musial --- configure.d/1_mq_flags.conf | 51 +++++++++++++++++++++++-------------- modules/cas_disk/exp_obj.c | 2 +- 2 files changed, 33 insertions(+), 20 deletions(-) diff --git a/configure.d/1_mq_flags.conf b/configure.d/1_mq_flags.conf index f72b0ab..ba9baa9 100644 --- a/configure.d/1_mq_flags.conf +++ b/configure.d/1_mq_flags.conf @@ -7,28 +7,41 @@ . $(dirname $3)/conf_framework check() { - cur_name=$(basename $2) - config_file_path=$1 - if compile_module $cur_name "BLK_MQ_F_STACKING " "linux/blk-mq.h" - then - echo $cur_name "1" >> $config_file_path - else - echo $cur_name "2" >> $config_file_path - fi + cur_name=$(basename $2) + config_file_path=$1 + + output=0 + + if compile_module $cur_name "BLK_MQ_F_STACKING " "linux/blk-mq.h" + then + output=1 + fi + + if compile_module $cur_name "BLK_MQ_F_BLOCKING " "linux/blk-mq.h" + then + output=$((output+2)) + fi + + echo $cur_name $output >> $config_file_path } apply() { - case "$1" in - "1") - add_define "CAS_BLK_MQ_F_STACKING \\ - BLK_MQ_F_STACKING" - ;; - "2") - add_define "CAS_BLK_MQ_F_STACKING 0" - ;; - *) - exit 1 - esac + arg=$1 + if ((arg & 1)) + then + add_define "CAS_BLK_MQ_F_STACKING \\ + BLK_MQ_F_STACKING" + else + add_define "CAS_BLK_MQ_F_STACKING 0" + fi + + if ((arg & 2)) + then + add_define "CAS_BLK_MQ_F_BLOCKING \\ + BLK_MQ_F_BLOCKING" + else + add_define "CAS_BLK_MQ_F_BLOCKING 0" + fi } conf_run $@ diff --git a/modules/cas_disk/exp_obj.c b/modules/cas_disk/exp_obj.c index 19f7b31..cb60f99 100644 --- a/modules/cas_disk/exp_obj.c +++ b/modules/cas_disk/exp_obj.c @@ -478,7 +478,7 @@ static int _casdsk_init_tag_set(struct casdsk_disk *dsk, struct blk_mq_tag_set * set->queue_depth = BLKDEV_MAX_RQ; set->cmd_size = 0; - set->flags = BLK_MQ_F_SHOULD_MERGE | CAS_BLK_MQ_F_STACKING | BLK_MQ_F_BLOCKING; + set->flags = BLK_MQ_F_SHOULD_MERGE | CAS_BLK_MQ_F_STACKING | CAS_BLK_MQ_F_BLOCKING; set->driver_data = dsk;