walk request carries as arguments an existing
fid and a proposed
newfid (which must not be in use unless it is the same as
fid) that the client wishes to associate with
the result of traversing the directory hierarchy
by walking the hierarchy using the successive path name
fid must represent a directory unless zero path name elements are specified.
fid must be valid in the current session and must not have been opened for I/O
If the full sequence of
nwname elements is walked successfully,
newfid will represent the file that results.
fid) will be unaffected.
newfid is in use or otherwise illegal, an
Rerror is returned.
.. (dot-dot) represents the parent directory.
. (dot), meaning the current directory, is not used in the protocol.
It is legal for
nwname to be zero, in which case
newfid will represent the same file as
fid and the
walk will usually succeed; this is equivalent to walking to dot.
The rest of this discussion assumes
nwname is greater than zero.
nwname path name elements
wname are walked in order, elementwise.
For the first elementwise walk
to succeed, the file identified by
fid must be a directory,
and the implied user of the request must have permission
to search the directory (see
Subsequent elementwise walks have equivalent restrictions
applied to the implicit fid that results from the preceding elementwise walk.
If the first element cannot be walked for any reason,
Rerror is returned.
Otherwise, the walk will return an
Rwalk message containing
nwqid qids corresponding, in order, to the files that are visited by the
nwqid successful elementwise walks;
nwqid is therefore either
nwname or the index of the first elementwise walk that failed.
The value of
nwqid cannot be zero unless
nwname is zero.
nwqid will always be less than or equal to
nwname. Only if it is equal, however, will
newfid be affected, in which case
newfid will represent the file
reached by the final elementwise walk requested in the message.
walk of the name
.. in the root directory of a server is equivalent to a walk with no name elements.
newfid is the same as
fid, the above discussion applies, with the obvious difference
that if the walk changes the state of
newfid, it also changes the state of
fid; and if
newfid is unaffected, then
fid is also unaffected.
To simplify the implementation of the servers, a maximum of sixteen name elements or qids
may be packed in a single message.
This constant is called
Despite this restriction, the system imposes no limit on the number of elements in a file name,
only the number that may be transmitted in a single message.