#!/bin/bash # # Copyright(c) 2012-2022 Intel Corporation # SPDX-License-Identifier: BSD-3-Clause # . $(dirname $3)/conf_framework check() { cur_name=$(basename $2) config_file_path=$1 if compile_module $cur_name "blk_mq_alloc_disk(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 int cas_alloc_mq_disk(struct gendisk **gd, struct request_queue **queue, struct blk_mq_tag_set *tag_set) { *gd = blk_mq_alloc_disk(tag_set, NULL); if (!(*gd)) return -ENOMEM; *queue = (*gd)->queue; return 0; }" add_function " static inline void cas_cleanup_mq_disk(struct casdsk_exp_obj *exp_obj) { blk_cleanup_disk(exp_obj->gd); }" ;; "2") add_function " static inline int cas_alloc_mq_disk(struct gendisk **gd, struct request_queue **queue, struct blk_mq_tag_set *tag_set) { *gd = alloc_disk(1); if (!(*gd)) return -ENOMEM; *queue = blk_mq_init_queue(tag_set); if (IS_ERR_OR_NULL(*queue)) { put_disk(*gd); return -ENOMEM; } (*gd)->queue = *queue; return 0; }" add_function " static inline void cas_cleanup_mq_disk(struct casdsk_exp_obj *exp_obj){ blk_cleanup_queue(exp_obj->queue); put_disk(exp_obj->gd); }" ;; *) exit 1 esac } conf_run $@