Skip to content
  • Sripathi Kodi's avatar
    9p: Implement client side of setattr for 9P2000.L protocol. · 87d7845a
    Sripathi Kodi authored
    
    
        SYNOPSIS
    
          size[4] Tsetattr tag[2] attr[n]
    
          size[4] Rsetattr tag[2]
    
        DESCRIPTION
    
          The setattr command changes some of the file status information.
          attr resembles the iattr structure used in Linux kernel. It
          specifies which status parameter is to be changed and to what
          value. It is laid out as follows:
    
             valid[4]
                specifies which status information is to be changed. Possible
                values are:
                ATTR_MODE       (1 << 0)
                ATTR_UID        (1 << 1)
                ATTR_GID        (1 << 2)
                ATTR_SIZE       (1 << 3)
                ATTR_ATIME      (1 << 4)
                ATTR_MTIME      (1 << 5)
                ATTR_ATIME_SET  (1 << 7)
                ATTR_MTIME_SET  (1 << 8)
    
                The last two bits represent whether the time information
                is being sent by the client's user space. In the absense
                of these bits the server always uses server's time.
    
             mode[4]
                File permission bits
    
             uid[4]
                Owner id of file
    
             gid[4]
                Group id of the file
    
             size[8]
                File size
    
             atime_sec[8]
                Time of last file access, seconds
    
             atime_nsec[8]
                Time of last file access, nanoseconds
    
             mtime_sec[8]
                Time of last file modification, seconds
    
             mtime_nsec[8]
                Time of last file modification, nanoseconds
    
    Explanation of the patches:
    --------------------------
    
    *) The kernel just copies relevent contents of iattr structure to
       p9_iattr_dotl structure and passes it down to the client. The
       only check it has is calling inode_change_ok()
    *) The p9_iattr_dotl structure does not have ctime and ia_file
       parameters because I don't think these are needed in our case.
       The client user space can request updating just ctime by calling
       chown(fd, -1, -1). This is handled on server side without a need
       for putting ctime on the wire.
    *) The server currently supports changing mode, time, ownership and
       size of the file.
    *) 9P RFC says "Either all the changes in wstat request happen, or
       none of them does: if the request succeeds, all changes were made;
       if it fails, none were."
       I have not done anything to implement this specifically because I
       don't see a reason.
    
    Signed-off-by: default avatarSripathi Kodi <sripathik@in.ibm.com>
    Signed-off-by: default avatarVenkateswararao Jujjuri <jvrao@linux.vnet.ibm.com>
    Signed-off-by: default avatarEric Van Hensbergen <ericvh@gmail.com>
    87d7845a