Re: Which process context does /sbin/hotplug run in?

From: Kyle Moffett
Date: Mon May 15 2006 - 00:17:22 EST


On May 14, 2006, at 20:08, Rob Landley wrote:
On Saturday 13 May 2006 3:24 am, Kyle Moffett wrote:
/
/var
/var/sub
/var/sub2
/var/sub2/sub
/var/sub2/sub2

The recursion ends there. Basically with the first bind mount you attach the same instance of tmpfs to /tmp and /var, then you move the tmpfs from /tmp to the "/sub2" directory in the "/var" tmpfs _mountpoint_. It's kind of confusing behavior; but the directory tree and the mount tree are basically kind of separate entities in a sense.

I can CD into them endlessly, and both "ls -lR" and "find ." report cycles in the tree, which surprised me that they had a specific error message for that, actually. Good enough for me. :)

Odd, I'm unable to replicate that behavior here. If I run "ls /var/ sub2/sub2" I don't get any entries. Find and ls -lR have error messages of that because it can occasionally be triggered with symlinks and such.

And I'm not _complaining_ about it. Just fiddling around with fun stuff. If I get really bored I'll figure a way to split the tree so there are two completely unconnected mount trees in different processes. (Get a private namespace that's chrooted into something that somebody else does a umount -l on from their space. Or without using umount -l, just have two processes chroot into other mount points which should theoretically garbage collect the old root if no processes still references it, which presumably means one of the processes is init...)

Well, actually, it isn't that hard. Just run something like this:

#! /bin/sh
mkdir /a
mkdir /b
mount -t tmpfs tmpfs /a
mount -t tmpfs tmpfs /b
mkdir /a/old
mkdir /b/old
tool_to_fork_in_new_namespace sh -c "pivot_root /a /a/old && umount - l /a/old && read"
pivot_root /b /b/old && umount -l /b/old && read

All you need to write is tool_to_fork_in_new_namespace which does clone(CLONE_NEWNS) followed by exec().

Cheers,
Kyle Moffett

--
Simple things should be simple and complex things should be possible
-- Alan Kay



-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/