Hi Trond, Is it possible to share some numbers of some benchmarks that demonstrate advantages of this patch series? like this many getatts/other ops without patches and this many with? On Sun, Jun 16, 2024 at 9:25 PM <trondmy@xxxxxxxxxx> wrote: > > From: Trond Myklebust <trond.myklebust@xxxxxxxxxxxxxxx> > > Now that https://datatracker.ietf.org/doc/draft-ietf-nfsv4-delstid/ is > mostly done with the review process, it is time to look at pushing the > client implementation that we've been working on upstream. > > The following patch series therefore adds support for the NFSv4.2 > extension to OP_OPEN to allow the client to request that the server > return either an open stateid or a delegation instead of always sending > the open stateid whether or not a delegation is returned. > This allows us to optimise away CLOSE, and hence makes small or cached > file access significantly more efficient. > > It also adds support for attribute delegations, which allow the client > to manage the atime and mtime, and simply inform the server at file > close time what the values should be. This means that most GETATTR > operations to retrieve the atime/mtime values while the file is under > I/O can be optimised away. > > Finally, we also add support for the detection mechanism that allows the > client to determine whether or not the server supports the above > functionality. > > v2: > - Fix issues when compiling without CONFIG_NFS_V4 > - Update "NFSv4: Fix up delegated attributes in nfs_setattr" to fix > regressions pointed out by Anna Schumaker > - Squash commits "NFSv4: Ask for a delegation or an open stateid in > OPEN" and "Return the delegation when deleting the sillyrenamed file" > as suggested by Jeff Layton > - Add "NFSv4: Don't send delegation-related share access modes to > CLOSE" > > Lance Shelton (1): > Return the delegation when deleting sillyrenamed files > > Trond Myklebust (18): > NFSv4: Clean up open delegation return structure > NFSv4: Refactor nfs4_opendata_check_deleg() > NFSv4: Add new attribute delegation definitions > NFSv4: Plumb in XDR support for the new delegation-only setattr op > NFSv4: Add CB_GETATTR support for delegated attributes > NFSv4: Add a flags argument to the 'have_delegation' callback > NFSv4: Add support for delegated atime and mtime attributes > NFSv4: Add recovery of attribute delegations > NFSv4: Add a capability for delegated attributes > NFSv4: Enable attribute delegations > NFSv4: Delegreturn must set m/atime when they are delegated > NFSv4: Fix up delegated attributes in nfs_setattr > NFSv4: Don't request atime/mtime/size if they are delegated to us > NFSv4: Add support for the FATTR4_OPEN_ARGUMENTS attribute > NFSv4: Detect support for OPEN4_SHARE_ACCESS_WANT_OPEN_XOR_DELEGATION > NFSv4: Add support for OPEN4_RESULT_NO_OPEN_STATEID > NFSv4: Ask for a delegation or an open stateid in OPEN > NFSv4: Don't send delegation-related share access modes to CLOSE > > fs/nfs/callback.h | 5 +- > fs/nfs/callback_proc.c | 14 ++- > fs/nfs/callback_xdr.c | 39 +++++- > fs/nfs/delegation.c | 67 ++++++---- > fs/nfs/delegation.h | 45 ++++++- > fs/nfs/dir.c | 2 +- > fs/nfs/file.c | 4 +- > fs/nfs/inode.c | 86 +++++++++++-- > fs/nfs/nfs3proc.c | 10 +- > fs/nfs/nfs4proc.c | 248 ++++++++++++++++++++++++++++---------- > fs/nfs/nfs4xdr.c | 131 +++++++++++++++----- > fs/nfs/proc.c | 10 +- > fs/nfs/read.c | 3 + > fs/nfs/unlink.c | 2 + > fs/nfs/write.c | 11 +- > include/linux/nfs4.h | 11 ++ > include/linux/nfs_fs_sb.h | 2 + > include/linux/nfs_xdr.h | 45 ++++++- > include/uapi/linux/nfs4.h | 4 + > 19 files changed, 589 insertions(+), 150 deletions(-) > > -- > 2.45.2 > >