Resolves: bz2092012
According to the ostree team [1], the existence of /run/ostree-booted
is the most stable way to signal/check that a system has been booted in ostree-style. It is also used by rpm-ostree at compose/install time in the sandboxed environment where scriptlets run, in order to signal that the package is being installed/composed into an ostree commit (i.e. not directly on a live system). See https://github.com/coreos/rpm-ostree/blob/8ddf5f40d9cbbd9d3668cc75b703316e0a... for reference.
By checking the existence of /run/ostree-booted, we could skip trying to update kernel cmdline during OSTree compose time.
[1] https://bugzilla.redhat.com/show_bug.cgi?id=2092012#c3
Reported-by: Luca BRUNO lucab@redhat.com Suggested-by: Luca BRUNO lucab@redhat.com Fixes: 0adb0f4 ("try to reset kernel crashkernel when kexec-tools updates the default crashkernel value") Signed-off-by: Coiby Xu coxu@redhat.com --- kexec-tools.spec | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-)
diff --git a/kexec-tools.spec b/kexec-tools.spec index c6e42b2..e7afb9c 100644 --- a/kexec-tools.spec +++ b/kexec-tools.spec @@ -262,8 +262,12 @@ mkdir -p $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/ mv $RPM_BUILD_ROOT/etc/kdump-adv-conf/kdump_dracut_modules/* $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/
%pre -# save the old default crashkernel values to /tmp/ when upgrading the package -if ! grep -qs "ostree" /proc/cmdline && [ $1 == 2 ] && grep -q get-default-crashkernel /usr/bin/kdumpctl; then +# Save the old default crashkernel values to /tmp/ when upgrading the package +# so kdumpctl later can tell if it should update the kernel crashkenrel +# parameter in the posttrans scriptlet. Note this feauture of auto-updating +# the kernel crashkenrel parameter currently doesn't support ostree, so skip it +# for ostree. +if [ ! -f /run/ostree-booted ] && [ $1 == 2 ] && grep -q get-default-crashkernel /usr/bin/kdumpctl; then kdumpctl get-default-crashkernel kdump > /tmp/old_default_crashkernel 2>/dev/null %ifarch ppc64 ppc64le kdumpctl get-default-crashkernel fadump > /tmp/old_default_crashkernel_fadump 2>/dev/null @@ -336,9 +340,14 @@ do done
%posttrans -# try to reset kernel crashkernel value to new default value when upgrading -# the package -if ! grep -qs "ostree" /proc/cmdline && [ $1 == 1 ]; then +# Try to reset kernel crashkernel value to new default value based on the old +# default value or set up crasherkernel value for osbuild +# +# Note +# 1. Skip ostree systems as they are not supported. +# 2. "[ $1 == 1 ]" in posttrans scriptlet means both install and upgrade. The +# former case is used to set up crashkernel for osbuild +if [ ! -f /run/ostree-booted ] && [ $1 == 1 ]; then kdumpctl reset-crashkernel-after-update rm /tmp/old_default_crashkernel 2>/dev/null %ifarch ppc64 ppc64le
Not tested but patch looks good to me.
On Fri, Jul 29, 2022 at 12:59:58PM -0000, Timothée Ravier wrote:
Not tested but patch looks good to me.
Thanks for the quick reply and the acknowledgement! The fix has been included in kexec-tools-2.0.25-1.fc37.
Hi Coiby,
On Fri, 29 Jul 2022 20:54:04 +0800 Coiby Xu coxu@redhat.com wrote:
Resolves: bz2092012
According to the ostree team [1], the existence of /run/ostree-booted
is the most stable way to signal/check that a system has been booted in ostree-style. It is also used by rpm-ostree at compose/install time in the sandboxed environment where scriptlets run, in order to signal that the package is being installed/composed into an ostree commit (i.e. not directly on a live system). See https://github.com/coreos/rpm-ostree/blob/8ddf5f40d9cbbd9d3668cc75b703316e0a... for reference.
By checking the existence of /run/ostree-booted, we could skip trying to update kernel cmdline during OSTree compose time.
[1] https://bugzilla.redhat.com/show_bug.cgi?id=2092012#c3
Reported-by: Luca BRUNO lucab@redhat.com Suggested-by: Luca BRUNO lucab@redhat.com Fixes: 0adb0f4 ("try to reset kernel crashkernel when kexec-tools updates the default crashkernel value") Signed-off-by: Coiby Xu coxu@redhat.com
kexec-tools.spec | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-)
diff --git a/kexec-tools.spec b/kexec-tools.spec index c6e42b2..e7afb9c 100644 --- a/kexec-tools.spec +++ b/kexec-tools.spec @@ -262,8 +262,12 @@ mkdir -p $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/ mv $RPM_BUILD_ROOT/etc/kdump-adv-conf/kdump_dracut_modules/* $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/
%pre -# save the old default crashkernel values to /tmp/ when upgrading the package -if ! grep -qs "ostree" /proc/cmdline && [ $1 == 2 ] && grep -q get-default-crashkernel /usr/bin/kdumpctl; then +# Save the old default crashkernel values to /tmp/ when upgrading the package +# so kdumpctl later can tell if it should update the kernel crashkenrel
s/crashkenrel/crashkernel/
+# parameter in the posttrans scriptlet. Note this feauture of auto-updating +# the kernel crashkenrel parameter currently doesn't support ostree, so skip it
s/crashkenrel/crashkernel/
Other than that Reviewed-by: Philipp Rudo prudo@redhat.com
+# for ostree. +if [ ! -f /run/ostree-booted ] && [ $1 == 2 ] && grep -q get-default-crashkernel /usr/bin/kdumpctl; then kdumpctl get-default-crashkernel kdump > /tmp/old_default_crashkernel 2>/dev/null %ifarch ppc64 ppc64le kdumpctl get-default-crashkernel fadump > /tmp/old_default_crashkernel_fadump 2>/dev/null @@ -336,9 +340,14 @@ do done
%posttrans -# try to reset kernel crashkernel value to new default value when upgrading -# the package -if ! grep -qs "ostree" /proc/cmdline && [ $1 == 1 ]; then +# Try to reset kernel crashkernel value to new default value based on the old +# default value or set up crasherkernel value for osbuild +# +# Note +# 1. Skip ostree systems as they are not supported. +# 2. "[ $1 == 1 ]" in posttrans scriptlet means both install and upgrade. The +# former case is used to set up crashkernel for osbuild +if [ ! -f /run/ostree-booted ] && [ $1 == 1 ]; then kdumpctl reset-crashkernel-after-update rm /tmp/old_default_crashkernel 2>/dev/null %ifarch ppc64 ppc64le
On Mon, Aug 01, 2022 at 05:24:48PM +0200, Philipp Rudo wrote:
Hi Coiby,
On Fri, 29 Jul 2022 20:54:04 +0800 Coiby Xu coxu@redhat.com wrote:
Resolves: bz2092012
According to the ostree team [1], the existence of /run/ostree-booted
is the most stable way to signal/check that a system has been booted in ostree-style. It is also used by rpm-ostree at compose/install time in the sandboxed environment where scriptlets run, in order to signal that the package is being installed/composed into an ostree commit (i.e. not directly on a live system). See https://github.com/coreos/rpm-ostree/blob/8ddf5f40d9cbbd9d3668cc75b703316e0a... for reference.
By checking the existence of /run/ostree-booted, we could skip trying to update kernel cmdline during OSTree compose time.
[1] https://bugzilla.redhat.com/show_bug.cgi?id=2092012#c3
Reported-by: Luca BRUNO lucab@redhat.com Suggested-by: Luca BRUNO lucab@redhat.com Fixes: 0adb0f4 ("try to reset kernel crashkernel when kexec-tools updates the default crashkernel value") Signed-off-by: Coiby Xu coxu@redhat.com
kexec-tools.spec | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-)
diff --git a/kexec-tools.spec b/kexec-tools.spec index c6e42b2..e7afb9c 100644 --- a/kexec-tools.spec +++ b/kexec-tools.spec @@ -262,8 +262,12 @@ mkdir -p $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/ mv $RPM_BUILD_ROOT/etc/kdump-adv-conf/kdump_dracut_modules/* $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/
%pre -# save the old default crashkernel values to /tmp/ when upgrading the package -if ! grep -qs "ostree" /proc/cmdline && [ $1 == 2 ] && grep -q get-default-crashkernel /usr/bin/kdumpctl; then +# Save the old default crashkernel values to /tmp/ when upgrading the package +# so kdumpctl later can tell if it should update the kernel crashkenrel
s/crashkenrel/crashkernel/
+# parameter in the posttrans scriptlet. Note this feauture of auto-updating +# the kernel crashkenrel parameter currently doesn't support ostree, so skip it
s/crashkenrel/crashkernel/
Other than that Reviewed-by: Philipp Rudo prudo@redhat.com
The patch has been merged with the above typos fixed, thanks for the review!
+# for ostree. +if [ ! -f /run/ostree-booted ] && [ $1 == 2 ] && grep -q get-default-crashkernel /usr/bin/kdumpctl; then kdumpctl get-default-crashkernel kdump > /tmp/old_default_crashkernel 2>/dev/null %ifarch ppc64 ppc64le kdumpctl get-default-crashkernel fadump > /tmp/old_default_crashkernel_fadump 2>/dev/null @@ -336,9 +340,14 @@ do done
%posttrans -# try to reset kernel crashkernel value to new default value when upgrading -# the package -if ! grep -qs "ostree" /proc/cmdline && [ $1 == 1 ]; then +# Try to reset kernel crashkernel value to new default value based on the old +# default value or set up crasherkernel value for osbuild +# +# Note +# 1. Skip ostree systems as they are not supported. +# 2. "[ $1 == 1 ]" in posttrans scriptlet means both install and upgrade. The +# former case is used to set up crashkernel for osbuild +if [ ! -f /run/ostree-booted ] && [ $1 == 1 ]; then kdumpctl reset-crashkernel-after-update rm /tmp/old_default_crashkernel 2>/dev/null %ifarch ppc64 ppc64le