If GRUB_ETC_DEFAULT use crashkernel=auto or
crashkernel=OLD_DEFAULT_CRASHKERNEL, it should be updated as well.
Signed-off-by: Coiby Xu <coxu(a)redhat.com>
---
kdumpctl | 32 ++++++++++++++++++++++++++++++++
1 file changed, 32 insertions(+)
diff --git a/kdumpctl b/kdumpctl
index cd1dd5b..802e15a 100755
--- a/kdumpctl
+++ b/kdumpctl
@@ -1556,6 +1556,36 @@ reset_crashkernel()
fi
}
+# update the crashkernel value in GRUB_ETC_DEFAULT if necessary
+#
+# called by reset_crashkernel_after_update and inherit its array variable
+# _crashkernel_vals
+update_crashkernel_in_grub_etc_default_after_update()
+{
+ local _crashkernel_regex _fadump_regex _crashkernel _fadump_val
+ local _dump_mode _old_default_crashkernel _new_default_crashkernel
+
+ _crashkernel_regex=$(_construct_grub_etc_default_regex crashkernel)
+ _crashkernel=$(sed -n -E 's/'"$_crashkernel_regex"'/\3/p'
"$GRUB_ETC_DEFAULT")
+
+ if [[ -z $_crashkernel ]]; then
+ return
+ fi
+
+ _fadump_regex=$(_construct_grub_etc_default_regex fadump)
+ _fadump_val=$(sed -n -E 's/'"$_fadump_regex"'/\3/p'
"$GRUB_ETC_DEFAULT")
+ _dump_mode=$(get_dump_mode_by_fadump_val "$_fadump_val")
+
+ _old_default_crashkernel=${_crashkernel_vals[old_${_dump_mode}]}
+ _new_default_crashkernel=${_crashkernel_vals[new_${_dump_mode}]}
+
+ if [[ $_crashkernel == auto ]] ||
+ [[ $_crashkernel == "$_old_default_crashkernel" &&
+ $_new_default_crashkernel != "$_old_default_crashkernel" ]]; then
+ _update_kernel_cmdline_in_grub_etc_default crashkernel
"$_new_default_crashkernel"
+ fi
+}
+
# shellcheck disable=SC2154 # false positive when dereferencing an array
reset_crashkernel_after_update()
{
@@ -1584,6 +1614,8 @@ reset_crashkernel_after_update()
fi
fi
done
+
+ update_crashkernel_in_grub_etc_default_after_update
}
# read the value of an environ variable from given environ file path
--
2.34.1