On Friday 15 August 2014 at 12:19:50, Lennart Poettering wrote: 
> [...]
> > > > 
> > > > I'd like to make this work both with initramfs and without one 
> > > > (provided that
> > > > the rootfs has been mounted read-only by using 'ro' kernel cmdline 
> > > > parameter).
> > > > 
> > > > In this case, what are the needed orderings?
> > > 
> > > Actually systemd-remount-fs.service uses After=local-fs-pre.target
> > > anyway, so ordering before l-f-p.t should be nough.
> > 
> > Hm. In git (v215-651-g41488fe), it is
> > 
> > Before=local-fs-pre.target local-fs.target shutdown.target
> > Wants=local-fs-pre.target
> 
> Ah, right. This is actually correct here. We want to make sure that the
> root fs is remounted before we mount the other units, since this might
> required creating additional directories to mount things on...
> 
> There are two more complications: 
> 
> a) if you want to make use of local-fs-pre.target you actually have to
>    pull it in, it's a "passive" unit. See systemd.special(5).
> 
> b) You want to run your stuff before fsck is run on the devices, so that
>    you don't end up interrupting an fsck that is half in progress.
> 
> To put this together, in your unit file you need:
> 
>     Before=local-fs-pre.target systemd-remount-fs.service 
> systemd-fsck-root.service
>     Wants=local-fs-pre.target
> 
> That should be enough. (You don't need to individually order the
> systemd-fsck@.service instances for the other devices after your
> service, since they are already ordered after systemd-fsck-root.service,
> and you order yourself before that, so all is good).
> 
> Lennart

One more question. What about setups with no initrd and read-write rootfs?
In such cases, the resume unit must silently skip itself.

ConditionPathIsReadWrite=!/ doesn't seem to be useful here: with initramfs
this check will yield a false-negative.

This can be solved by introducing two resume units (say,
systemd-resume@.service and initrd-resume@.service), first with

    Before=local-fs-pre.target systemd-remount-fs.service 
systemd-fsck-root.service
    Wants=local-fs-pre.target
    ConditionPathIsReadWrite=!/

and the second one with

    ConditionPathExists=/etc/initrd-release
    # something else ?

BTW... are you sure that the second variant (in initramfs) does not require 
something
to order before sysroot.mount and all fsck units?..

-- 
Ivan Shapovalov / intelfx /

Attachment: signature.asc
Description: This is a digitally signed message part.

_______________________________________________
systemd-devel mailing list
systemd-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/systemd-devel

Reply via email to