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

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