The PNFSD Logfile Format

The line layout

Each line in the pnfsd logfile has a similar basic format. They start with
<date> <time> <ClientIP>-<UID>-<GID> - <command>        
followed by the neccessary argument for that command and they all end with the database return code in brackets followed by the nfs return code after the arrow.
(<database rc>) -> <nfs rc>
The database return codes are defined in dbfs/md2types.h and the nfs return code in the corresponding rfc. There is only one exception. The nfs return code (-222) indicates the request was not answered. This return code is used to make the client wait for a resource without blocking all the pnfsd's by the clients retries.

The nfs handle

The most important argument type, which is used by all requests, is the nfs handle.
<PnfsID>-<Pnfs Permission>
The PnfsID is the object ID the the pnfs database. The pnfs permission contains the information about the current I/O mode and requested PNFS Layer of the object. Let the last two digests of the permission be <m><l>, the <l> specifies the layer, which can be 0...7. If <m> is zero I/O is enabled otherwise disabled for level zero.

The commands in detail

lookup
  lookup dir <dir handle> name  <object name> : <result ID> <attributes>
  
The attributes contain the type(t), the mode(m) and the inode(i) of the result object.
create
  create dir <dir handle> name  <object name> <attributes> : <result ID> 
  
The attributes contain the user id (uid) , the group id (gid), the size, the mode bits and the last access and last modification times.
write
  write <object handle> <offset[hex]> <length[hex]>
  
read
  read <object handle> <offset[hex]> <length[hex]>
  
setattr
  setattr <object handle> <attributes>
  
The attributes contain the user id (uid) , the group id (gid), the size, the mode bits and the last access and last modification times.
getattr
  setattr <object handle> <attributes>
  
The attributes contain the type (t ), mode (m), size (s) , inode (i) as well as the creation, modification and access time (cmat).