[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: bind() and mount() confusion
- To: srb@dante.mh.lucent.com
- Subject: Re: bind() and mount() confusion
- From: Greg Noel <greg@qualcomm.com>
- Cc: inferno@artnet.com.br
I've read the mail thread and the whitepaper on namespaces and I think I understand both the distinction between them and how they work. I think the confusion is rooted in the way that bind seems to add new namespace, when it really doesn't. Perhaps this is a philosophical distinction, but Inferno really has _two_ namespaces. One is the traditional slash-rooted directory tree. The other is a sharp-rooted directory tree. (If you don't think that's the case, try navigating it: for example, "cd '#C'; ls" works just fine.) Extensions to the slash-rooted tree are done by mounting a user-level thread that serves some subtree. Similarly, extensions to the sharp- rooted tree are done by mounting a kernel-level thread that serves the subtree; all of these threads are mounted magically by the kernel. (I haven't tried to see if one can mount user-level threads in the sharp-rooted tree; it'd be an interesting experiment, but it ought to work.) If one has this model, then it's more obvious that bind simply splices the already-existing namespace together. There is the difference that a bind to a sharp-rooted tree does seem to start another kernel thread to serve the namespace so that you get a fresh copy of the subtree. I don't think this distinction is significant enough to upset the overall model, however. But it does give rise to a question that perhaps the Inferno developers could answer: Why two namespaces? Things would seem to work just as well if the kernel magically mounted all the kernel threads in their default location. And for those resources that justify having distinct copies, have a name that clones a new subtree. Hope this helps, -- Greg Noel, Qualcomm
- Prev by Date: Re: open for business
- Next by Date: Re: bind() and mount() confusion
- Prev by thread: Re: bind() and mount() confusion
- Next by thread: Re: bind() and mount() confusion
- Index(es):