On Wed, 17 Jan 2024 at 11:12, Lichen Liu <lichliu(a)redhat.com> wrote:
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.
Hi Lichen, still something not clear to me is the kdump-capture.service has
Before=initrd-cleanup.service
Probably some other service order issue caused the cleanup service
running early than the dump capture service?
In another way, can we just remove the initrd-cleanup.service from
kdump initramfs? Or make it after the kdump-capture.service explicitly
in the initrd-cleanup.service file.
This is useful during normal boot. However, in kdump, after capturing vmcore,
we don't proceed with steps like switch-root. Therefore, removing these
dependencies to keep multipathd running during kdump is safe.
Suggested-by: Benjamin Marzinski <bmarzins(a)redhat.com>
Signed-off-by: Lichen Liu <lichliu(a)redhat.com>
---
dracut-module-setup.sh | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/dracut-module-setup.sh b/dracut-module-setup.sh
index 1dc88dc..6d2176f 100755
--- a/dracut-module-setup.sh
+++ b/dracut-module-setup.sh
@@ -1089,6 +1089,14 @@ install() {
's/\(^[[:space:]]*reserved_memory[[:space:]]*=\)[[:space:]]*[[:digit:]]*/\1
1024/' \
"${initdir}/etc/lvm/lvm.conf" &> /dev/null
+ # For the multipath target under kdump, we can safely remove
+ # "Before=initrd-cleanup.service" and
"Conflicts=initrd-cleanup.service"
+ # from multipathd.service to keep multipathd running under kdump.
+ sed -i \
+ -e '/^Before=initrd-cleanup.service$/d' \
+ -e '/^Conflicts=initrd-cleanup.service$/d' \
+ "${initdir}/${systemdsystemunitdir}/multipathd.service" &>
/dev/null
+
# Save more memory by dropping switch root capability
dracut_no_switch_root
}
--
2.43.0
--
_______________________________________________
kexec mailing list -- kexec(a)lists.fedoraproject.org
To unsubscribe send an email to kexec-leave(a)lists.fedoraproject.org
Fedora Code of Conduct:
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines:
https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives:
https://lists.fedoraproject.org/archives/list/kexec@lists.fedoraproject.org
Do not reply to spam, report it:
https://pagure.io/fedora-infrastructure/new_issue