• C
    NFS: Make close(2) asynchronous when closing NFS O_DIRECT files · f895c53f
    Chuck Lever 提交于
    For NFSv2 and v3:
    
    O_DIRECT writes are always synchronous, and aren't cached, so nothing
    should be flushed when closing an NFS O_DIRECT file descriptor.  Thus
    there are no write errors to report on close(2).
    
    In addition, there's no cached data to verify on the next open(2),
    so we don't need clean GETATTR results at close time to compare with.
    
    Thus, there's no need for the nfs_revalidate_inode() call when closing
    an NFS O_DIRECT file.  This reduces the number of synchronous
    on-the-wire requests for a simple open-write-close of an NFS O_DIRECT
    file by roughly 20%.
    
    For NFSv4:
    
    Call nfs4_do_close() with wait set to zero when closing an NFS
    O_DIRECT file.  The CLOSE will go on the wire, but the application
    won't wait for it to complete.
    Signed-off-by: NChuck Lever <chuck.lever@oracle.com>
    Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
    f895c53f
inode.c 44.4 KB