On Fr, 03.04.20 13:48, Miklos Szeredi (miklos@xxxxxxxxxx) wrote: > > > Does that make any sense? > > > > When all mounts in the init mount namespace are unmounted and all > > remaining processes killed we switch root back to the initrd, so that > > even the root fs can be unmounted, and then we disassemble any backing > > complex storage if there is, i.e. lvm, luks, raid, … > > I think it could be done the other way round, much simpler: > > - switch back to initrd > - umount root, keeping the tree intact (UMOUNT_DETACHED) > - kill all remaining processes, wait for all to exit Nah. What I wrote above is drastically simplified. It's IRL more complex. Specific services need to be killed between certain mounts are unmounted, since they are a backend for another mount. NFS, or FUSE or stuff like that usually has some processes backing them around, and we need to stop the mounts they provide before these services, and then the mounts these services reside on after that, and so on. It's a complex dependency tree of stuff that needs to be done in order, so that we can deal with arbitrarily nested mounts, storage subsystems, and backing services. Anyway, this all works fine in systemd, the dependency logic is there. We want a more efficient way to watch mounts, that's all. Subscribing and constantly reparsing /proc/self/mountinfo is awful, that's all. Lennart -- Lennart Poettering, Berlin