summaryrefslogtreecommitdiff
path: root/hurd/virtualfilesystem.mdwn
blob: 1f4e458fd4b21afc9cc7eb9fd31387846f1fdaa2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
[[license text="""
Copyright © 2007 Free Software Foundation, Inc.

Permission is granted to copy, distribute and/or modify this document under the
terms of the GNU Free Documentation License, Version 1.2 or any later version
published by the Free Software Foundation; with no Invariant Sections, no
Front-Cover Texts, and no Back-Cover Texts.  A copy of the license is included
in the section entitled [[GNU_Free_Documentation_License|/fdl.txt]].

By contributing to this page, you agree to assign copyright for your
contribution to the Free Software Foundation.  The Free Software Foundation
promises to always use either a verbatim copying license or a free
documentation license when publishing your contribution.  We grant you back all
your rights under copyright, including the rights to copy, modify, and
redistribute your contributions.
"""]]

Path names are resolved using a distributed protocol.
No single entity is responsible for the resolution of
path names.  A file system server (a [[translator]])
attaches to translators (fs.defs:file_set_translator).

When a process resolves an aboslute path, it queries
its root file system server by invoking the fs.defs:dir_lookup
method in the capability in its root directory slot.  The
file system server resolves as much as it knows about locally
and when it encounters a translator, it replies to the client
indicating how much it resolved and where to continue its
lookup.  This continues until the name is fully resolved
or an error occurs.  The same happens for relative path
names but a different capability is used.

For a more detailed explanation of the protocol, look at the section
2.2 of the [[critique]].