open-cas-linux/configure.d/1_blk_queue_exit_for_rhel.conf
Krzysztof Majzerowicz-Jaszcz b983eeb751 RHEL8.5 kernel 4.18 support fix
This patch adds support for RHEL8.5 with kernel 4.18.0.348.2.1.el8 and
later.

Additional request queue operations added for these kernels.
Configure scripts added/updated.

Fixes #1278

Signed-off-by: Krzysztof Majzerowicz-Jaszcz <krzysztof.majzerowicz-jaszcz@intel.com>
2022-08-12 08:52:36 +02:00

69 lines
1.8 KiB
Bash

#!/bin/bash
#
# Copyright(c) 2012-2022 Intel Corporation
# SPDX-License-Identifier: BSD-3-Clause
#
. $(dirname $3)/conf_framework
# RHEL8.5 kernel 4.18 subversion targeted for the workaround is 348.2.1.
# The workaround is needed starting this version and up.
LINUX_MAJOR_SINCE=4
LINUX_MINOR_SINCE=18
LINUX_SUB_SINCE=0
RHEL_MAJOR_SINCE=348
RHEL_MINOR_SINCE=2
RHEL_SUB_SINCE=1
check () {
cur_name=$(basename $2)
config_file_path=$1
LINUX_VERSION_CODE=$(get_define $cur_name "LINUX_VERSION_CODE" "generated/uapi/linux/version.h")
RHEL_RELEASE=$(get_define $cur_name "RHEL_RELEASE" "generated/uapi/linux/version.h")
LINUX_MAJOR=$((LINUX_VERSION_CODE >> 16 & 0xff))
LINUX_MINOR=$((LINUX_VERSION_CODE >> 8 & 0xff))
LINUX_SUB=$((LINUX_VERSION_CODE & 0xff))
if [ -z $RHEL_RELEASE ]; then
echo $cur_name "2" >> $config_file_path; #not RHEL, no workaround needed
else
#it's RHEL, check versions to see if the workaround is needed
IFS=. read -a arr <<< $RHEL_RELEASE
RHEL_MAJOR=${arr[0]}
RHEL_MINOR=${arr[1]}
RHEL_SUB=${arr[2]}
#check kernel and rhel version (major/minor/sub)
if [ "$LINUX_MAJOR" -eq "$LINUX_MAJOR_SINCE" ] &&
[ "$LINUX_MINOR" -eq "$LINUX_MINOR_SINCE" ] &&
[ "$LINUX_SUB" -eq "$LINUX_SUB_SINCE" ] &&
[ "$RHEL_MAJOR" -ge "$RHEL_MAJOR_SINCE" ] &&
[ "$RHEL_MINOR" -ge "$RHEL_MINOR_SINCE" ] &&
[ "$RHEL_SUB" -ge "$RHEL_SUB_SINCE" ]
then
echo $cur_name "1" >> $config_file_path; #workaround needed
else
echo $cur_name "2" >> $config_file_path; #no workaround needed
fi
fi
}
apply() {
case "$1" in
"1")
add_define "cas_blk_queue_exit(bvol) \
percpu_ref_put(&(casdisk_functions.casdsk_exp_obj_get_queue(bvol->dsk)->q_usage_counter) );
"
;;
"2")
add_define "cas_blk_queue_exit(bvol) (void)bvol;"
;;
*)
exit 1
esac
}
conf_run $@