#!/bin/bash # # Copyright(c) 2012-2021 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_queue_write_cache(NULL, 0, 0)" "linux/blkdev.h" then echo $cur_name "1" >> $config_file_path elif compile_module $cur_name "struct request_queue rq;rq.flush_flags" "linux/blkdev.h" then echo $cur_name "2" >> $config_file_path else echo $cur_name "X" >> $config_file_path fi } apply() { case "$1" in "1") add_define "CAS_CHECK_QUEUE_FLUSH(q) \\ test_bit(QUEUE_FLAG_WC, &(q)->queue_flags)" add_define "CAS_CHECK_QUEUE_FUA(q) \\ test_bit(QUEUE_FLAG_FUA, &(q)->queue_flags)" add_function " static inline void cas_set_queue_flush_fua(struct request_queue *q, bool flush, bool fua) { blk_queue_write_cache(q, flush, fua); }" ;; "2") add_define "CAS_CHECK_QUEUE_FLUSH(q) \\ ((q)->flush_flags & CAS_REQ_FLUSH)" add_define "CAS_CHECK_QUEUE_FUA(q) \\ ((q)->flush_flags & REQ_FUA)" add_function "static inline void cas_set_queue_flush_fua(struct request_queue *q, bool flush, bool fua) { unsigned int flags = 0; if (flush) flags |= CAS_REQ_FLUSH; if (fua) flags |= REQ_FUA; if (flags) blk_queue_flush(q, flags); }" ;; *) exit 1 esac } conf_run $@