#!/bin/bash # # Copyright(c) 2012-2019 Intel Corporation # SPDX-License-Identifier: BSD-3-Clause-Clear # . `dirname $0`/conf_framework check() { if compile_module "blk_queue_write_cache(NULL, 0, 0)" "linux/blkdev.h" then echo "1" elif compile_module "struct request_queue rq;rq.flush_flags" "linux/blkdev.h" then echo "2" else echo "X" 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 $@