78e19b dracut-module-setup: Skip initrd-cleanup and initrd-parse-etc in kdump

Authored and Committed by Lichen Liu 8 months ago
    dracut-module-setup: Skip initrd-cleanup and initrd-parse-etc in kdump
    
    Resolves: https://issues.redhat.com/browse/RHEL-13996
    Upstream: Fedora
    Conflict: None
    
    commit 468336700df86b52cd673d68561ba460ff2390be
    Author: Lichen Liu <lichliu@redhat.com>
    Date:   Mon Jan 22 15:59:09 2024 +0800
    
        dracut-module-setup: Skip initrd-cleanup and initrd-parse-etc in kdump
    
        When using multipath devices as the target for kdump, if user_friendly_name
        is also specified, devices default to names like "mpath*", e.g., mpatha.
        In dracut, we obtain a persistent device name via get_persistent_dev. However,
        dracut currently believes using /dev/mapper/mpath* could cause issues, thus
        alternatively names are used, here it's /dev/disk/by-uuid/<FS_UUID>.
    
        During the kdump boot progress, the /dev/disk/by-uuid/<FS_UUID> will exist as
        soon as one of the path devices exists, but it won't be usable by systemd,
        since multipathd will claim that device as a path device. Then multipathd will
        get stopped before it can create the multipath device.
    
        Without user_friendly_name, /dev/mapper/<WWID> is considered a persistent
        device name, avoiding the issue.
    
        The exit of multipathd is due to two dependencies in the current dracut module
        90multipath/multipathd.service, "Before=initrd-cleanup.service" and
        "Conflicts=initrd-cleanup.service".
    
        As per man 5 systemd.unit, if A.service has "Conflicts=B.service", starting
        B.service will stop A.service.
    
        This is useful during normal boot. However, we will never switch-root after
        capturing vmcore in kdump.
    
        We need to ensure that multipathd is not killed due to such dependency issue.
        Without modifying multipathd.service, we add ConditionPathExists=!/proc/vmcore
        to skip initrd-cleanup.service in kdump. This approach is beneficial as
        it avoid the potential termination of other services that conflict with
        initrd-cleanup.service. Also skip initrd-parse-etc.service as it will try to
        start initrd-cleanup.service. Both of these services are used for switch root,
        so they can be safely skipped in kdump.
    
        Suggested-by: Benjamin Marzinski <bmarzins@redhat.com>
        Suggested-by: Dave Young <dyoung@redhat.com>
        Signed-off-by: Lichen Liu <lichliu@redhat.com>
        Reviewed-by: Philipp Rudo <prudo@redhat.com>
    
    Signed-off-by: Lichen Liu <lichliu@redhat.com>
    
        
file modified
+9 -0