On 07/21/14 at 02:25pm, Vivek Goyal wrote:
On Fri, Jul 18, 2014 at 04:14:05PM +0800, WANG Chao wrote:
> Now when mount in /etc/fstab fails, systemd would not consider it as
> critical and it would continue to boot. In fact, emergency service is
> triggered, but not in a isolation mode, and it results in the emergency
> service getting shutdown at some point later of the boot process. We > need
isolation otherwise we won't see any emergency service.
>
> That is because 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: Harald who contributed "x-initrd.mount" in systemd, confirmed that
> this feature will stay.
>
> 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"
I think put few lines of consice comment in here to explain what x-initrd
is doing an why are we specifying it.
Sure. Will do.