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"
|
||||
systemctl cancel
|
||||
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"
|
||||
|
||||
dump_fs $NEWROOT
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user