lkml.org 
[lkml]   [2006]   [May]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
SubjectRe: Which process context does /sbin/hotplug run in?
Date
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/

\
 
 \ /
  Last update: 2006-05-15 06:20    [W:0.105 / U:0.252 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site