Hello Jiri,

here are a few of my comments to your VFS proposal. In general, I consider your proposal reasonable and interesting. I am really looking forward to some initial prototype.

1. A task can have its own private “view” of all the resources it accesses via 
VFS.
b. Hurd and Plan9 made some steps towards creating customized namespaces for 
processes, though the basic usage pattern matches that of legacy systems.

This is an important observation: Many systems already have some support for file system namespaces (even plain Linux kernel supports them on a very basic level -- there is still one global file system hierarchy, but different processes can have different views on the tree). But they are used only rarely in practice. The only prominent use I can think of is for the purposes of single-kernel virtualization (containers).

Therefore the crucial point here is not only to implement the namespace mechanisms, but more importantly to design the usage patterns and policies for such mechanisms and wrap them in convenient run-time services.

My personal experience is that per-file permissions are non-obvious, easy to 
get wrong and also a complete mess when sharing files among systems with 
different sets of users. Protection based on location accessibility is natural 
for humans (if you want some thing inaccessible, you put it in an inaccessible 
place; putting a sticker with your name on it won’t stop thieves, thick steel 
door usually will).

This is also an interesting idea, related to the capability-based systems (as already mentioned in this thread).

Again, my concern here would be very practical: Traditional i-node permissions make it easy to persistently store the complete effective permission set of a file system (and recreate it in memory when accessing the file system). The problem of sharing files among systems can be solved by not using local identifiers of subjects (e.g. users), but by using globally unique identifiers.

I am not saying that the problem of persistent storage and recreation of the effective permission set cannot be solved in capability-based systems. I am just saying that you should perhaps elaborate on it, too, because the solution needs to be designed properly (both on the level of mechanisms and on the level of policies).

Their addressing uses a notation similar to that of Plan9 (where it only covers 
device namespaces); paths start with the ‘#’ symbol

I know that you striked-through this part, but I would still like to propose an alternative. My idea of how one might address the imported trees is based on URLs. I.e. an imported tree can be addressed using an URL scheme in a form of:

namespace://<namespace>/<path>

Of course, the primary tree might be addressed using the traditional (and implicit) URL scheme:

file://<path>

Designing the addressing mechanism around URLs might be quite beneficial, because it allows to extend the addressing naturally to other local and remote resources (local location service nodes, remote network file systems, HTTP, you name it).


M.D.

_______________________________________________
HelenOS-devel mailing list
[email protected]
http://lists.modry.cz/cgi-bin/listinfo/helenos-devel

Reply via email to