mbox series

[RFC,0/9] async COPY fixes

Message ID 20241008134719.116825-11-cel@kernel.org (mailing list archive)
Headers show
Series async COPY fixes | expand

Message

Chuck Lever Oct. 8, 2024, 1:47 p.m. UTC
From: Chuck Lever <chuck.lever@oracle.com>

Hi -

There are edge cases on both the Linux NFS server and client that
can be improved to make notification of COPY completion reliable.
This series accomplishes two things, primarily:

1. Add support for OFFLOAD_STATUS to the Linux NFS client

2. Modify NFSD to keep the copy state ID around so that
   OFFLOAD_STATUS can find the completed COPY

That should be enough to make async COPY reliable so that it can be
enabled again in NFSD. I'd like to shoot for doing that in v6.13.

Due to other bugs and issues, this has unfortunately been somewhat
of a background task lately, so any independent testing would be
greatly appreciated.

When we agree that these are ready, I can split them up so they can
be merged independently via the client and server trees.

Chuck Lever (9):
  NFS: CB_OFFLOAD can return NFS4ERR_DELAY
  NFSD: Free async copy information in nfsd4_cb_offload_release()
  NFSD: Handle an NFS4ERR_DELAY response to CB_OFFLOAD
  NFS: Fix typo in OFFLOAD_CANCEL comment
  NFS: Implement NFSv4.2's OFFLOAD_STATUS XDR
  NFS: Rename struct nfs4_offloadcancel_data
  NFS: Implement NFSv4.2's OFFLOAD_STATUS operation
  NFS: Use NFSv4.2's OFFLOAD_STATUS operation
  NFS: Refactor trace_nfs4_offload_cancel

 fs/nfs/callback_proc.c    |   2 +-
 fs/nfs/nfs42proc.c        | 198 +++++++++++++++++++++++++++++++++++---
 fs/nfs/nfs42xdr.c         |  88 ++++++++++++++++-
 fs/nfs/nfs4proc.c         |   3 +-
 fs/nfs/nfs4trace.h        |  11 ++-
 fs/nfs/nfs4xdr.c          |   1 +
 fs/nfsd/nfs4proc.c        |  26 +++--
 fs/nfsd/xdr4.h            |   4 +
 include/linux/nfs4.h      |   1 +
 include/linux/nfs_fs_sb.h |   1 +
 include/linux/nfs_xdr.h   |   5 +-
 11 files changed, 311 insertions(+), 29 deletions(-)

Comments

Chuck Lever III Oct. 8, 2024, 1:51 p.m. UTC | #1
> On Oct 8, 2024, at 9:47 AM, cel@kernel.org wrote:
> 
> From: Chuck Lever <chuck.lever@oracle.com>
> 
> Hi -
> 
> There are edge cases on both the Linux NFS server and client that
> can be improved to make notification of COPY completion reliable.
> This series accomplishes two things, primarily:
> 
> 1. Add support for OFFLOAD_STATUS to the Linux NFS client
> 
> 2. Modify NFSD to keep the copy state ID around so that
>   OFFLOAD_STATUS can find the completed COPY
> 
> That should be enough to make async COPY reliable so that it can be
> enabled again in NFSD. I'd like to shoot for doing that in v6.13.
> 
> Due to other bugs and issues, this has unfortunately been somewhat
> of a background task lately, so any independent testing would be
> greatly appreciated.

A branch containing these patches, plus one to re-enable async
COPY in NFSD, is available here:

https://git.kernel.org/pub/scm/linux/kernel/git/cel/linux.git/log/?h=fix-async-copy


> When we agree that these are ready, I can split them up so they can
> be merged independently via the client and server trees.
> 
> Chuck Lever (9):
>  NFS: CB_OFFLOAD can return NFS4ERR_DELAY
>  NFSD: Free async copy information in nfsd4_cb_offload_release()
>  NFSD: Handle an NFS4ERR_DELAY response to CB_OFFLOAD
>  NFS: Fix typo in OFFLOAD_CANCEL comment
>  NFS: Implement NFSv4.2's OFFLOAD_STATUS XDR
>  NFS: Rename struct nfs4_offloadcancel_data
>  NFS: Implement NFSv4.2's OFFLOAD_STATUS operation
>  NFS: Use NFSv4.2's OFFLOAD_STATUS operation
>  NFS: Refactor trace_nfs4_offload_cancel
> 
> fs/nfs/callback_proc.c    |   2 +-
> fs/nfs/nfs42proc.c        | 198 +++++++++++++++++++++++++++++++++++---
> fs/nfs/nfs42xdr.c         |  88 ++++++++++++++++-
> fs/nfs/nfs4proc.c         |   3 +-
> fs/nfs/nfs4trace.h        |  11 ++-
> fs/nfs/nfs4xdr.c          |   1 +
> fs/nfsd/nfs4proc.c        |  26 +++--
> fs/nfsd/xdr4.h            |   4 +
> include/linux/nfs4.h      |   1 +
> include/linux/nfs_fs_sb.h |   1 +
> include/linux/nfs_xdr.h   |   5 +-
> 11 files changed, 311 insertions(+), 29 deletions(-)
> 
> -- 
> 2.46.2
> 
> 

--
Chuck Lever