Messages in this thread | | | From | Kyle Moffett <> | Subject | Re: Which process context does /sbin/hotplug run in? | Date | Mon, 15 May 2006 00:17:44 -0400 |
| |
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@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |