From 4776d9f8fa51a87435da30a6e35865ecfd3ab60b Mon Sep 17 00:00:00 2001 From: Tao Liu Date: Nov 09 2022 07:54:14 +0000 Subject: Fix the sync issue for dump_fs related: bz2083475 upstream: fedora conflict: none commit bea61431785def6a10aaf55b4c15657d9ad0ca32 Author: Tao Liu Date: Sat Oct 8 14:53:21 2022 +0800 Fix the sync issue for dump_fs Previously the sync for dump_fs is problematic, it always return success according to man 2 sync. So it cannot detect the error of the dump target is full and not all of vmcore data been written back the disk, which will leave the vmcore imcomplete and report misleading log as "saving vmcore complete". In this patch, we will use "sync -f vmcore" instead, which will return error if syncfs on the dump target fails. In this way, vmcore sync related failures, such as autoextend of lvm2 thinpool fails, can be detected and handled properly. Signed-off-by: Tao Liu Reviewed-by: Coiby Xu Signed-off-by: Tao Liu --- diff --git a/dracut-kdump.sh b/dracut-kdump.sh index 2a33c5a..e38a4a3 100755 --- a/dracut-kdump.sh +++ b/dracut-kdump.sh @@ -162,9 +162,15 @@ dump_fs() $CORE_COLLECTOR /proc/vmcore "$_dump_fs_path/vmcore-incomplete" _dump_exitcode=$? if [ $_dump_exitcode -eq 0 ]; then - mv "$_dump_fs_path/vmcore-incomplete" "$_dump_fs_path/vmcore" - sync - dinfo "saving vmcore complete" + sync -f "$_dump_fs_path/vmcore-incomplete" + _sync_exitcode=$? + if [ $_sync_exitcode -eq 0 ]; then + mv "$_dump_fs_path/vmcore-incomplete" "$_dump_fs_path/vmcore" + dinfo "saving vmcore complete" + else + derror "sync vmcore failed, exitcode:$_sync_exitcode" + return 1 + fi else derror "saving vmcore failed, exitcode:$_dump_exitcode" fi