When fadump mode is enabled, the default initrd is rebuilt with kdump dracut module. As the default initrd is altered, the original default initrd is backed up. But we are not restoring it when fadump mode is disabled. This patch tries to restore the backed up default initrd on disabling fadump mode.
Signed-off-by: Hari Bathini hbathini@linux.vnet.ibm.com --- kdumpctl | 42 ++++++++++++++++++++++++++++++++---------- 1 file changed, 32 insertions(+), 10 deletions(-)
diff --git a/kdumpctl b/kdumpctl index 8d0ab81..8d883de 100755 --- a/kdumpctl +++ b/kdumpctl @@ -154,9 +154,6 @@ rebuild_fadump_initrd() { local target_initrd_tmp
- # backup fadump initrd for reference before replacing it - backup_initrd - # this file tells the initrd is fadump enabled touch /tmp/fadump.initramfs target_initrd_tmp="$TARGET_INITRD.tmp" @@ -190,8 +187,17 @@ rebuild_kdump_initrd() rebuild_initrd() { if [ $DEFAULT_DUMP_MODE == "fadump" ]; then + # backup initrd for reference before replacing it + # with fadump aware initrd + backup_restore_default_initrd "backup" + rebuild_fadump_initrd else + # check if a backup of default initrd exists. If yes, + # it signifies a switch from fadump mode. So, restore + # the backed up default initrd. + backup_restore_default_initrd "restore" + rebuild_kdump_initrd fi
@@ -220,15 +226,31 @@ check_executable() done }
-backup_initrd() +backup_restore_default_initrd() { - local target_initrd_bak + local default_initrd + local default_initrd_bak + local action=$1 + + default_initrd="${KDUMP_BOOTDIR}/initramfs-${kdump_kver}.img" + default_initrd_bak="${KDUMP_BOOTDIR}/.initramfs-${kdump_kver}.img.default"
- # Check if backup initrd is already present. - target_initrd_bak="$TARGET_INITRD.bak" - if [ ! -e $target_initrd_bak ];then - echo "Backing up $TARGET_INITRD" - cp $TARGET_INITRD $target_initrd_bak + if [[ $action != "restore" ]]; then + if [ ! -e $default_initrd_bak ]; then + echo "Backing up $default_initrd" + cp $default_initrd $default_initrd_bak + fi + else + # If a backup initrd exists, we must be switching back from + # fadump to kdump. Restore the original default initrd. + if [ -f $default_initrd_bak ];then + mv $default_initrd_bak $default_initrd + if [[ $? -eq 0 ]]; then + echo -n "Default initrd is restored as fadump mode " + echo "is disabled" + sync + fi + fi fi }