walk - descend a directory hierarchy
 Twalk tag
 Rwalk tag
request carries as arguments an existing fid
(which must not be in use unless it is the same as
) that the client wishes to associate with the result of traversing
the directory hierarchy by `walking' the hierarchy using the successive path
name elements wname
. The fid
must represent a directory unless
zero path name elements are specified.
must be valid in the current session and must not have been
opened for I/O by an open
message. If the full
sequence of nwname
elements is walked successfully, newfid
represent the file that results. If not, newfid
be unaffected. However, if newfid
is in use or otherwise illegal, an
The name ``..
'' (dot-dot) represents the parent directory. The name
'' (dot), meaning the current directory, is not used in the
It is legal for nwname
to be zero, in which case newfid
represent the same file as fid
and the walk
succeed; this is equivalent to walking to dot. The rest of this discussion
is greater than zero.
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 intro
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
Otherwise, the walk will return an Rwalk
qids corresponding, in order, to the files that are visited by
successful elementwise walks; nwqid
or the index of the first elementwise walk that failed.
The value of nwqid
cannot be zero unless nwname
is zero. Also,
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
of the name ``..
'' in the root directory of a server is
equivalent to a walk with no name elements.
is the same as fid
, the above discussion applies, with
the obvious difference that if the walk changes the state of newfid
also changes the state of fid
; and if newfid
is unaffected, then
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
(3). 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.
(3)) generates walk messages. One or more walk
messages may be generated by any call that evaluates file names: