70 lines
2.1 KiB
Diff
70 lines
2.1 KiB
Diff
|
From 98087d78eda2ca58a3b55ee5dd9e0e7bad8467ef Mon Sep 17 00:00:00 2001
|
||
|
From: Tao Liu <ltao@redhat.com>
|
||
|
Date: Tue, 25 Jun 2024 16:35:16 +1200
|
||
|
Subject: [PATCH] Use "grep -q <<< $(cmd)" instead of "cmd | grep -q"
|
||
|
|
||
|
The following line of code's exit value should be the exit value of
|
||
|
grep by default:
|
||
|
|
||
|
cmd | grep -q
|
||
|
|
||
|
However it will not always work as expected, a 141 exit code may be
|
||
|
returned, see the following debug info:
|
||
|
|
||
|
//--- a/usr/lib/dracut/modules.d/99kdumpbase/module-setup.sh
|
||
|
//+++ b/usr/lib/dracut/modules.d/99kdumpbase/module-setup.sh
|
||
|
//@@ -55,6 +55,11 @@ depends() {
|
||
|
// _dep="$_dep ssh-client"
|
||
|
// fi
|
||
|
//
|
||
|
//+ dracut --list-modules 1>&2
|
||
|
//+ echo $? 1>&2
|
||
|
//+ dracut --list-modules | grep -q lvmthinpool-monitor
|
||
|
//+ echo $? ${PIPESTATUS[0]} ${PIPESTATUS[1]} 1>&2
|
||
|
//+
|
||
|
// if is_lvm2_thinp_dump_target; then
|
||
|
// if dracut --list-modules | grep -q lvmthinpool-monitor; then
|
||
|
// add_opt_module lvmthinpool-monitor
|
||
|
|
||
|
$ kdumpctl rebuild
|
||
|
kdump: Rebuilding /boot/initramfs-6.10.0-0.rc4.11.el10.x86_64kdump.img
|
||
|
...snip...
|
||
|
lvmmerge
|
||
|
lvmthinpool-monitor
|
||
|
..snip...
|
||
|
uefi-lib
|
||
|
0
|
||
|
141 141 0
|
||
|
|
||
|
The reason is, grep exits immediately when there is a match but the
|
||
|
first cmd still keep writing to the pipe. Since there is no reader,
|
||
|
a SIGPIPE signal is generated. As a result, a 141 exit code will be
|
||
|
returned.
|
||
|
|
||
|
Let's use the following line of code instead, which have the same effect
|
||
|
but works as expected:
|
||
|
|
||
|
grep -q <<< $(cmd)
|
||
|
|
||
|
Signed-off-by: Tao Liu <ltao@redhat.com>
|
||
|
---
|
||
|
dracut-module-setup.sh | 2 +-
|
||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||
|
|
||
|
diff --git a/dracut-module-setup.sh b/dracut-module-setup.sh
|
||
|
index 89d9959..76fb5b2 100755
|
||
|
--- a/dracut-module-setup.sh
|
||
|
+++ b/dracut-module-setup.sh
|
||
|
@@ -56,7 +56,7 @@ depends() {
|
||
|
fi
|
||
|
|
||
|
if is_lvm2_thinp_dump_target; then
|
||
|
- if dracut --list-modules | grep -q lvmthinpool-monitor; then
|
||
|
+ if grep -q lvmthinpool-monitor <<< $(dracut --list-modules); then
|
||
|
add_opt_module lvmthinpool-monitor
|
||
|
else
|
||
|
dwarning "Required lvmthinpool-monitor modules is missing! Please upgrade dracut >= 057."
|
||
|
--
|
||
|
2.40.1
|
||
|
|