[systemd-devel] tentative state and unmount on mapper

Lennart Poettering lennart at poettering.net
Tue May 19 03:28:29 PDT 2015

On Tue, 19.05.15 10:30, Martin Pitt (martin.pitt at ubuntu.com) wrote:

> Hello Umut,
> Umut Tezduyar Lindskog [2015-05-19  8:23 +0200]:
> > On Mon, May 18, 2015 at 11:02 PM, Lennart Poettering <lennart at poettering.net> wrote:
> > > The "tentative" state is nothing the system should continously leave
> > > devices in. It's a state only used for very short time windows, before
> > > udev is up, or when a pseudo device (like a loopback block device) is
> > > created and immediately mounted. If you have booted up and see a
> > > device in "tentative" state, then something is really *wrong*.
> Note that it's a permanent state in containers where you don't
> actually have udev. 


Martin, as mentioned earlier: current systemd will not bother with
device units at all in containers, and they hence will not be in
"tentative" state either.

If you run systemd git in a container and try to enqueue a job for a
device you get this:

    # systemctl start dev-foobar.device
    Operation on or unit type of dev-foobar.device not supported on this system.
Moreover, systemd will not generate any .device dependencies either in
this case. 

All this depends on /sys being mounted read-only. And that's the only
scheme we support with systemd in containers. If you mount /sys
writable anyway, then the fucked up .device situation is the least of
your problems really.

To make this clear: if *zero* interest in making systemd work in
containers where /sys is writable. This is out of focus for us really.

Or to say this a different way: if you leave /sys writable in a
container, then we assume that you run in a scheme where /sys (and the
related uevent netlink stuff) is fully virtualized, like it might be
on some future kernel, where .device units and udevd would then make
sense. But on the current kernel that's not the case, and to indicate
that to systemd in the container you have to mount /sys read-only.

> My very first patch avoided creating these device
> units at all, to simplify state handling; but Lennart nack'ed this as
> we want devices/mounts to exist uniformly on real iron and
> containers,


As mentioned before and above: the way I see it .device units should
*not* exist in containers, as the kernel doesn't virtualize devices
for them. 

> which is certainly a valid point. So if we need the .devices at all,
> they need to be "tentative", as they can't be "plugged" (not present
> in the container /dev) nor "dead" (as that would immediately unmount
> everything).


There will not be "tentative" nor "plugged" device units in
containers, because there will be none at all!


Lennart Poettering, Red Hat

More information about the systemd-devel mailing list