Make dump_to_rootfs
wait for 90s for real
When `failure_action` is set to `dump_to_rootfs`, the message: "Waiting for rootfs mount, will timeout after 90 seconds" is actually wrong. Kdump will simply call `systemctl start sysroot.mount`, but the timeout value of sysroot.mount depends on the unit service and dracut parameters. And by default, dracut will set JobRunningTimeoutSec=0 and JobTimeoutSec=0 for the device units, which means it will wait forever. (see wait_for_dev function in dracut) For some devices, this can be fixed by setting rd.timeout=90. But when initqueue is set enabled during initramfs build, dracut will force set timeout for host devices to `0`. (see 99base/module-setup.sh). Depending on dracut / systemd can make things unpredictable and break as parameters or code change. To make things easy to understand and maintain, just call `systemctl` with `--no-block` params, and implement a standalone wait loop. Now `dump_to_rootfs` will actually wait for 90s then timeout. Signed-off-by: Kairui Song <kasong@redhat.com> Acked-by: Coiby Xu <coxu@redhat.com>
This commit is contained in:
parent
7435ecf3c4
commit
660cf4ac03
@ -230,10 +230,20 @@ dump_to_rootfs()
|
|||||||
dinfo "Clean up dead systemd services"
|
dinfo "Clean up dead systemd services"
|
||||||
systemctl cancel
|
systemctl cancel
|
||||||
dinfo "Waiting for rootfs mount, will timeout after 90 seconds"
|
dinfo "Waiting for rootfs mount, will timeout after 90 seconds"
|
||||||
systemctl start sysroot.mount
|
systemctl start --no-block sysroot.mount
|
||||||
|
|
||||||
|
_loop=0
|
||||||
|
while [ $_loop -lt 90 ] && ! is_mounted /sysroot; do
|
||||||
|
sleep 1
|
||||||
|
_loop=$((_loop + 1))
|
||||||
|
done
|
||||||
|
|
||||||
|
if ! is_mounted /sysroot; then
|
||||||
|
derror "Failed to mount rootfs"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
ddebug "NEWROOT=$NEWROOT"
|
ddebug "NEWROOT=$NEWROOT"
|
||||||
|
|
||||||
dump_fs $NEWROOT
|
dump_fs $NEWROOT
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user