stat, wstat - inquire or change file attributes
Tstat tag fid
Rstat tag fid stat
Twstat tag fid stat
Rwstat tag fid
The stat transaction inquires about the file identified by fid. The reply will contain a
116-byte (DIRLEN in <libc.h>) machine-independent directory entry laid out as follows:
name file name; must be / if the file is the root directory of the server
uid owner name
gid group name
qid.path the file server's identification for the file
qid.vers version number for given path
mode permissions and flags
atime last access time
mtime last modification time
length length of file in bytes
type for kernel use
dev for kernel use
Integers in this encoding are in little-endian order (least significant byte first). The
convM2D and convD2M routines (see fcall(2)) convert between directory entries and C
This encoding may be turned into a machine dependent Dir structure (see stat(2)) using
routines defined in fcall(2).
The mode contains permission bits as described in intro(5) and the following: 0x80000000
(this file is a directory), 0x40000000 (append only), 0x20000000 (exclusive use). Writes
to append-only files always place their data at the end of the file; the offset in the
read or write message is ignored, as is the OTRUNC bit in an open. Exclusive use files
may be open for I/O by only one fid at a time across all clients of the server. If a sec-
ond open is attempted, it draws an error. Servers may implement a timeout on the lock on
an exclusive use file: if the fid holding the file open has been unused for an extended
period (of order at least minutes), it is reasonable to break the lock and deny the ini-
tial fid further I/O.
The two time fields are measured in seconds since the epoch (Jan 1 00:00 1970 GMT). The
mtime field reflects the time of the last change of content. For a plain file, mtime is
the time of the most recent create, open with truncation, or write; for a directory it is
the time of the most recent remove, create, or wstat of a file in the directory. Simi-
larly, the atime field records the last read of the contents; also it is set whenever
mtime is set. In addition, for a directory, it is set by an attach, walk, or create, all
whether successful or not.
The length records the number of bytes in the file. Directories and most files represent-
ing devices have a conventional length of 0.
The stat request requires no special permissions.
The wstat request can change some of the file status information. The name can be changed
by anyone with write permission in the parent directory; it is an error to change the name
to that of an existing file. The mode and mtime can be changed by the owner of the file
or the group leader of the file's current group. The directory bit cannot be changed by a
wstat; the other defined permission and mode bits can. The gid can be changed: by the
owner if also a member of the new group; or by the group leader of the file's current
group if also leader of the new group (see intro(5) for more information about permissions
and users(6) for users and groups). None of the other data can be altered by a wstat. In
particular, there is no way to change the owner of a file.
A read of a directory yields an integral number of directory entries in the machine inde-
pendent encoding given above (see read(5)).
Stat messages are generated by fstat and stat.
Wstat messages are generated by fwstat and wstat.