mirror of
https://github.com/dynup/kpatch
synced 2025-02-17 02:06:53 +00:00
kpatch script: don't fail if module already loaded+enabled
For "kpatch load" invocations, don't set failing return status if the kpatch module is already loaded and enabled. Make note of the existing livepatch module and then verify that is has completed its transition before continuing. This allows the user to more gracefully re-run "kpatch load" commands to pick up new kpatch modules. Fixes: #979 Signed-off-by: Joe Lawrence <joe.lawrence@redhat.com>
This commit is contained in:
parent
d3a50c4156
commit
1d2dffec7a
@ -314,31 +314,31 @@ load_module () {
|
||||
die "error: cannot re-enable patch module $modname, cannot verify checksum match"
|
||||
fi
|
||||
else
|
||||
die "error: module named $modname already loaded and enabled"
|
||||
echo "module named $modname already loaded and enabled"
|
||||
fi
|
||||
else
|
||||
echo "loading patch module: $module"
|
||||
local i=0
|
||||
while true; do
|
||||
out="$(LC_ALL=C insmod "$module" 2>&1)"
|
||||
[[ -z "$out" ]] && break
|
||||
echo "$out" 1>&2
|
||||
[[ ! "$out" =~ "Device or resource busy" ]] &&
|
||||
die "failed to load module $module"
|
||||
|
||||
# "Device or resource busy" means the activeness safety check
|
||||
# failed. Retry in a few seconds.
|
||||
i=$((i+1))
|
||||
if [[ $i -eq $MAX_LOAD_ATTEMPTS ]]; then
|
||||
die "failed to load module $module"
|
||||
break
|
||||
else
|
||||
warn "retrying..."
|
||||
sleep $RETRY_INTERVAL
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
echo "loading patch module: $module"
|
||||
local i=0
|
||||
while true; do
|
||||
out="$(LC_ALL=C insmod "$module" 2>&1)"
|
||||
[[ -z "$out" ]] && break
|
||||
echo "$out" 1>&2
|
||||
[[ ! "$out" =~ "Device or resource busy" ]] &&
|
||||
die "failed to load module $module"
|
||||
|
||||
# "Device or resource busy" means the activeness safety check
|
||||
# failed. Retry in a few seconds.
|
||||
i=$((i+1))
|
||||
if [[ $i -eq $MAX_LOAD_ATTEMPTS ]]; then
|
||||
die "failed to load module $module"
|
||||
break
|
||||
else
|
||||
warn "retrying..."
|
||||
sleep $RETRY_INTERVAL
|
||||
fi
|
||||
done
|
||||
|
||||
if ! wait_for_patch_transition "$modname" ; then
|
||||
echo "module $modname did not complete its transition, unloading..."
|
||||
unload_module "$modname"
|
||||
|
Loading…
Reference in New Issue
Block a user