configure: Add wrappers for default make request function

Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
This commit is contained in:
Robert Baldyga 2020-12-15 17:06:36 +01:00
parent 48c3598ef5
commit c596c66063
2 changed files with 56 additions and 2 deletions

View File

@ -0,0 +1,54 @@
#!/bin/bash
#
# Copyright(c) 2012-2020 Intel Corporation
# SPDX-License-Identifier: BSD-3-Clause-Clear
#
. $(dirname $3)/conf_framework
check() {
cur_name=$(basename $2)
config_file_path=$1
if compile_module $cur_name "blk_mq_make_request(NULL, NULL);" "linux/blk-mq.h"
then
echo $cur_name "1" >> $config_file_path
else
echo $cur_name "2" >> $config_file_path
fi
}
apply() {
case "$1" in
"1")
add_function "
static inline void *cas_get_default_mk_request_fn(struct request_queue *q)
{
if (q->make_request_fn)
return q->make_request_fn;
return blk_mq_make_request;
}"
add_function "
static inline void cas_call_default_mk_request_fn(make_request_fn *fn,
struct request_queue *q, struct bio *bio)
{
percpu_ref_get(&q->q_usage_counter);
fn(q, bio);
}" ;;
"2")
add_function "
static inline void *cas_get_default_mk_request_fn(struct request_queue *q)
{
return q->make_request_fn;
}"
add_function "
static inline void cas_call_default_mk_request_fn(make_request_fn *fn,
struct request_queue *q, struct bio *bio)
{
fn(q, bio);
}" ;;
*)
exit 1
esac
}
conf_run $@

View File

@ -77,7 +77,7 @@ static inline void _casdsk_exp_obj_handle_bio_att(struct casdsk_disk *dsk,
make_request_fn(dsk, q, bio, dsk->private); make_request_fn(dsk, q, bio, dsk->private);
if (status == CASDSK_BIO_NOT_HANDLED) if (status == CASDSK_BIO_NOT_HANDLED)
dsk->exp_obj->mk_rq_fn(q, bio); cas_call_default_mk_request_fn(dsk->exp_obj->mk_rq_fn, q, bio);
} }
CAS_DECLARE_BLOCK_CALLBACK(_casdsk_exp_obj_bio_pt_io, struct bio *bio, CAS_DECLARE_BLOCK_CALLBACK(_casdsk_exp_obj_bio_pt_io, struct bio *bio,
@ -573,7 +573,7 @@ int casdsk_exp_obj_create(struct casdsk_disk *dsk, const char *dev_name,
gd->private_data = dsk; gd->private_data = dsk;
strlcpy(gd->disk_name, exp_obj->dev_name, sizeof(gd->disk_name)); strlcpy(gd->disk_name, exp_obj->dev_name, sizeof(gd->disk_name));
dsk->exp_obj->mk_rq_fn = queue->make_request_fn; dsk->exp_obj->mk_rq_fn = cas_get_default_mk_request_fn(queue);
cas_blk_queue_make_request(queue, _casdsk_exp_obj_make_rq_fn); cas_blk_queue_make_request(queue, _casdsk_exp_obj_make_rq_fn);
if (exp_obj->ops->set_geometry) { if (exp_obj->ops->set_geometry) {