Generate and apply config
Allows for faster configuration in known environments Signed-off-by: Robert Baldyga <robert.baldyga@intel.com> Signed-off-by: Michal Mielewczyk <michal.mielewczyk@intel.com>
This commit is contained in:
parent
e1055fe262
commit
13c51041ff
46
configure
vendored
46
configure
vendored
@ -3,23 +3,51 @@
|
|||||||
# Copyright(c) 2012-2019 Intel Corporation
|
# Copyright(c) 2012-2019 Intel Corporation
|
||||||
# SPDX-License-Identifier: BSD-3-Clause-Clear
|
# SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||||
#
|
#
|
||||||
which dirname 2>&1 > /dev/null || { echo >&2 "Eror: missing 'dirname' utility"; exit 1; }
|
|
||||||
which realpath 2>&1 > /dev/null || { echo >&2 "Eror: missing 'realpath' utility"; exit 1; }
|
check_util() {
|
||||||
|
which $1 2>&1 > /dev/null || { echo >&2 "Error: missing '$1' utility"; exit 1; }
|
||||||
|
}
|
||||||
|
|
||||||
|
check_util dirname
|
||||||
|
check_util realpath
|
||||||
|
check_util basename
|
||||||
|
check_util awk
|
||||||
|
|
||||||
SCRIPTPATH=`dirname $0`
|
SCRIPTPATH=`dirname $0`
|
||||||
SCRIPTPATH=`realpath $SCRIPTPATH`
|
SCRIPTPATH=`realpath $SCRIPTPATH`
|
||||||
|
|
||||||
CONFIG_FILES=`ls $SCRIPTPATH/configure.d/*.conf | sort`
|
CONFIG_FILES=`ls $SCRIPTPATH/configure.d/*.conf | sort`
|
||||||
|
FILES_COUNT=`echo $CONFIG_FILES | wc -w`
|
||||||
|
|
||||||
rm -f $SCRIPTPATH/modules/generated_defines.h
|
generate_config() {
|
||||||
|
rm -f config.out
|
||||||
files_count=`echo $CONFIG_FILES | wc -w`
|
|
||||||
progress=0
|
progress=0
|
||||||
|
|
||||||
for file in $CONFIG_FILES; do
|
for file in $CONFIG_FILES; do
|
||||||
progress=$((progress+1))
|
progress=$((progress+1))
|
||||||
echo -ne "Configuring OpenCAS: $progress/$files_count\033[0K\r"
|
echo -ne "Generating configuration: $progress/$FILES_COUNT\033[0K\r"
|
||||||
/bin/bash $file
|
CONF="$(/bin/bash $file "check")"
|
||||||
|
echo "$(basename $file) $CONF" >> config.out
|
||||||
done
|
done
|
||||||
echo -ne " \033[0K\r"
|
echo ""
|
||||||
|
}
|
||||||
|
|
||||||
|
generate_header() {
|
||||||
|
rm -f $SCRIPTPATH/modules/generated_defines.h
|
||||||
|
progress=0
|
||||||
|
for file in $CONFIG_FILES; do
|
||||||
|
progress=$((progress+1))
|
||||||
|
echo -ne "Configuring OpenCAS: $progress/$FILES_COUNT\033[0K\r"
|
||||||
|
CONF=$(cat config.out | awk -v file=$(basename $file) '{ if ($1 == file) print $2 }')
|
||||||
|
/bin/bash $file "apply" "$CONF"
|
||||||
|
done
|
||||||
|
echo ""
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ -z "$1" ]; then
|
||||||
|
generate_config
|
||||||
|
CONFIG_FILE="config.out"
|
||||||
|
else
|
||||||
|
CONFIG_FILE="$1"
|
||||||
|
fi
|
||||||
|
|
||||||
|
generate_header
|
||||||
|
@ -6,11 +6,26 @@
|
|||||||
|
|
||||||
. `dirname $0`/conf_framework
|
. `dirname $0`/conf_framework
|
||||||
|
|
||||||
|
check() {
|
||||||
if compile_module "struct bio *b;blk_rq_append_bio(NULL, &b)" "linux/blkdev.h"
|
if compile_module "struct bio *b;blk_rq_append_bio(NULL, &b)" "linux/blkdev.h"
|
||||||
then
|
then
|
||||||
add_define "cas_blk_rq_append_bio(rq, bounce_bio) \\
|
echo "1"
|
||||||
blk_rq_append_bio(rq, &bounce_bio)"
|
|
||||||
else
|
else
|
||||||
add_define "cas_blk_rq_append_bio(rq, bounce_bio) \\
|
echo "2"
|
||||||
blk_rq_append_bio(rq, bounce_bio)"
|
|
||||||
fi
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
apply() {
|
||||||
|
case "$1" in
|
||||||
|
"1")
|
||||||
|
add_define "cas_blk_rq_append_bio(rq, bounce_bio) \\
|
||||||
|
blk_rq_append_bio(rq, &bounce_bio)" ;;
|
||||||
|
"2")
|
||||||
|
add_define "cas_blk_rq_append_bio(rq, bounce_bio) \\
|
||||||
|
blk_rq_append_bio(rq, bounce_bio)" ;;
|
||||||
|
*)
|
||||||
|
exit 1
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
conf_run $@
|
||||||
|
@ -6,12 +6,29 @@
|
|||||||
|
|
||||||
. `dirname $0`/conf_framework
|
. `dirname $0`/conf_framework
|
||||||
|
|
||||||
|
check() {
|
||||||
if compile_module "lookup_bdev(\"some_path\")" "linux/fs.h"
|
if compile_module "lookup_bdev(\"some_path\")" "linux/fs.h"
|
||||||
then
|
then
|
||||||
add_define "CAS_LOOKUP_BDEV(PATH) \\
|
echo "1"
|
||||||
lookup_bdev(PATH)"
|
|
||||||
elif compile_module "lookup_bdev(\"some_path\", 0)" "linux/fs.h"
|
elif compile_module "lookup_bdev(\"some_path\", 0)" "linux/fs.h"
|
||||||
then
|
then
|
||||||
add_define "CAS_LOOKUP_BDEV(PATH) \\
|
echo "2"
|
||||||
lookup_bdev(PATH, 0)"
|
else
|
||||||
|
echo "X"
|
||||||
fi
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
apply() {
|
||||||
|
case "$1" in
|
||||||
|
"1")
|
||||||
|
add_define "CAS_LOOKUP_BDEV(PATH) \\
|
||||||
|
lookup_bdev(PATH)" ;;
|
||||||
|
"2")
|
||||||
|
add_define "CAS_LOOKUP_BDEV(PATH) \\
|
||||||
|
lookup_bdev(PATH, 0)" ;;
|
||||||
|
*)
|
||||||
|
exit 1
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
conf_run $@
|
||||||
|
@ -6,22 +6,41 @@
|
|||||||
|
|
||||||
. `dirname $0`/conf_framework
|
. `dirname $0`/conf_framework
|
||||||
|
|
||||||
|
check() {
|
||||||
if compile_module "bio_clone(NULL, 0)" "linux/bio.h"
|
if compile_module "bio_clone(NULL, 0)" "linux/bio.h"
|
||||||
then
|
then
|
||||||
|
echo "1"
|
||||||
|
elif compile_module "bio_clone_kmalloc(NULL, 0)" "linux/bio.h"
|
||||||
|
then
|
||||||
|
echo "2"
|
||||||
|
elif compile_module "bio_clone_fast(NULL, 0, NULL)" "linux/bio.h"
|
||||||
|
then
|
||||||
|
echo "3"
|
||||||
|
else
|
||||||
|
echo "X"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
apply() {
|
||||||
|
case "$1" in
|
||||||
|
"1")
|
||||||
add_function "static inline struct bio *cas_bio_clone(struct bio *bio, gfp_t gfp_mask)
|
add_function "static inline struct bio *cas_bio_clone(struct bio *bio, gfp_t gfp_mask)
|
||||||
{
|
{
|
||||||
return bio_clone(bio, gfp_mask);
|
return bio_clone(bio, gfp_mask);
|
||||||
}"
|
}" ;;
|
||||||
elif compile_module "bio_clone_kmalloc(NULL, 0)" "linux/bio.h"
|
"2")
|
||||||
then
|
|
||||||
add_function "static inline struct bio *cas_bio_clone(struct bio *bio, gfp_t gfp_mask)
|
add_function "static inline struct bio *cas_bio_clone(struct bio *bio, gfp_t gfp_mask)
|
||||||
{
|
{
|
||||||
return bio_clone_kmalloc(bio, gfp_mask);
|
return bio_clone_kmalloc(bio, gfp_mask);
|
||||||
}"
|
}" ;;
|
||||||
elif compile_module "bio_clone_fast(NULL, 0, NULL)" "linux/bio.h"
|
"3")
|
||||||
then
|
|
||||||
add_function "static inline struct bio *cas_bio_clone(struct bio *bio, gfp_t gfp_mask)
|
add_function "static inline struct bio *cas_bio_clone(struct bio *bio, gfp_t gfp_mask)
|
||||||
{
|
{
|
||||||
return bio_clone_fast(bio, gfp_mask, NULL);
|
return bio_clone_fast(bio, gfp_mask, NULL);
|
||||||
}"
|
}" ;;
|
||||||
fi
|
*)
|
||||||
|
exit 1
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
conf_run $@
|
||||||
|
@ -6,26 +6,42 @@
|
|||||||
|
|
||||||
. `dirname $0`/conf_framework
|
. `dirname $0`/conf_framework
|
||||||
|
|
||||||
|
check() {
|
||||||
if compile_module "struct bio b;b.bi_end_io(NULL, 0)" "linux/bio.h"
|
if compile_module "struct bio b;b.bi_end_io(NULL, 0)" "linux/bio.h"
|
||||||
then
|
then
|
||||||
add_define "CAS_BIO_ENDIO(BIO, BYTES_DONE, ERROR) \\
|
echo "1"
|
||||||
bio_endio(BIO, ERROR)"
|
|
||||||
add_define "CAS_DECLARE_BLOCK_CALLBACK(name, BIO, BYTES_DONE, ERROR) \\
|
|
||||||
void name##_callback(BIO, ERROR)"
|
|
||||||
add_define "CAS_BLOCK_CALLBACK_ERROR(BIO, ERROR) \\
|
|
||||||
ERROR"
|
|
||||||
elif compile_module "struct bio b;b.bi_end_io(NULL)" "linux/bio.h"
|
elif compile_module "struct bio b;b.bi_end_io(NULL)" "linux/bio.h"
|
||||||
then
|
then
|
||||||
add_define "CAS_BIO_ENDIO(BIO, BYTES_DONE, ERROR) \\
|
echo "2"
|
||||||
({ CAS_BIO_OP_STATUS(BIO) = ERROR; bio_endio(BIO); })"
|
else
|
||||||
add_define "CAS_DECLARE_BLOCK_CALLBACK(name, BIO, BYTES_DONE, ERROR) \\
|
echo "X"
|
||||||
void name##_callback(BIO)"
|
|
||||||
add_define "CAS_BLOCK_CALLBACK_ERROR(BIO, ERROR) \\
|
|
||||||
CAS_BIO_OP_STATUS(BIO)"
|
|
||||||
fi
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
apply() {
|
||||||
add_define "CAS_REFER_BLOCK_CALLBACK(name) \\
|
add_define "CAS_REFER_BLOCK_CALLBACK(name) \\
|
||||||
name##_callback"
|
name##_callback"
|
||||||
add_define "CAS_BLOCK_CALLBACK_INIT(BIO) \\
|
add_define "CAS_BLOCK_CALLBACK_INIT(BIO) \\
|
||||||
{; }"
|
{; }"
|
||||||
add_define "CAS_BLOCK_CALLBACK_RETURN(BIO) \\
|
add_define "CAS_BLOCK_CALLBACK_RETURN(BIO) \\
|
||||||
{ return; }"
|
{ return; }"
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
"1")
|
||||||
|
add_define "CAS_BIO_ENDIO(BIO, BYTES_DONE, ERROR) \\
|
||||||
|
bio_endio(BIO, ERROR)"
|
||||||
|
add_define "CAS_DECLARE_BLOCK_CALLBACK(name, BIO, BYTES_DONE, ERROR) \\
|
||||||
|
void name##_callback(BIO, ERROR)"
|
||||||
|
add_define "CAS_BLOCK_CALLBACK_ERROR(BIO, ERROR) \\
|
||||||
|
ERROR" ;;
|
||||||
|
"2")
|
||||||
|
add_define "CAS_BIO_ENDIO(BIO, BYTES_DONE, ERROR) \\
|
||||||
|
({ CAS_BIO_OP_STATUS(BIO) = ERROR; bio_endio(BIO); })"
|
||||||
|
add_define "CAS_DECLARE_BLOCK_CALLBACK(name, BIO, BYTES_DONE, ERROR) \\
|
||||||
|
void name##_callback(BIO)"
|
||||||
|
add_define "CAS_BLOCK_CALLBACK_ERROR(BIO, ERROR) \\
|
||||||
|
CAS_BIO_OP_STATUS(BIO)" ;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
conf_run $@
|
||||||
|
@ -5,29 +5,49 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
. `dirname $0`/conf_framework
|
. `dirname $0`/conf_framework
|
||||||
|
check() {
|
||||||
if compile_module "bio_op(NULL)" "linux/bio.h"
|
if compile_module "bio_op(NULL)" "linux/bio.h"
|
||||||
then
|
then
|
||||||
|
echo "1"
|
||||||
|
elif compile_module "REQ_OP_MASK" "linux/blk_types.h"
|
||||||
|
then
|
||||||
|
echo "2"
|
||||||
|
elif compile_module "REQ_OP_DISCARD" "linux/blk_types.h"
|
||||||
|
then
|
||||||
|
echo "3"
|
||||||
|
elif compile_module "REQ_DISCARD" "linux/blk_types.h"
|
||||||
|
then
|
||||||
|
echo "4"
|
||||||
|
else
|
||||||
|
echo "X"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
apply() {
|
||||||
|
case "$1" in
|
||||||
|
"1")
|
||||||
add_define "CAS_IS_DISCARD(bio) \\
|
add_define "CAS_IS_DISCARD(bio) \\
|
||||||
(bio_op(bio) == REQ_OP_DISCARD)"
|
(bio_op(bio) == REQ_OP_DISCARD)"
|
||||||
add_define "CAS_BIO_DISCARD \\
|
add_define "CAS_BIO_DISCARD \\
|
||||||
(REQ_OP_DISCARD)"
|
(REQ_OP_DISCARD)" ;;
|
||||||
elif compile_module "REQ_OP_MASK" "linux/blk_types.h"
|
"2")
|
||||||
then
|
|
||||||
add_define "CAS_IS_DISCARD(bio) \\
|
add_define "CAS_IS_DISCARD(bio) \\
|
||||||
(((CAS_BIO_OP_FLAGS(bio)) & REQ_OP_MASK) == REQ_OP_DISCARD)"
|
(((CAS_BIO_OP_FLAGS(bio)) & REQ_OP_MASK) == REQ_OP_DISCARD)"
|
||||||
add_define "CAS_BIO_DISCARD \\
|
add_define "CAS_BIO_DISCARD \\
|
||||||
((REQ_OP_WRITE | REQ_OP_DISCARD))"
|
((REQ_OP_WRITE | REQ_OP_DISCARD))" ;;
|
||||||
elif compile_module "REQ_OP_DISCARD" "linux/blk_types.h"
|
"3")
|
||||||
then
|
|
||||||
add_define "CAS_IS_DISCARD(bio) \\
|
add_define "CAS_IS_DISCARD(bio) \\
|
||||||
((CAS_BIO_OP_FLAGS(bio)) & REQ_OP_DISCARD)"
|
((CAS_BIO_OP_FLAGS(bio)) & REQ_OP_DISCARD)"
|
||||||
add_define "CAS_BIO_DISCARD \\
|
add_define "CAS_BIO_DISCARD \\
|
||||||
((REQ_OP_WRITE | REQ_OP_DISCARD))"
|
((REQ_OP_WRITE | REQ_OP_DISCARD))" ;;
|
||||||
elif compile_module "REQ_DISCARD" "linux/blk_types.h"
|
"4")
|
||||||
then
|
|
||||||
add_define "CAS_IS_DISCARD(bio) \\
|
add_define "CAS_IS_DISCARD(bio) \\
|
||||||
((CAS_BIO_OP_FLAGS(bio)) & REQ_DISCARD)"
|
((CAS_BIO_OP_FLAGS(bio)) & REQ_DISCARD)"
|
||||||
add_define "CAS_BIO_DISCARD \\
|
add_define "CAS_BIO_DISCARD \\
|
||||||
(REQ_WRITE | REQ_DISCARD)"
|
(REQ_WRITE | REQ_DISCARD)" ;;
|
||||||
fi
|
*)
|
||||||
|
exit 1
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
conf_run $@
|
||||||
|
@ -6,12 +6,30 @@
|
|||||||
|
|
||||||
. `dirname $0`/conf_framework
|
. `dirname $0`/conf_framework
|
||||||
|
|
||||||
|
check() {
|
||||||
if compile_module "struct bio b;b.bi_status" "linux/bio.h"
|
if compile_module "struct bio b;b.bi_status" "linux/bio.h"
|
||||||
then
|
then
|
||||||
add_define "CAS_BIO_OP_STATUS(bio) \\
|
echo "1"
|
||||||
bio->bi_status"
|
|
||||||
elif compile_module "struct bio b;b.bi_error" "linux/bio.h"
|
elif compile_module "struct bio b;b.bi_error" "linux/bio.h"
|
||||||
then
|
then
|
||||||
add_define "CAS_BIO_OP_STATUS(bio) \\
|
echo "2"
|
||||||
bio->bi_error"
|
else
|
||||||
|
echo "X"
|
||||||
fi
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
apply() {
|
||||||
|
case "$1" in
|
||||||
|
"1")
|
||||||
|
add_define "CAS_BIO_OP_STATUS(bio) \\
|
||||||
|
bio->bi_status" ;;
|
||||||
|
"2")
|
||||||
|
add_define "CAS_BIO_OP_STATUS(bio) \\
|
||||||
|
bio->bi_error" ;;
|
||||||
|
*)
|
||||||
|
exit 1
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
conf_run $@
|
||||||
|
|
||||||
|
@ -6,14 +6,31 @@
|
|||||||
|
|
||||||
. `dirname $0`/conf_framework
|
. `dirname $0`/conf_framework
|
||||||
|
|
||||||
|
check() {
|
||||||
if compile_module "struct bio b;b.bi_opf" "linux/bio.h"
|
if compile_module "struct bio b;b.bi_opf" "linux/bio.h"
|
||||||
then
|
then
|
||||||
add_define "CAS_BIO_OP_FLAGS_FORMAT \"0x%016X\""
|
echo "1"
|
||||||
add_define "CAS_BIO_OP_FLAGS(bio) \\
|
|
||||||
(bio)->bi_opf"
|
|
||||||
elif compile_module "struct bio b;b.bi_rw" "linux/bio.h"
|
elif compile_module "struct bio b;b.bi_rw" "linux/bio.h"
|
||||||
then
|
then
|
||||||
|
echo "2"
|
||||||
|
else
|
||||||
|
echo "X"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
apply() {
|
||||||
|
case "$1" in
|
||||||
|
"1")
|
||||||
|
add_define "CAS_BIO_OP_FLAGS_FORMAT \"0x%016X\""
|
||||||
|
add_define "CAS_BIO_OP_FLAGS(bio) \\
|
||||||
|
(bio)->bi_opf" ;;
|
||||||
|
"2")
|
||||||
add_define "CAS_BIO_OP_FLAGS_FORMAT \"0x%016lX\""
|
add_define "CAS_BIO_OP_FLAGS_FORMAT \"0x%016lX\""
|
||||||
add_define "CAS_BIO_OP_FLAGS(bio) \\
|
add_define "CAS_BIO_OP_FLAGS(bio) \\
|
||||||
(bio)->bi_rw"
|
(bio)->bi_rw" ;;
|
||||||
fi
|
*)
|
||||||
|
exit 1
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
conf_run $@
|
||||||
|
@ -6,20 +6,37 @@
|
|||||||
|
|
||||||
. `dirname $0`/conf_framework
|
. `dirname $0`/conf_framework
|
||||||
|
|
||||||
|
check() {
|
||||||
if compile_module "struct bio b;b.bi_iter.bi_size" "linux/bio.h"
|
if compile_module "struct bio b;b.bi_iter.bi_size" "linux/bio.h"
|
||||||
then
|
then
|
||||||
|
echo "1"
|
||||||
|
elif compile_module "struct bio b;b.bi_size" "linux/bio.h"
|
||||||
|
then
|
||||||
|
echo "2"
|
||||||
|
else
|
||||||
|
echo "X"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
apply() {
|
||||||
|
case "$1" in
|
||||||
|
"1")
|
||||||
add_define "CAS_BIO_BISIZE(bio) \\
|
add_define "CAS_BIO_BISIZE(bio) \\
|
||||||
bio->bi_iter.bi_size"
|
bio->bi_iter.bi_size"
|
||||||
add_define "CAS_BIO_BIIDX(bio) \\
|
add_define "CAS_BIO_BIIDX(bio) \\
|
||||||
bio->bi_iter.bi_idx"
|
bio->bi_iter.bi_idx"
|
||||||
add_define "CAS_BIO_BISECTOR(bio) \\
|
add_define "CAS_BIO_BISECTOR(bio) \\
|
||||||
bio->bi_iter.bi_sector"
|
bio->bi_iter.bi_sector" ;;
|
||||||
elif compile_module "struct bio b;b.bi_size" "linux/bio.h"
|
"2")
|
||||||
then
|
|
||||||
add_define "CAS_BIO_BISIZE(bio) \\
|
add_define "CAS_BIO_BISIZE(bio) \\
|
||||||
bio->bi_size"
|
bio->bi_size"
|
||||||
add_define "CAS_BIO_BIIDX(bio) \\
|
add_define "CAS_BIO_BIIDX(bio) \\
|
||||||
bio->bi_idx"
|
bio->bi_idx"
|
||||||
add_define "CAS_BIO_BISECTOR(bio) \\
|
add_define "CAS_BIO_BISECTOR(bio) \\
|
||||||
bio->bi_sector"
|
bio->bi_sector" ;;
|
||||||
fi
|
*)
|
||||||
|
exit 1
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
conf_run $@
|
||||||
|
@ -6,11 +6,26 @@
|
|||||||
|
|
||||||
. `dirname $0`/conf_framework
|
. `dirname $0`/conf_framework
|
||||||
|
|
||||||
|
check() {
|
||||||
if compile_module "struct bio b;&bio_iovec(&b)" "linux/bio.h"
|
if compile_module "struct bio b;&bio_iovec(&b)" "linux/bio.h"
|
||||||
then
|
then
|
||||||
add_define "CAS_SEGMENT_BVEC(vec) \\
|
echo "1"
|
||||||
(&(vec))"
|
|
||||||
else
|
else
|
||||||
add_define "CAS_SEGMENT_BVEC(vec) \\
|
echo "2"
|
||||||
(vec)"
|
|
||||||
fi
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
apply() {
|
||||||
|
case "$1" in
|
||||||
|
"1")
|
||||||
|
add_define "CAS_SEGMENT_BVEC(vec) \\
|
||||||
|
(&(vec))" ;;
|
||||||
|
"2")
|
||||||
|
add_define "CAS_SEGMENT_BVEC(vec) \\
|
||||||
|
(vec)" ;;
|
||||||
|
*)
|
||||||
|
exit 1
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
conf_run $@
|
||||||
|
@ -6,11 +6,26 @@
|
|||||||
|
|
||||||
. `dirname $0`/conf_framework
|
. `dirname $0`/conf_framework
|
||||||
|
|
||||||
|
check() {
|
||||||
if compile_module "blk_rq_set_block_pc(NULL)" "linux/blkdev.h"
|
if compile_module "blk_rq_set_block_pc(NULL)" "linux/blkdev.h"
|
||||||
then
|
then
|
||||||
add_define "cas_blk_rq_set_block_pc(rq) \\
|
echo "1"
|
||||||
blk_rq_set_block_pc(rq)"
|
|
||||||
else
|
else
|
||||||
add_define "cas_blk_rq_set_block_pc(rq) \\
|
echo "2"
|
||||||
{}"
|
|
||||||
fi
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
apply() {
|
||||||
|
case "$1" in
|
||||||
|
"1")
|
||||||
|
add_define "cas_blk_rq_set_block_pc(rq) \\
|
||||||
|
blk_rq_set_block_pc(rq)" ;;
|
||||||
|
"2")
|
||||||
|
add_define "cas_blk_rq_set_block_pc(rq) \\
|
||||||
|
{}" ;;
|
||||||
|
*)
|
||||||
|
exit 1
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
conf_run $@
|
||||||
|
@ -6,11 +6,26 @@
|
|||||||
|
|
||||||
. `dirname $0`/conf_framework
|
. `dirname $0`/conf_framework
|
||||||
|
|
||||||
|
check() {
|
||||||
if compile_module "deamonize(\"some_name\", NULL)" "linux/sched.h"
|
if compile_module "deamonize(\"some_name\", NULL)" "linux/sched.h"
|
||||||
then
|
then
|
||||||
add_define "CAS_DAEMONIZE(name, arg...) \\
|
echo "1"
|
||||||
daemonize(name, ##arg)"
|
|
||||||
else
|
else
|
||||||
add_define "CAS_DAEMONIZE(name, arg...) \\
|
echo "2"
|
||||||
do { } while (0)"
|
|
||||||
fi
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
apply() {
|
||||||
|
case "$1" in
|
||||||
|
"1")
|
||||||
|
add_define "CAS_DAEMONIZE(name, arg...) \\
|
||||||
|
daemonize(name, ##arg)" ;;
|
||||||
|
"2")
|
||||||
|
add_define "CAS_DAEMONIZE(name, arg...) \\
|
||||||
|
do { } while (0)" ;;
|
||||||
|
*)
|
||||||
|
exit 1
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
conf_run $@
|
||||||
|
@ -6,12 +6,29 @@
|
|||||||
|
|
||||||
. `dirname $0`/conf_framework
|
. `dirname $0`/conf_framework
|
||||||
|
|
||||||
|
check() {
|
||||||
if compile_module "struct dentry dentry;dentry.d_u.d_alias" "linux/dcache.h"
|
if compile_module "struct dentry dentry;dentry.d_u.d_alias" "linux/dcache.h"
|
||||||
then
|
then
|
||||||
add_define "CAS_ALIAS_NODE_TO_DENTRY(alias) \\
|
echo "1"
|
||||||
container_of(alias, struct dentry, d_u.d_alias)"
|
|
||||||
elif compile_module "struct dentry dentry;dentry.d_alias" "linux/dcache.h"
|
elif compile_module "struct dentry dentry;dentry.d_alias" "linux/dcache.h"
|
||||||
then
|
then
|
||||||
add_define "CAS_ALIAS_NODE_TO_DENTRY(alias) \\
|
echo "2"
|
||||||
container_of(alias, struct dentry, d_alias)"
|
else
|
||||||
|
echo "X"
|
||||||
fi
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
apply() {
|
||||||
|
case "$1" in
|
||||||
|
"1")
|
||||||
|
add_define "CAS_ALIAS_NODE_TO_DENTRY(alias) \\
|
||||||
|
container_of(alias, struct dentry, d_u.d_alias)" ;;
|
||||||
|
"2")
|
||||||
|
add_define "CAS_ALIAS_NODE_TO_DENTRY(alias) \\
|
||||||
|
container_of(alias, struct dentry, d_alias)" ;;
|
||||||
|
*)
|
||||||
|
exit 1
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
conf_run $@
|
||||||
|
@ -6,11 +6,26 @@
|
|||||||
|
|
||||||
. `dirname $0`/conf_framework
|
. `dirname $0`/conf_framework
|
||||||
|
|
||||||
|
check() {
|
||||||
if compile_module "struct queue_limits q;q.discard_zeroes_data" "linux/blkdev.h"
|
if compile_module "struct queue_limits q;q.discard_zeroes_data" "linux/blkdev.h"
|
||||||
then
|
then
|
||||||
add_define "CAS_SET_DISCARD_ZEROES_DATA(queue_limits, val) \\
|
echo "1"
|
||||||
queue_limits.discard_zeroes_data = val"
|
|
||||||
else
|
else
|
||||||
add_define "CAS_SET_DISCARD_ZEROES_DATA(queue_limits, val) \\
|
echo "2"
|
||||||
({})"
|
|
||||||
fi
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
apply() {
|
||||||
|
case "$1" in
|
||||||
|
"1")
|
||||||
|
add_define "CAS_SET_DISCARD_ZEROES_DATA(queue_limits, val) \\
|
||||||
|
queue_limits.discard_zeroes_data = val" ;;
|
||||||
|
"2")
|
||||||
|
add_define "CAS_SET_DISCARD_ZEROES_DATA(queue_limits, val) \\
|
||||||
|
({})" ;;
|
||||||
|
*)
|
||||||
|
exit 1
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
conf_run $@
|
||||||
|
@ -6,16 +6,33 @@
|
|||||||
|
|
||||||
. `dirname $0`/conf_framework
|
. `dirname $0`/conf_framework
|
||||||
|
|
||||||
|
check() {
|
||||||
if compile_module "REQ_PREFLUSH" "linux/blk_types.h"
|
if compile_module "REQ_PREFLUSH" "linux/blk_types.h"
|
||||||
then
|
then
|
||||||
|
echo "1"
|
||||||
|
elif compile_module "REQ_FLUSH" "linux/blk_types.h"
|
||||||
|
then
|
||||||
|
echo "2"
|
||||||
|
else
|
||||||
|
echo "X"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
apply() {
|
||||||
|
case "$1" in
|
||||||
|
"1")
|
||||||
add_define "CAS_REQ_FLUSH \\
|
add_define "CAS_REQ_FLUSH \\
|
||||||
REQ_PREFLUSH"
|
REQ_PREFLUSH"
|
||||||
add_define "CAS_FLUSH_SUPPORTED \\
|
add_define "CAS_FLUSH_SUPPORTED \\
|
||||||
1"
|
1" ;;
|
||||||
elif compile_module "REQ_FLUSH" "linux/blk_types.h"
|
"2")
|
||||||
then
|
|
||||||
add_define "CAS_REQ_FLUSH \\
|
add_define "CAS_REQ_FLUSH \\
|
||||||
REQ_FLUSH"
|
REQ_FLUSH"
|
||||||
add_define "CAS_FLUSH_SUPPORTED \\
|
add_define "CAS_FLUSH_SUPPORTED \\
|
||||||
1"
|
1" ;;
|
||||||
fi
|
*)
|
||||||
|
exit 1
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
conf_run $@
|
||||||
|
@ -6,9 +6,27 @@
|
|||||||
|
|
||||||
. `dirname $0`/conf_framework
|
. `dirname $0`/conf_framework
|
||||||
|
|
||||||
if
|
check() {
|
||||||
compile_module "generic_start_io_acct(NULL, 0, 0, NULL)" "linux/bio.h"
|
if compile_module "generic_start_io_acct(NULL, 0, 0, NULL)" "linux/bio.h"
|
||||||
then
|
then
|
||||||
|
echo "1"
|
||||||
|
elif compile_module "generic_start_io_acct(0, 0, NULL)" "linux/bio.h"
|
||||||
|
then
|
||||||
|
echo "2"
|
||||||
|
elif compile_module "part_round_stats(1, 1)" "linux/genhd.h"
|
||||||
|
then
|
||||||
|
echo "3"
|
||||||
|
elif compile_module "part_round_stats(NULL, 1, 1)" "linux/genhd.h"
|
||||||
|
then
|
||||||
|
echo "4"
|
||||||
|
else
|
||||||
|
echo "X"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
apply() {
|
||||||
|
case "$1" in
|
||||||
|
"1")
|
||||||
add_function "
|
add_function "
|
||||||
static inline void cas_generic_start_io_acct(struct request_queue *q,
|
static inline void cas_generic_start_io_acct(struct request_queue *q,
|
||||||
int rw, unsigned long sectors, struct hd_struct *part) {
|
int rw, unsigned long sectors, struct hd_struct *part) {
|
||||||
@ -19,9 +37,8 @@ static inline void cas_generic_end_io_acct(struct request_queue *q,
|
|||||||
int rw, struct hd_struct *part, unsigned long start_time)
|
int rw, struct hd_struct *part, unsigned long start_time)
|
||||||
{
|
{
|
||||||
generic_end_io_acct(q, rw, part, start_time);
|
generic_end_io_acct(q, rw, part, start_time);
|
||||||
}"
|
}" ;;
|
||||||
elif compile_module "generic_start_io_acct(0, 0, NULL)" "linux/bio.h"
|
"2")
|
||||||
then
|
|
||||||
add_function "
|
add_function "
|
||||||
static inline void cas_generic_start_io_acct(struct request_queue *q,
|
static inline void cas_generic_start_io_acct(struct request_queue *q,
|
||||||
int rw, unsigned long sectors, struct hd_struct *part)
|
int rw, unsigned long sectors, struct hd_struct *part)
|
||||||
@ -33,9 +50,8 @@ static inline void cas_generic_end_io_acct(struct request_queue *q,
|
|||||||
int rw, struct hd_struct *part, unsigned long start_time)
|
int rw, struct hd_struct *part, unsigned long start_time)
|
||||||
{
|
{
|
||||||
generic_end_io_acct(rw, part, start_time);
|
generic_end_io_acct(rw, part, start_time);
|
||||||
}"
|
}" ;;
|
||||||
elif compile_module "part_round_stats(1, 1)" "linux/genhd.h"
|
"3")
|
||||||
then
|
|
||||||
add_function "
|
add_function "
|
||||||
static inline void cas_generic_start_io_acct(struct request_queue *q,
|
static inline void cas_generic_start_io_acct(struct request_queue *q,
|
||||||
int rw, unsigned long sectors, struct hd_struct *part)
|
int rw, unsigned long sectors, struct hd_struct *part)
|
||||||
@ -57,9 +73,8 @@ static inline void cas_generic_end_io_acct(struct request_queue *q,
|
|||||||
part_round_stats(cpu, part);
|
part_round_stats(cpu, part);
|
||||||
part_dec_in_flight(part, rw);
|
part_dec_in_flight(part, rw);
|
||||||
part_stat_unlock();
|
part_stat_unlock();
|
||||||
}"
|
}" ;;
|
||||||
elif compile_module "part_round_stats(NULL, 1, 1)" "linux/genhd.h"
|
"4")
|
||||||
then
|
|
||||||
add_function "
|
add_function "
|
||||||
static inline void cas_generic_start_io_acct(struct request_queue *q,
|
static inline void cas_generic_start_io_acct(struct request_queue *q,
|
||||||
int rw, unsigned long sectors, struct hd_struct *part)
|
int rw, unsigned long sectors, struct hd_struct *part)
|
||||||
@ -81,5 +96,10 @@ static inline void cas_generic_end_io_acct(struct request_queue *q,
|
|||||||
part_round_stats(NULL, cpu, part);
|
part_round_stats(NULL, cpu, part);
|
||||||
part_dec_in_flight(NULL, part, rw);
|
part_dec_in_flight(NULL, part, rw);
|
||||||
part_stat_unlock();
|
part_stat_unlock();
|
||||||
}"
|
}" ;;
|
||||||
fi
|
*)
|
||||||
|
exit 1
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
conf_run $@
|
||||||
|
@ -6,9 +6,21 @@
|
|||||||
|
|
||||||
. `dirname $0`/conf_framework
|
. `dirname $0`/conf_framework
|
||||||
|
|
||||||
|
check() {
|
||||||
if compile_module "global_zone_page_state(1)" "linux/mm.h"
|
if compile_module "global_zone_page_state(1)" "linux/mm.h"
|
||||||
then
|
then
|
||||||
|
echo "1"
|
||||||
|
elif compile_module "global_page_state(1)" "linux/mm.h"
|
||||||
|
then
|
||||||
|
echo "2"
|
||||||
|
else
|
||||||
|
echo "X"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
apply() {
|
||||||
|
case "$1" in
|
||||||
|
"1")
|
||||||
add_function "
|
add_function "
|
||||||
static inline unsigned long cas_global_zone_page_state(enum zone_stat_item item)
|
static inline unsigned long cas_global_zone_page_state(enum zone_stat_item item)
|
||||||
{
|
{
|
||||||
@ -17,9 +29,8 @@ static inline unsigned long cas_global_zone_page_state(enum zone_stat_item item)
|
|||||||
add_define "CAS_BIO_SET_DEV(bio, bdev) \\
|
add_define "CAS_BIO_SET_DEV(bio, bdev) \\
|
||||||
bio_set_dev(bio, bdev)"
|
bio_set_dev(bio, bdev)"
|
||||||
add_define "CAS_BIO_GET_DEV(bio) \\
|
add_define "CAS_BIO_GET_DEV(bio) \\
|
||||||
bio->bi_disk"
|
bio->bi_disk" ;;
|
||||||
elif compile_module "global_page_state(1)" "linux/mm.h"
|
"2")
|
||||||
then
|
|
||||||
add_function "
|
add_function "
|
||||||
static inline unsigned long cas_global_zone_page_state(enum zone_stat_item item)
|
static inline unsigned long cas_global_zone_page_state(enum zone_stat_item item)
|
||||||
{
|
{
|
||||||
@ -28,5 +39,10 @@ static inline unsigned long cas_global_zone_page_state(enum zone_stat_item item)
|
|||||||
add_define "CAS_BIO_SET_DEV(bio, bdev) \\
|
add_define "CAS_BIO_SET_DEV(bio, bdev) \\
|
||||||
bio->bi_bdev = bdev"
|
bio->bi_bdev = bdev"
|
||||||
add_define "CAS_BIO_GET_DEV(bio) \\
|
add_define "CAS_BIO_GET_DEV(bio) \\
|
||||||
bio->bi_bdev->bd_disk"
|
bio->bi_bdev->bd_disk" ;;
|
||||||
fi
|
*)
|
||||||
|
exit 1
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
conf_run $@
|
||||||
|
@ -6,20 +6,37 @@
|
|||||||
|
|
||||||
. `dirname $0`/conf_framework
|
. `dirname $0`/conf_framework
|
||||||
|
|
||||||
|
check() {
|
||||||
if compile_module "struct hlist_node list" "linux/types.h"
|
if compile_module "struct hlist_node list" "linux/types.h"
|
||||||
then
|
then
|
||||||
|
echo "1"
|
||||||
|
elif compile_module "struct list_head list" "linux/list.h"
|
||||||
|
then
|
||||||
|
echo "2"
|
||||||
|
else
|
||||||
|
echo "X"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
apply() {
|
||||||
|
case "$1" in
|
||||||
|
"1")
|
||||||
add_define "CAS_ALIAS_NODE_TYPE \\
|
add_define "CAS_ALIAS_NODE_TYPE \\
|
||||||
struct hlist_node"
|
struct hlist_node"
|
||||||
add_define "CAS_DENTRY_LIST_EMPTY(head) \\
|
add_define "CAS_DENTRY_LIST_EMPTY(head) \\
|
||||||
hlist_empty(head)"
|
hlist_empty(head)"
|
||||||
add_define "CAS_INODE_FOR_EACH_DENTRY(pos, head) \\
|
add_define "CAS_INODE_FOR_EACH_DENTRY(pos, head) \\
|
||||||
hlist_for_each(pos, head)"
|
hlist_for_each(pos, head)" ;;
|
||||||
elif compile_module "struct list_head list" "linux/list.h"
|
"2")
|
||||||
then
|
|
||||||
add_define "CAS_ALIAS_NODE_TYPE \\
|
add_define "CAS_ALIAS_NODE_TYPE \\
|
||||||
struct list_head"
|
struct list_head"
|
||||||
add_define "CAS_DENTRY_LIST_EMPTY(head) \\
|
add_define "CAS_DENTRY_LIST_EMPTY(head) \\
|
||||||
list_empty(head)"
|
list_empty(head)"
|
||||||
add_define "CAS_INODE_FOR_EACH_DENTRY(pos, head) \\
|
add_define "CAS_INODE_FOR_EACH_DENTRY(pos, head) \\
|
||||||
list_for_each(pos, head)"
|
list_for_each(pos, head)" ;;
|
||||||
fi
|
*)
|
||||||
|
exit 1
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
conf_run $@
|
||||||
|
@ -6,12 +6,29 @@
|
|||||||
|
|
||||||
. `dirname $0`/conf_framework
|
. `dirname $0`/conf_framework
|
||||||
|
|
||||||
|
check() {
|
||||||
if compile_module "struct file file;file.f_inode" "linux/fs.h"
|
if compile_module "struct file file;file.f_inode" "linux/fs.h"
|
||||||
then
|
then
|
||||||
add_define "CAS_FILE_INODE(file) \\
|
echo "1"
|
||||||
file->f_inode"
|
|
||||||
elif compile_module "struct file file;file->f_dentry->d_inode" "linux/fs.h"
|
elif compile_module "struct file file;file->f_dentry->d_inode" "linux/fs.h"
|
||||||
then
|
then
|
||||||
add_define "CAS_FILE_INODE(file) \\
|
echo "2"
|
||||||
file->f_dentry->d_inode"
|
else
|
||||||
|
echo "X"
|
||||||
fi
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
apply() {
|
||||||
|
case "$1" in
|
||||||
|
"1")
|
||||||
|
add_define "CAS_FILE_INODE(file) \\
|
||||||
|
file->f_inode" ;;
|
||||||
|
"2")
|
||||||
|
add_define "CAS_FILE_INODE(file) \\
|
||||||
|
file->f_dentry->d_inode" ;;
|
||||||
|
*)
|
||||||
|
exit 1
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
conf_run $@
|
||||||
|
@ -6,8 +6,21 @@
|
|||||||
|
|
||||||
. `dirname $0`/conf_framework
|
. `dirname $0`/conf_framework
|
||||||
|
|
||||||
|
check() {
|
||||||
if compile_module "vm_munmap(0, 0)" "linux/mm.h"
|
if compile_module "vm_munmap(0, 0)" "linux/mm.h"
|
||||||
then
|
then
|
||||||
|
echo "1"
|
||||||
|
elif compile_module "do_munmap(NULL, 0)" "linux/mm.h"
|
||||||
|
then
|
||||||
|
echo "2"
|
||||||
|
else
|
||||||
|
echo "X"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
apply() {
|
||||||
|
case "$1" in
|
||||||
|
"1")
|
||||||
add_function "
|
add_function "
|
||||||
#include <uapi/asm-generic/mman-common.h>
|
#include <uapi/asm-generic/mman-common.h>
|
||||||
static inline unsigned long cas_vm_mmap(struct file *file,
|
static inline unsigned long cas_vm_mmap(struct file *file,
|
||||||
@ -20,9 +33,8 @@ static inline unsigned long cas_vm_mmap(struct file *file,
|
|||||||
static inline int cas_vm_munmap(unsigned long start, size_t len)
|
static inline int cas_vm_munmap(unsigned long start, size_t len)
|
||||||
{
|
{
|
||||||
return vm_munmap(start, len);
|
return vm_munmap(start, len);
|
||||||
}"
|
}" ;;
|
||||||
elif compile_module "do_munmap(NULL, 0)" "linux/mm.h"
|
"2")
|
||||||
then
|
|
||||||
add_function "
|
add_function "
|
||||||
#include <asm-generic/mman-common.h>
|
#include <asm-generic/mman-common.h>
|
||||||
static inline unsigned long cas_vm_mmap(struct file *file,
|
static inline unsigned long cas_vm_mmap(struct file *file,
|
||||||
@ -35,5 +47,10 @@ static inline unsigned long cas_vm_mmap(struct file *file,
|
|||||||
static inline int cas_vm_munmap(unsigned long start, size_t len)
|
static inline int cas_vm_munmap(unsigned long start, size_t len)
|
||||||
{
|
{
|
||||||
return do_munmap(current->mm, start, len);
|
return do_munmap(current->mm, start, len);
|
||||||
}"
|
}" ;;
|
||||||
fi
|
*)
|
||||||
|
exit 1
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
conf_run $@
|
||||||
|
@ -6,11 +6,26 @@
|
|||||||
|
|
||||||
. `dirname $0`/conf_framework
|
. `dirname $0`/conf_framework
|
||||||
|
|
||||||
|
check() {
|
||||||
if compile_module "blk_queue_bounce(NULL, NULL);" "linux/blkdev.h"
|
if compile_module "blk_queue_bounce(NULL, NULL);" "linux/blkdev.h"
|
||||||
then
|
then
|
||||||
add_define "cas_blk_queue_bounce(q, bounce_bio) \\
|
echo "1"
|
||||||
blk_queue_bounce(q, bounce_bio)"
|
|
||||||
else
|
else
|
||||||
add_define "cas_blk_queue_bounce(q, bounce_bio) \\
|
echo "2"
|
||||||
({})"
|
|
||||||
fi
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
apply() {
|
||||||
|
case "$1" in
|
||||||
|
"1")
|
||||||
|
add_define "cas_blk_queue_bounce(q, bounce_bio) \\
|
||||||
|
blk_queue_bounce(q, bounce_bio)" ;;
|
||||||
|
"2")
|
||||||
|
add_define "cas_blk_queue_bounce(q, bounce_bio) \\
|
||||||
|
({})" ;;
|
||||||
|
*)
|
||||||
|
exit 1
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
conf_run $@
|
||||||
|
@ -6,11 +6,26 @@
|
|||||||
|
|
||||||
. `dirname $0`/conf_framework
|
. `dirname $0`/conf_framework
|
||||||
|
|
||||||
|
check() {
|
||||||
if compile_module "struct request_queue q;q.limits.chunk_sectors" "linux/blkdev.h"
|
if compile_module "struct request_queue q;q.limits.chunk_sectors" "linux/blkdev.h"
|
||||||
then
|
then
|
||||||
add_define "CAS_SET_QUEUE_CHUNK_SECTORS(queue, chunk_size) \\
|
echo "1"
|
||||||
queue->limits.chunk_sectors = chunk_size"
|
|
||||||
else
|
else
|
||||||
add_define "CAS_SET_QUEUE_CHUNK_SECTORS(queue, chunk_size) \\
|
echo "2"
|
||||||
{;}"
|
|
||||||
fi
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
apply() {
|
||||||
|
case "$1" in
|
||||||
|
"1")
|
||||||
|
add_define "CAS_SET_QUEUE_CHUNK_SECTORS(queue, chunk_size) \\
|
||||||
|
queue->limits.chunk_sectors = chunk_size" ;;
|
||||||
|
"2")
|
||||||
|
add_define "CAS_SET_QUEUE_CHUNK_SECTORS(queue, chunk_size) \\
|
||||||
|
{;}" ;;
|
||||||
|
*)
|
||||||
|
exit 1
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
conf_run $@
|
||||||
|
@ -6,11 +6,26 @@
|
|||||||
|
|
||||||
. `dirname $0`/conf_framework
|
. `dirname $0`/conf_framework
|
||||||
|
|
||||||
|
check() {
|
||||||
if compile_module "blk_queue_flag_set(0, NULL)" "linux/blkdev.h"
|
if compile_module "blk_queue_flag_set(0, NULL)" "linux/blkdev.h"
|
||||||
then
|
then
|
||||||
add_define "cas_queue_flag_set_unlocked(flag, request_queue) \\
|
echo "1"
|
||||||
blk_queue_flag_set(flag, request_queue)"
|
|
||||||
else
|
else
|
||||||
add_define "cas_queue_flag_set_unlocked(flag, request_queue) \\
|
echo "2"
|
||||||
queue_flag_set_unlocked(flag, request_queue)"
|
|
||||||
fi
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
apply() {
|
||||||
|
case "$1" in
|
||||||
|
"1")
|
||||||
|
add_define "cas_queue_flag_set_unlocked(flag, request_queue) \\
|
||||||
|
blk_queue_flag_set(flag, request_queue)" ;;
|
||||||
|
"2")
|
||||||
|
add_define "cas_queue_flag_set_unlocked(flag, request_queue) \\
|
||||||
|
queue_flag_set_unlocked(flag, request_queue)" ;;
|
||||||
|
*)
|
||||||
|
exit 1
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
conf_run $@
|
||||||
|
@ -7,8 +7,24 @@
|
|||||||
. `dirname $0`/conf_framework
|
. `dirname $0`/conf_framework
|
||||||
|
|
||||||
# RHEL 7.3
|
# RHEL 7.3
|
||||||
|
check() {
|
||||||
if compile_module "struct queue_limits q;q.limits_aux" "linux/blkdev.h"
|
if compile_module "struct queue_limits q;q.limits_aux" "linux/blkdev.h"
|
||||||
then
|
then
|
||||||
|
echo "1"
|
||||||
|
elif compile_module "struct queue_limits q;q.max_write_zeroes_sectors" "linux/blkdev.h"
|
||||||
|
then
|
||||||
|
echo "2"
|
||||||
|
elif compile_module "struct queue_limits q;q.max_write_same_sectors" "linux/blkdev.h"
|
||||||
|
then
|
||||||
|
echo "3"
|
||||||
|
else
|
||||||
|
echo "X"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
apply() {
|
||||||
|
case "$1" in
|
||||||
|
"1")
|
||||||
add_function "
|
add_function "
|
||||||
static inline void cas_copy_queue_limits(struct request_queue *exp_q,
|
static inline void cas_copy_queue_limits(struct request_queue *exp_q,
|
||||||
struct request_queue *cache_q, struct request_queue *core_q)
|
struct request_queue *cache_q, struct request_queue *core_q)
|
||||||
@ -24,9 +40,8 @@ static inline void cas_copy_queue_limits(struct request_queue *exp_q,
|
|||||||
exp_q->limits.max_write_same_sectors = 0;
|
exp_q->limits.max_write_same_sectors = 0;
|
||||||
if (queue_virt_boundary(cache_q))
|
if (queue_virt_boundary(cache_q))
|
||||||
queue_flag_set(QUEUE_FLAG_NOMERGES, cache_q);
|
queue_flag_set(QUEUE_FLAG_NOMERGES, cache_q);
|
||||||
}"
|
}" ;;
|
||||||
elif compile_module "struct queue_limits q;q.max_write_zeroes_sectors" "linux/blkdev.h"
|
"2")
|
||||||
then
|
|
||||||
add_function "
|
add_function "
|
||||||
static inline void cas_copy_queue_limits(struct request_queue *exp_q,
|
static inline void cas_copy_queue_limits(struct request_queue *exp_q,
|
||||||
struct request_queue *cache_q, struct request_queue *core_q)
|
struct request_queue *cache_q, struct request_queue *core_q)
|
||||||
@ -37,9 +52,8 @@ static inline void cas_copy_queue_limits(struct request_queue *exp_q,
|
|||||||
exp_q->limits.max_segments = core_q->limits.max_segments;
|
exp_q->limits.max_segments = core_q->limits.max_segments;
|
||||||
exp_q->limits.max_write_same_sectors = 0;
|
exp_q->limits.max_write_same_sectors = 0;
|
||||||
exp_q->limits.max_write_zeroes_sectors = 0;
|
exp_q->limits.max_write_zeroes_sectors = 0;
|
||||||
}"
|
}" ;;
|
||||||
elif compile_module "struct queue_limits q;q.max_write_same_sectors" "linux/blkdev.h"
|
"3")
|
||||||
then
|
|
||||||
add_function "
|
add_function "
|
||||||
static inline void cas_copy_queue_limits(struct request_queue *exp_q,
|
static inline void cas_copy_queue_limits(struct request_queue *exp_q,
|
||||||
struct request_queue *cache_q, struct request_queue *core_q)
|
struct request_queue *cache_q, struct request_queue *core_q)
|
||||||
@ -49,5 +63,10 @@ static inline void cas_copy_queue_limits(struct request_queue *exp_q,
|
|||||||
exp_q->limits.max_hw_sectors = core_q->limits.max_hw_sectors;
|
exp_q->limits.max_hw_sectors = core_q->limits.max_hw_sectors;
|
||||||
exp_q->limits.max_segments = core_q->limits.max_segments;
|
exp_q->limits.max_segments = core_q->limits.max_segments;
|
||||||
exp_q->limits.max_write_same_sectors = 0;
|
exp_q->limits.max_write_same_sectors = 0;
|
||||||
}"
|
}" ;;
|
||||||
fi
|
*)
|
||||||
|
exit 1
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
conf_run $@
|
||||||
|
@ -6,14 +6,24 @@
|
|||||||
|
|
||||||
. `dirname $0`/conf_framework
|
. `dirname $0`/conf_framework
|
||||||
|
|
||||||
|
check() {
|
||||||
if compile_module "REQ_TYPE_FS" "linux/blkdev.h"
|
if compile_module "REQ_TYPE_FS" "linux/blkdev.h"
|
||||||
then
|
then
|
||||||
|
echo "1"
|
||||||
|
else
|
||||||
|
echo "2"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
apply() {
|
||||||
|
case "$1" in
|
||||||
|
"1")
|
||||||
add_function "
|
add_function "
|
||||||
static inline int cas_is_rq_type_fs(struct request *rq)
|
static inline int cas_is_rq_type_fs(struct request *rq)
|
||||||
{
|
{
|
||||||
return rq->cmd_type == REQ_TYPE_FS;
|
return rq->cmd_type == REQ_TYPE_FS;
|
||||||
}"
|
}" ;;
|
||||||
else
|
"2")
|
||||||
add_function "
|
add_function "
|
||||||
static inline int cas_is_rq_type_fs(struct request *rq)
|
static inline int cas_is_rq_type_fs(struct request *rq)
|
||||||
{
|
{
|
||||||
@ -26,5 +36,10 @@ static inline int cas_is_rq_type_fs(struct request *rq)
|
|||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}"
|
}" ;;
|
||||||
fi
|
*)
|
||||||
|
exit 1
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
conf_run $@
|
||||||
|
@ -11,34 +11,55 @@
|
|||||||
# * it takes one argument and retuns non-void
|
# * it takes one argument and retuns non-void
|
||||||
# * it takes two arguments and returns non-void
|
# * it takes two arguments and returns non-void
|
||||||
# * it takse two arguments and is void-type
|
# * it takse two arguments and is void-type
|
||||||
|
check() {
|
||||||
if compile_module "submit_bio(NULL)" "linux/bio.h"
|
if compile_module "submit_bio(NULL)" "linux/bio.h"
|
||||||
then
|
then
|
||||||
add_function "
|
echo "1"
|
||||||
static inline blk_qc_t cas_submit_bio(int rw, struct bio *bio)
|
|
||||||
{
|
|
||||||
CAS_BIO_OP_FLAGS(bio) |= rw;
|
|
||||||
return submit_bio(bio);
|
|
||||||
}"
|
|
||||||
elif compile_module "submit_bio(NULL)" "linux/fs.h"
|
elif compile_module "submit_bio(NULL)" "linux/fs.h"
|
||||||
then
|
then
|
||||||
|
echo "2"
|
||||||
|
elif compile_module "void *t=submit_bio(0, NULL)" "linux/fs.h"
|
||||||
|
then
|
||||||
|
echo "3"
|
||||||
|
elif compile_module "submit_bio(0, NULL)" "linux/fs.h"
|
||||||
|
then
|
||||||
|
echo "4"
|
||||||
|
else
|
||||||
|
echo "X"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
apply() {
|
||||||
|
case "$1" in
|
||||||
|
"1")
|
||||||
add_function "
|
add_function "
|
||||||
static inline blk_qc_t cas_submit_bio(int rw, struct bio *bio)
|
static inline blk_qc_t cas_submit_bio(int rw, struct bio *bio)
|
||||||
{
|
{
|
||||||
CAS_BIO_OP_FLAGS(bio) |= rw;
|
CAS_BIO_OP_FLAGS(bio) |= rw;
|
||||||
return submit_bio(bio);
|
return submit_bio(bio);
|
||||||
}"
|
}" ;;
|
||||||
elif compile_module "void *t=submit_bio(0, NULL)" "linux/fs.h"
|
"2")
|
||||||
then
|
add_function "
|
||||||
|
static inline blk_qc_t cas_submit_bio(int rw, struct bio *bio)
|
||||||
|
{
|
||||||
|
CAS_BIO_OP_FLAGS(bio) |= rw;
|
||||||
|
return submit_bio(bio);
|
||||||
|
}" ;;
|
||||||
|
"3")
|
||||||
add_function "
|
add_function "
|
||||||
static inline blk_qc_t cas_submit_bio(int rw, struct bio *bio)
|
static inline blk_qc_t cas_submit_bio(int rw, struct bio *bio)
|
||||||
{
|
{
|
||||||
return submit_bio(rw, bio);
|
return submit_bio(rw, bio);
|
||||||
}"
|
}" ;;
|
||||||
elif compile_module "submit_bio(0, NULL)" "linux/fs.h"
|
"4")
|
||||||
then
|
|
||||||
add_function "
|
add_function "
|
||||||
static inline void cas_submit_bio(int rw, struct bio *bio)
|
static inline void cas_submit_bio(int rw, struct bio *bio)
|
||||||
{
|
{
|
||||||
submit_bio(rw, bio);
|
submit_bio(rw, bio);
|
||||||
}"
|
}" ;;
|
||||||
fi
|
*)
|
||||||
|
exit 1
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
conf_run $@
|
||||||
|
@ -6,8 +6,21 @@
|
|||||||
|
|
||||||
. `dirname $0`/conf_framework
|
. `dirname $0`/conf_framework
|
||||||
|
|
||||||
|
check() {
|
||||||
if compile_module "struct bio b;b.bi_write_hint" "linux/bio.h"
|
if compile_module "struct bio b;b.bi_write_hint" "linux/bio.h"
|
||||||
then
|
then
|
||||||
add_define "CAS_WLTH_SUPPORT \\
|
echo "1"
|
||||||
1"
|
else
|
||||||
|
echo "X"
|
||||||
fi
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
apply() {
|
||||||
|
case "$1" in
|
||||||
|
"1")
|
||||||
|
add_define "CAS_WLTH_SUPPORT \\
|
||||||
|
1" ;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
conf_run $@
|
||||||
|
@ -6,12 +6,29 @@
|
|||||||
|
|
||||||
. `dirname $0`/conf_framework
|
. `dirname $0`/conf_framework
|
||||||
|
|
||||||
|
check() {
|
||||||
if compile_module "WRITE" "linux/blk_types.h"
|
if compile_module "WRITE" "linux/blk_types.h"
|
||||||
then
|
then
|
||||||
add_define "CAS_RQ_DATA_DIR_WR \\
|
echo "1"
|
||||||
WRITE"
|
|
||||||
elif compile_module "REQ_WRITE" "linux/blk_types.h"
|
elif compile_module "REQ_WRITE" "linux/blk_types.h"
|
||||||
then
|
then
|
||||||
add_define "CAS_RQ_DATA_DIR_WR \\
|
echo "2"
|
||||||
REQ_WRITE"
|
else
|
||||||
|
echo "X"
|
||||||
fi
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
apply() {
|
||||||
|
case "$1" in
|
||||||
|
"1")
|
||||||
|
add_define "CAS_RQ_DATA_DIR_WR \\
|
||||||
|
WRITE" ;;
|
||||||
|
"2")
|
||||||
|
add_define "CAS_RQ_DATA_DIR_WR \\
|
||||||
|
REQ_WRITE" ;;
|
||||||
|
*)
|
||||||
|
exit 1
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
conf_run $@
|
||||||
|
@ -6,27 +6,48 @@
|
|||||||
|
|
||||||
. `dirname $0`/conf_framework
|
. `dirname $0`/conf_framework
|
||||||
|
|
||||||
|
check() {
|
||||||
if compile_module "WRITE_FUA" "linux/fs.h"
|
if compile_module "WRITE_FUA" "linux/fs.h"
|
||||||
then
|
then
|
||||||
add_define "CAS_WRITE_FUA \\
|
|
||||||
WRITE_FUA"
|
|
||||||
if compile_module "BIO_FUA" "linux/bio.h"
|
if compile_module "BIO_FUA" "linux/bio.h"
|
||||||
then
|
then
|
||||||
add_define "CAS_IS_WRITE_FUA(flags) \\
|
echo "1"
|
||||||
((flags) & BIO_FUA)"
|
|
||||||
else
|
else
|
||||||
add_define "CAS_IS_WRITE_FUA(flags) \\
|
echo "2"
|
||||||
((flags) & REQ_FUA)"
|
|
||||||
fi
|
fi
|
||||||
elif compile_module "REQ_FUA" "linux/blk_types.h"
|
elif compile_module "REQ_FUA" "linux/blk_types.h"
|
||||||
then
|
then
|
||||||
|
echo "3"
|
||||||
|
else
|
||||||
|
echo "4"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
apply() {
|
||||||
|
case "$1" in
|
||||||
|
"1")
|
||||||
|
add_define "CAS_WRITE_FUA \\
|
||||||
|
WRITE_FUA"
|
||||||
|
add_define "CAS_IS_WRITE_FUA(flags) \\
|
||||||
|
((flags) & BIO_FUA)" ;;
|
||||||
|
"2")
|
||||||
|
add_define "CAS_WRITE_FUA \\
|
||||||
|
WRITE_FUA"
|
||||||
|
add_define "CAS_IS_WRITE_FUA(flags) \\
|
||||||
|
((flags) & REQ_FUA)" ;;
|
||||||
|
"3")
|
||||||
add_define "CAS_IS_WRITE_FUA(flags) \\
|
add_define "CAS_IS_WRITE_FUA(flags) \\
|
||||||
((flags) & REQ_FUA)"
|
((flags) & REQ_FUA)"
|
||||||
add_define "CAS_WRITE_FUA \\
|
add_define "CAS_WRITE_FUA \\
|
||||||
REQ_FUA"
|
REQ_FUA" ;;
|
||||||
else
|
"4")
|
||||||
add_define "CAS_IS_WRITE_FUA(flags) \\
|
add_define "CAS_IS_WRITE_FUA(flags) \\
|
||||||
0"
|
0"
|
||||||
add_define "CAS_WRITE_FUA \\
|
add_define "CAS_WRITE_FUA \\
|
||||||
WRITE_BARRIER"
|
WRITE_BARRIER" ;;
|
||||||
fi
|
*)
|
||||||
|
exit 1
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
conf_run $@
|
||||||
|
@ -6,16 +6,35 @@
|
|||||||
|
|
||||||
. `dirname $0`/conf_framework
|
. `dirname $0`/conf_framework
|
||||||
|
|
||||||
|
check() {
|
||||||
if compile_module "RQF_SOFTBARRIER" "linux/blkdev.h"
|
if compile_module "RQF_SOFTBARRIER" "linux/blkdev.h"
|
||||||
then
|
then
|
||||||
add_define "CAS_CHECK_BARRIER(bio) \\
|
echo "1"
|
||||||
((CAS_BIO_OP_FLAGS(bio) & RQF_SOFTBARRIER) != 0)"
|
|
||||||
elif compile_module "REQ_SOFTBARRIER" "linux/blk_types.h"
|
elif compile_module "REQ_SOFTBARRIER" "linux/blk_types.h"
|
||||||
then
|
then
|
||||||
add_define "CAS_CHECK_BARRIER(bio) \\
|
echo "2"
|
||||||
((CAS_BIO_OP_FLAGS(bio) & REQ_SOFTBARRIER) != 0)"
|
|
||||||
elif compile_module "BIO_RW_BARRIER" "linux/fs.h"
|
elif compile_module "BIO_RW_BARRIER" "linux/fs.h"
|
||||||
then
|
then
|
||||||
add_define "CAS_CHECK_BARRIER(bio) \\
|
echo "3"
|
||||||
(bio_rw_flagged((bio), BIO_RW_BARRIER))"
|
else
|
||||||
|
echo "X"
|
||||||
fi
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
apply() {
|
||||||
|
case "$1" in
|
||||||
|
"1")
|
||||||
|
add_define "CAS_CHECK_BARRIER(bio) \\
|
||||||
|
((CAS_BIO_OP_FLAGS(bio) & RQF_SOFTBARRIER) != 0)" ;;
|
||||||
|
"2")
|
||||||
|
add_define "CAS_CHECK_BARRIER(bio) \\
|
||||||
|
((CAS_BIO_OP_FLAGS(bio) & REQ_SOFTBARRIER) != 0)" ;;
|
||||||
|
"3")
|
||||||
|
add_define "CAS_CHECK_BARRIER(bio) \\
|
||||||
|
(bio_rw_flagged((bio), BIO_RW_BARRIER))" ;;
|
||||||
|
*)
|
||||||
|
exit 1
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
conf_run $@
|
||||||
|
@ -6,27 +6,48 @@
|
|||||||
|
|
||||||
. `dirname $0`/conf_framework
|
. `dirname $0`/conf_framework
|
||||||
|
|
||||||
|
check() {
|
||||||
if compile_module "WRITE_FLUSH_FUA" "linux/fs.h"
|
if compile_module "WRITE_FLUSH_FUA" "linux/fs.h"
|
||||||
then
|
then
|
||||||
add_define "CAS_WRITE_FLUSH_FUA \\
|
|
||||||
WRITE_FLUSH_FUA"
|
|
||||||
if compile_module "BIO_FUA" "linux/bio.h"
|
if compile_module "BIO_FUA" "linux/bio.h"
|
||||||
then
|
then
|
||||||
add_define "CAS_IS_WRITE_FLUSH_FUA(flags) \\
|
echo "1"
|
||||||
((BIO_FUA | BIO_FLUSH) == ((flags) & (BIO_FUA | BIO_FLUSH)))"
|
|
||||||
else
|
else
|
||||||
add_define "CAS_IS_WRITE_FLUSH_FUA(flags) \\
|
echo "2"
|
||||||
((REQ_FUA | CAS_REQ_FLUSH) == ((flags) & (REQ_FUA | CAS_REQ_FLUSH)))"
|
|
||||||
fi
|
fi
|
||||||
elif compile_module "REQ_PREFLUSH" "linux/blk_types.h"
|
elif compile_module "REQ_PREFLUSH" "linux/blk_types.h"
|
||||||
then
|
then
|
||||||
|
echo "3"
|
||||||
|
else
|
||||||
|
echo "4"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
apply() {
|
||||||
|
case "$1" in
|
||||||
|
"1")
|
||||||
|
add_define "CAS_WRITE_FLUSH_FUA \\
|
||||||
|
WRITE_FLUSH_FUA"
|
||||||
|
add_define "CAS_IS_WRITE_FLUSH_FUA(flags) \\
|
||||||
|
((BIO_FUA | BIO_FLUSH) == ((flags) & (BIO_FUA | BIO_FLUSH)))" ;;
|
||||||
|
"2")
|
||||||
|
add_define "CAS_WRITE_FLUSH_FUA \\
|
||||||
|
WRITE_FLUSH_FUA"
|
||||||
|
add_define "CAS_IS_WRITE_FLUSH_FUA(flags) \\
|
||||||
|
((REQ_FUA | CAS_REQ_FLUSH) == ((flags) & (REQ_FUA | CAS_REQ_FLUSH)))" ;;
|
||||||
|
"3")
|
||||||
add_define "CAS_IS_WRITE_FLUSH_FUA(flags) \\
|
add_define "CAS_IS_WRITE_FLUSH_FUA(flags) \\
|
||||||
((REQ_PREFLUSH | REQ_FUA) == ((flags) & (REQ_PREFLUSH |REQ_FUA)))"
|
((REQ_PREFLUSH | REQ_FUA) == ((flags) & (REQ_PREFLUSH |REQ_FUA)))"
|
||||||
add_define "CAS_WRITE_FLUSH_FUA \\
|
add_define "CAS_WRITE_FLUSH_FUA \\
|
||||||
(REQ_PREFLUSH | REQ_FUA)"
|
(REQ_PREFLUSH | REQ_FUA)" ;;
|
||||||
else
|
"4")
|
||||||
add_define "CAS_IS_WRITE_FLUSH_FUA(flags) \\
|
add_define "CAS_IS_WRITE_FLUSH_FUA(flags) \\
|
||||||
0"
|
0"
|
||||||
add_define "CAS_WRITE_FLUSH_FUA \\
|
add_define "CAS_WRITE_FLUSH_FUA \\
|
||||||
WRITE_BARRIER"
|
WRITE_BARRIER" ;;
|
||||||
fi
|
*)
|
||||||
|
exit 1
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
conf_run $@
|
||||||
|
@ -6,15 +6,25 @@
|
|||||||
|
|
||||||
. `dirname $0`/conf_framework
|
. `dirname $0`/conf_framework
|
||||||
|
|
||||||
|
check() {
|
||||||
if compile_module "blk_make_request(NULL, NULL, 0)" "linux/blkdev.h"
|
if compile_module "blk_make_request(NULL, NULL, 0)" "linux/blkdev.h"
|
||||||
then
|
then
|
||||||
|
echo "1"
|
||||||
|
else
|
||||||
|
echo "2"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
apply() {
|
||||||
|
case "$1" in
|
||||||
|
"1")
|
||||||
add_function "
|
add_function "
|
||||||
static inline struct request *cas_blk_make_request(struct request_queue *q,
|
static inline struct request *cas_blk_make_request(struct request_queue *q,
|
||||||
struct bio *bio, gfp_t gfp_mask)
|
struct bio *bio, gfp_t gfp_mask)
|
||||||
{
|
{
|
||||||
return blk_make_request(q, bio, gfp_mask);
|
return blk_make_request(q, bio, gfp_mask);
|
||||||
}"
|
}" ;;
|
||||||
else
|
"2")
|
||||||
add_function "
|
add_function "
|
||||||
static inline struct request *cas_blk_make_request(struct request_queue *q,
|
static inline struct request *cas_blk_make_request(struct request_queue *q,
|
||||||
struct bio *bio, gfp_t gfp_mask)
|
struct bio *bio, gfp_t gfp_mask)
|
||||||
@ -35,5 +45,10 @@ static inline struct request *cas_blk_make_request(struct request_queue *q,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
return rq;
|
return rq;
|
||||||
}"
|
}" ;;
|
||||||
fi
|
*)
|
||||||
|
exit 1
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
conf_run $@
|
||||||
|
@ -6,8 +6,21 @@
|
|||||||
|
|
||||||
. `dirname $0`/conf_framework
|
. `dirname $0`/conf_framework
|
||||||
|
|
||||||
|
check() {
|
||||||
if compile_module "blk_queue_write_cache(NULL, 0, 0)" "linux/blkdev.h"
|
if compile_module "blk_queue_write_cache(NULL, 0, 0)" "linux/blkdev.h"
|
||||||
then
|
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) \\
|
add_define "CAS_CHECK_QUEUE_FLUSH(q) \\
|
||||||
test_bit(QUEUE_FLAG_WC, &(q)->queue_flags)"
|
test_bit(QUEUE_FLAG_WC, &(q)->queue_flags)"
|
||||||
add_define "CAS_CHECK_QUEUE_FUA(q) \\
|
add_define "CAS_CHECK_QUEUE_FUA(q) \\
|
||||||
@ -17,9 +30,8 @@ static inline void cas_set_queue_flush_fua(struct request_queue *q,
|
|||||||
bool flush, bool fua)
|
bool flush, bool fua)
|
||||||
{
|
{
|
||||||
blk_queue_write_cache(q, flush, fua);
|
blk_queue_write_cache(q, flush, fua);
|
||||||
}"
|
}" ;;
|
||||||
elif compile_module "struct request_queue rq;rq.flush_flags" "linux/blkdev.h"
|
"2")
|
||||||
then
|
|
||||||
add_define "CAS_CHECK_QUEUE_FLUSH(q) \\
|
add_define "CAS_CHECK_QUEUE_FLUSH(q) \\
|
||||||
((q)->flush_flags & CAS_REQ_FLUSH)"
|
((q)->flush_flags & CAS_REQ_FLUSH)"
|
||||||
add_define "CAS_CHECK_QUEUE_FUA(q) \\
|
add_define "CAS_CHECK_QUEUE_FUA(q) \\
|
||||||
@ -34,5 +46,10 @@ then
|
|||||||
flags |= REQ_FUA;
|
flags |= REQ_FUA;
|
||||||
if (flags)
|
if (flags)
|
||||||
blk_queue_flush(q, flags);
|
blk_queue_flush(q, flags);
|
||||||
}"
|
}" ;;
|
||||||
fi
|
*)
|
||||||
|
exit 1
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
conf_run $@
|
||||||
|
@ -6,33 +6,56 @@
|
|||||||
|
|
||||||
. `dirname $0`/conf_framework
|
. `dirname $0`/conf_framework
|
||||||
|
|
||||||
|
check() {
|
||||||
if compile_module "WRITE_FLUSH" "linux/fs.h"
|
if compile_module "WRITE_FLUSH" "linux/fs.h"
|
||||||
then
|
then
|
||||||
|
if compile_module "BIO_FLUSH" "linux/bio.h"
|
||||||
|
then
|
||||||
|
echo "1"
|
||||||
|
else
|
||||||
|
echo "2"
|
||||||
|
fi
|
||||||
|
elif compile_module "REQ_PREFLUSH" "linux/blk_types.h"
|
||||||
|
then
|
||||||
|
echo "3"
|
||||||
|
else
|
||||||
|
echo "4"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
apply() {
|
||||||
|
case "$1" in
|
||||||
|
"1")
|
||||||
add_define "CAS_RQ_IS_FLUSH(rq) \\
|
add_define "CAS_RQ_IS_FLUSH(rq) \\
|
||||||
((rq)->cmd_flags & CAS_REQ_FLUSH)"
|
((rq)->cmd_flags & CAS_REQ_FLUSH)"
|
||||||
add_define "CAS_WRITE_FLUSH \\
|
add_define "CAS_WRITE_FLUSH \\
|
||||||
WRITE_FLUSH"
|
WRITE_FLUSH"
|
||||||
if compile_module "BIO_FLUSH" "linux/bio.h"
|
|
||||||
then
|
|
||||||
add_define "CAS_IS_WRITE_FLUSH(flags) \\
|
add_define "CAS_IS_WRITE_FLUSH(flags) \\
|
||||||
((flags) & BIO_FLUSH)"
|
((flags) & BIO_FLUSH)" ;;
|
||||||
else
|
"2")
|
||||||
|
add_define "CAS_RQ_IS_FLUSH(rq) \\
|
||||||
|
((rq)->cmd_flags & CAS_REQ_FLUSH)"
|
||||||
|
add_define "CAS_WRITE_FLUSH \\
|
||||||
|
WRITE_FLUSH"
|
||||||
add_define "CAS_IS_WRITE_FLUSH(flags) \\
|
add_define "CAS_IS_WRITE_FLUSH(flags) \\
|
||||||
((flags) & CAS_REQ_FLUSH)"
|
((flags) & CAS_REQ_FLUSH)" ;;
|
||||||
fi
|
"3")
|
||||||
elif compile_module "REQ_PREFLUSH" "linux/blk_types.h"
|
|
||||||
then
|
|
||||||
add_define "CAS_RQ_IS_FLUSH(rq) \\
|
add_define "CAS_RQ_IS_FLUSH(rq) \\
|
||||||
((rq)->cmd_flags & REQ_PREFLUSH)"
|
((rq)->cmd_flags & REQ_PREFLUSH)"
|
||||||
add_define "CAS_WRITE_FLUSH \\
|
add_define "CAS_WRITE_FLUSH \\
|
||||||
(REQ_OP_WRITE | REQ_PREFLUSH)"
|
(REQ_OP_WRITE | REQ_PREFLUSH)"
|
||||||
add_define "CAS_IS_WRITE_FLUSH(flags) \\
|
add_define "CAS_IS_WRITE_FLUSH(flags) \\
|
||||||
(CAS_WRITE_FLUSH == ((flags) & CAS_WRITE_FLUSH))"
|
(CAS_WRITE_FLUSH == ((flags) & CAS_WRITE_FLUSH))" ;;
|
||||||
else
|
"4")
|
||||||
add_define "CAS_RQ_IS_FLUSH(rq) \\
|
add_define "CAS_RQ_IS_FLUSH(rq) \\
|
||||||
0"
|
0"
|
||||||
add_define "CAS_IS_WRITE_FLUSH(flags) \\
|
add_define "CAS_IS_WRITE_FLUSH(flags) \\
|
||||||
(WRITE_BARRIER == ((flags) & WRITE_BARRIER))"
|
(WRITE_BARRIER == ((flags) & WRITE_BARRIER))"
|
||||||
add_define "CAS_WRITE_FLUSH \\
|
add_define "CAS_WRITE_FLUSH \\
|
||||||
WRITE_BARRIER"
|
WRITE_BARRIER" ;;
|
||||||
fi
|
*)
|
||||||
|
exit 1
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
conf_run $@
|
||||||
|
@ -60,4 +60,11 @@ kernel_not_supp_fail() {
|
|||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
conf_run() {
|
||||||
|
case "$1" in
|
||||||
|
"check") check ;;
|
||||||
|
"apply") apply $2 ;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
IFS='?'
|
IFS='?'
|
||||||
|
Loading…
Reference in New Issue
Block a user