Blame SOURCES/0003-kpatch-script-don-t-fail-if-module-already-loaded-en.patch

190f5a
From 1d2dffec7a6fad4a8daed9340cd42aada856d03f Mon Sep 17 00:00:00 2001
190f5a
From: Joe Lawrence <joe.lawrence@redhat.com>
190f5a
Date: Wed, 19 Jun 2019 15:29:43 -0400
190f5a
Subject: [PATCH] kpatch script: don't fail if module already loaded+enabled
190f5a
190f5a
For "kpatch load" invocations, don't set failing return status if the
190f5a
kpatch module is already loaded and enabled.  Make note of the existing
190f5a
livepatch module and then verify that is has completed its transition
190f5a
before continuing.  This allows the user to more gracefully re-run
190f5a
"kpatch load" commands to pick up new kpatch modules.
190f5a
190f5a
Fixes: #979
190f5a
Signed-off-by: Joe Lawrence <joe.lawrence@redhat.com>
190f5a
---
190f5a
 kpatch/kpatch | 44 ++++++++++++++++++++++----------------------
190f5a
 1 file changed, 22 insertions(+), 22 deletions(-)
190f5a
190f5a
diff --git a/kpatch/kpatch b/kpatch/kpatch
190f5a
index 328f1197259d..8ea6c80ca2d3 100755
190f5a
--- a/kpatch/kpatch
190f5a
+++ b/kpatch/kpatch
190f5a
@@ -314,30 +314,30 @@ load_module () {
190f5a
 				die "error: cannot re-enable patch module $modname, cannot verify checksum match"
190f5a
 			fi
190f5a
 		else
190f5a
-			die "error: module named $modname already loaded and enabled"
190f5a
+			echo "module named $modname already loaded and enabled"
190f5a
 		fi
190f5a
-	fi
190f5a
+	else
190f5a
+		echo "loading patch module: $module"
190f5a
+		local i=0
190f5a
+		while true; do
190f5a
+			out="$(LC_ALL=C insmod "$module" 2>&1)"
190f5a
+			[[ -z "$out" ]] && break
190f5a
+			echo "$out" 1>&2
190f5a
+			[[ ! "$out" =~ "Device or resource busy" ]] &&
190f5a
+				die "failed to load module $module"
190f5a
 
190f5a
-	echo "loading patch module: $module"
190f5a
-	local i=0
190f5a
-	while true; do
190f5a
-		out="$(LC_ALL=C insmod "$module" 2>&1)"
190f5a
-		[[ -z "$out" ]] && break
190f5a
-		echo "$out" 1>&2
190f5a
-		[[ ! "$out" =~ "Device or resource busy" ]] &&
190f5a
-			die "failed to load module $module"
190f5a
-
190f5a
-		# "Device or resource busy" means the activeness safety check
190f5a
-		# failed.  Retry in a few seconds.
190f5a
-		i=$((i+1))
190f5a
-		if [[ $i -eq $MAX_LOAD_ATTEMPTS ]]; then
190f5a
-			die "failed to load module $module"
190f5a
-			break
190f5a
-		else
190f5a
-			warn "retrying..."
190f5a
-			sleep $RETRY_INTERVAL
190f5a
-		fi
190f5a
-	done
190f5a
+			# "Device or resource busy" means the activeness safety check
190f5a
+			# failed.  Retry in a few seconds.
190f5a
+			i=$((i+1))
190f5a
+			if [[ $i -eq $MAX_LOAD_ATTEMPTS ]]; then
190f5a
+				die "failed to load module $module"
190f5a
+				break
190f5a
+			else
190f5a
+				warn "retrying..."
190f5a
+				sleep $RETRY_INTERVAL
190f5a
+			fi
190f5a
+		done
190f5a
+	fi
190f5a
 
190f5a
 	if ! wait_for_patch_transition "$modname" ; then
190f5a
 		echo "module $modname did not complete its transition, unloading..."
190f5a
-- 
190f5a
2.21.0
190f5a