[PATCH v4 00/15] Optimise away unnecessary NFSv4 post-op attributes

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]




The following set of patches adds support for simulating 'change attributes'
in NFSv2/v3 by converting the file ctime into a 64-bit value that can
be stored in inode->i_version.
With this change, we can then proceed to simplify the attribute cache
consistency code so that it only uses the change attribute to determine
whether or not the data and attribute caches are consistent.

Once the cache consistency only depends on the change attribute, we
can optimise away unnecessary requests for the directory post-op
attributes on NFSv4 OPEN, CREATE, REMOVE, LINK and RENAME compounds,
since those operations all supply a 'change_info4' field describing
the directory change attribute.

Finally, we can stop requesting cache consistency attributes altogether
for O_DIRECT and delegated WRITEs, as well as for all COMMIT calls.

v2: Don't request cache consistency attributes on writes and commits
    Delegreturn only needs the cache consistency bitmask
    Simplify the simulated change attribute calculation for v2/v3
v3: Fix a race in delegreturn
v4: Fix an Oops in nfs4_write_done_cb because data->res.fattr was not set.
    COMMIT does not need to return post-op attributes at all.
    Don't force page cache revalidations when holding a delegation
    Optimise away nfs_check_inode_attributes() when holding a delegation
    Always trust the PageUptodate flag when we have a delegation

Trond Myklebust (15):
  NFSv4: Fix a typo in NFS4_enc_link_sz
  NFSv4: Delegreturn only needs the cache consistency bitmask
  NFSv4: Retrieve attributes _before_ calling delegreturn
  NFS: Don't force page cache revalidations when holding a delegation
  NFS: Optimise away nfs_check_inode_attributes() when holding a
    delegation
  NFS: Always trust the PageUptodate flag when we have a delegation
  NFS: Simplify nfs_fhget()
  NFS: Change attribute updates should set NFS_INO_REVAL_PAGECACHE
  NFSv2/v3: Simulate the change attribute
  NFS: Simplify the cache invalidation code
  NFSv4: Simplify the NFSv4 OPEN compound
  NFSv4: Simplify the NFSv4 CREATE compound
  NFSv4: Simplify the NFSv4 REMOVE, LINK and RENAME compounds
  NFSv4: Don't request cache consistency attributes on some writes
  NFSv4: COMMIT does not need post-op attributes

 fs/nfs/client.c         |    2 +-
 fs/nfs/inode.c          |   73 +++++++++++++-----------------------
 fs/nfs/internal.h       |   12 ++++++
 fs/nfs/nfs2xdr.c        |    2 +
 fs/nfs/nfs3xdr.c        |    3 +
 fs/nfs/nfs4proc.c       |   83 +++++++++++++----------------------------
 fs/nfs/nfs4xdr.c        |   94 ++++++-----------------------------------------
 fs/nfs/write.c          |   10 +++-
 include/linux/nfs_xdr.h |   11 +----
 9 files changed, 92 insertions(+), 198 deletions(-)

-- 
1.7.7.6

--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Photo]     [Yosemite Info]    [Yosemite Photos]    [POF Sucks]     [Linux Kernel]     [Linux SCSI]     [XFree86]

Add to Google Powered by Linux