Linux NFS development
 help / color / mirror / Atom feed
From: Jeff Layton <jlayton@kernel.org>
To: trondmy@gmail.com, linux-nfs@vger.kernel.org
Cc: chuck.lever@oracle.com
Subject: Re: [PATCH 00/19] OPEN optimisations and Attribute delegations
Date: Fri, 14 Jun 2024 08:34:32 -0400	[thread overview]
Message-ID: <b9f5ae349c6ff90b90aff43b86bc3de8b8a9f863.camel@kernel.org> (raw)
In-Reply-To: <20240613041136.506908-1-trond.myklebust@hammerspace.com>

On Thu, 2024-06-13 at 00:11 -0400, trondmy@gmail.com wrote:
> From: Trond Myklebust <trond.myklebust@hammerspace.com>
> 
> 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.
> 
> Lance Shelton (1):
>   NFS: Add a generic callback to return the delegation
> 
> 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
>   Return the delegation when deleting the sillyrenamed file
> 
>  fs/nfs/callback.h         |   5 +-
>  fs/nfs/callback_proc.c    |  14 ++-
>  fs/nfs/callback_xdr.c     |  39 ++++++-
>  fs/nfs/delegation.c       |  59 ++++++----
>  fs/nfs/delegation.h       |  45 +++++++-
>  fs/nfs/dir.c              |   2 +-
>  fs/nfs/file.c             |   4 +-
>  fs/nfs/inode.c            | 104 +++++++++++++++--
>  fs/nfs/nfs3proc.c         |  10 +-
>  fs/nfs/nfs4proc.c         | 230 ++++++++++++++++++++++++++++----------
>  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, 586 insertions(+), 145 deletions(-)
> 

This all looks pretty reasonable except for the last two patches.
Probably, they should be squashed together since there is no caller of
->return_delegation until the last one. There is also nothing
describing the changes there, and I think it could use some explanation
(though I think I get what you're doing).

Finally, I suppose we need to look at implementing support delstid in
knfsd as well. I'll open a new feature request for that the linux-nfs
project on github.

In any case, you can add:

Reviewed-by: Jeff Layton <jlayton@kernel.org>

  parent reply	other threads:[~2024-06-14 12:34 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-06-13  4:11 [PATCH 00/19] OPEN optimisations and Attribute delegations trondmy
2024-06-13  4:11 ` [PATCH 01/19] NFSv4: Clean up open delegation return structure trondmy
2024-06-13  4:11   ` [PATCH 02/19] NFSv4: Refactor nfs4_opendata_check_deleg() trondmy
2024-06-13  4:11     ` [PATCH 03/19] NFSv4: Add new attribute delegation definitions trondmy
2024-06-13  4:11       ` [PATCH 04/19] NFSv4: Plumb in XDR support for the new delegation-only setattr op trondmy
2024-06-13  4:11         ` [PATCH 05/19] NFSv4: Add CB_GETATTR support for delegated attributes trondmy
2024-06-13  4:11           ` [PATCH 06/19] NFSv4: Add a flags argument to the 'have_delegation' callback trondmy
2024-06-13  4:11             ` [PATCH 07/19] NFSv4: Add support for delegated atime and mtime attributes trondmy
2024-06-13  4:11               ` [PATCH 08/19] NFSv4: Add recovery of attribute delegations trondmy
2024-06-13  4:11                 ` [PATCH 09/19] NFSv4: Add a capability for delegated attributes trondmy
2024-06-13  4:11                   ` [PATCH 10/19] NFSv4: Enable attribute delegations trondmy
2024-06-13  4:11                     ` [PATCH 11/19] NFSv4: Delegreturn must set m/atime when they are delegated trondmy
2024-06-13  4:11                       ` [PATCH 12/19] NFSv4: Fix up delegated attributes in nfs_setattr trondmy
2024-06-13  4:11                         ` [PATCH 13/19] NFSv4: Don't request atime/mtime/size if they are delegated to us trondmy
2024-06-13  4:11                           ` [PATCH 14/19] NFSv4: Add support for the FATTR4_OPEN_ARGUMENTS attribute trondmy
2024-06-13  4:11                             ` [PATCH 15/19] NFSv4: Detect support for OPEN4_SHARE_ACCESS_WANT_OPEN_XOR_DELEGATION trondmy
2024-06-13  4:11                               ` [PATCH 16/19] NFSv4: Add support for OPEN4_RESULT_NO_OPEN_STATEID trondmy
2024-06-13  4:11                                 ` [PATCH 17/19] NFSv4: Ask for a delegation or an open stateid in OPEN trondmy
2024-06-13  4:11                                   ` [PATCH 18/19] NFS: Add a generic callback to return the delegation trondmy
2024-06-13  4:11                                     ` [PATCH 19/19] Return the delegation when deleting the sillyrenamed file trondmy
2024-06-14 16:32                         ` [PATCH 12/19] NFSv4: Fix up delegated attributes in nfs_setattr Anna Schumaker
2024-06-14 19:59                           ` Trond Myklebust
2024-06-15  0:25                             ` Trond Myklebust
2024-06-13 20:26               ` [PATCH 07/19] NFSv4: Add support for delegated atime and mtime attributes Anna Schumaker
2024-06-14 12:34 ` Jeff Layton [this message]
2024-06-15  6:27   ` [PATCH 00/19] OPEN optimisations and Attribute delegations Christoph Hellwig
2024-06-17  1:39     ` Trond Myklebust
2024-06-17  5:35       ` hch
2024-06-15  6:25 ` Christoph Hellwig
2024-06-17  1:28   ` Trond Myklebust
2024-06-17  5:37     ` hch

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=b9f5ae349c6ff90b90aff43b86bc3de8b8a9f863.camel@kernel.org \
    --to=jlayton@kernel.org \
    --cc=chuck.lever@oracle.com \
    --cc=linux-nfs@vger.kernel.org \
    --cc=trondmy@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox