Currently in kdump initramfs, mount units specified in /etc/fstab
are
required by "local-fs.target". When any of these mounts fails,
local-fs.target fails.
For kdump initramfs, we need to isolate to emergency service on any of
the mount failure, that said, every service should be stopped and onlu
emergency service would run. But local-fs.target won't trigger that on
its failure. That means in case of mount failure, local-fs.target also
enters failure state, but all the service will continue without any
interruption.
After digging looking into source code of systemd-fstab-generator. I
find "x-initrd.mount" using in initramfs mount, will make the mount
units required by "initrd-root-fs.target" rather than it's used to be
"local-fs.target".
"initrd-root-fs.target" is suitable to us because if it fails, it will
isolate to emergency service. That means in case of any mount failure,
the emergeny service will start and everything else will stop. We want
this effect because we need to take kdump fail-safe action when there's
a mount failure.
From systemd unit point of view, "initrd-root-fs.target" has
OnFailureIsolate=yes, but "local-fs.target" doesn't. From
systemd.unit(5):
OnFailureIsolate=
Takes a boolean argument. If true, the unit listed in OnFailure=
will be enqueued in isolation mode, i.e. all units that are not its
dependency will be stopped. If this is set, only a single unit may
be listed in OnFailure=. Defaults to false.
NOTE: It's quite hacky to use "x-initrd.mount" in initramfs /etc/fstab.
It's more common to specify it on real root /etc/fstab. Because I don't
find any other way to do it, We can only hope that systemd will keep
this feature.
Signed-off-by: WANG Chao <chaowang(a)redhat.com>
---
mkdumprd | 1 +
1 file changed, 1 insertion(+)
diff --git a/mkdumprd b/mkdumprd
index ba35800..a38d190 100644
--- a/mkdumprd
+++ b/mkdumprd
@@ -106,6 +106,7 @@ to_mount() {
_fstype=$(findmnt -k -f -n -r -o FSTYPE $_dev)
_options=$(findmnt -k -f -n -r -o OPTIONS $_dev)
_options=${_options/#ro/rw} #mount fs target as rw in 2nd kernel
+ _options="$_options,x-initrd.mount"
_mntopts="$_target $_fstype $_options"
#for non-nfs _dev converting to use udev persistent name
if [ -b "$_source" ]; then
--
1.9.3
_______________________________________________
kexec mailing list
kexec(a)lists.fedoraproject.org
https://lists.fedoraproject.org/mailman/listinfo/kexec