Rework for RHEL8.5

Rework for RHEL8.5 compatibility to avoid potential bug of exiting queue
after IO completion on a different CPU.

Targeted RHEL kernel version corrected.

Signed-off-by: Krzysztof Majzerowicz-Jaszcz <krzysztof.majzerowicz-jaszcz@intel.com>
This commit is contained in:
Krzysztof Majzerowicz-Jaszcz
2022-08-12 11:28:44 +02:00
parent 13984c976a
commit e997f768b0
4 changed files with 23 additions and 40 deletions

View File

@@ -6,14 +6,14 @@
. $(dirname $3)/conf_framework
# RHEL8.5 kernel 4.18 subversion targeted for the workaround is 348.2.1.
# RHEL8.5 kernel 4.18 subversion targeted for the workaround is 348.7.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
QUEUE_PUT_WA_LINUX_MAJOR_SINCE=4
QUEUE_PUT_WA_LINUX_MINOR_SINCE=18
QUEUE_PUT_WA_LINUX_SUB_SINCE=0
QUEUE_PUT_WA_RHEL_MAJOR_SINCE=348
QUEUE_PUT_WA_RHEL_MINOR_SINCE=7
QUEUE_PUT_WA_RHEL_SUB_SINCE=1
check () {
cur_name=$(basename $2)
@@ -35,12 +35,12 @@ check () {
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" ]
if [ "$LINUX_MAJOR" -eq "$QUEUE_PUT_WA_LINUX_MAJOR_SINCE" ] &&
[ "$LINUX_MINOR" -eq "$QUEUE_PUT_WA_LINUX_MINOR_SINCE" ] &&
[ "$LINUX_SUB" -eq "$QUEUE_PUT_WA_LINUX_SUB_SINCE" ] &&
[ "$RHEL_MAJOR" -ge "$QUEUE_PUT_WA_RHEL_MAJOR_SINCE" ] &&
[ "$RHEL_MINOR" -ge "$QUEUE_PUT_WA_RHEL_MINOR_SINCE" ] &&
[ "$RHEL_SUB" -ge "$QUEUE_PUT_WA_RHEL_SUB_SINCE" ]
then
echo $cur_name "1" >> $config_file_path; #workaround needed
else
@@ -53,12 +53,12 @@ check () {
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) );
add_define "cas_blk_queue_exit(q) \
percpu_ref_put(&q->q_usage_counter);
"
;;
"2")
add_define "cas_blk_queue_exit(bvol) (void)bvol;"
add_define "cas_blk_queue_exit(q) "
;;
*)
exit 1