configure: Add wrappers for default make request function
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
This commit is contained in:
parent
48c3598ef5
commit
c596c66063
54
configure.d/1_default_make_request.conf
Normal file
54
configure.d/1_default_make_request.conf
Normal 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 $@
|
@ -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) {
|
||||||
|
Loading…
Reference in New Issue
Block a user