Message ID | 20240905-delstid-v4-0-d3e5fd34d107@kernel.org (mailing list archive) |
---|---|
Headers | show |
Series | nfsd: implement the "delstid" draft | expand |
From: Chuck Lever <chuck.lever@oracle.com> On Thu, 05 Sep 2024 08:41:44 -0400, Jeff Layton wrote: > Sorry this has taken me a bit to re-post. I've been working on some > pynfs testcases for CB_GETATTR, and have found more bugs in our > implementation. > > This repost is based on top of Chuck's nfsd-next branch. The first two > patches fix a couple of different bugs in how we handle the change attr. > > [...] Dropped 9/11, applied the rest to nfsd-next for v6.12, thanks! [01/11] nfsd: fix initial getattr on write delegation commit: 51158790589f1ed3a98f2d590b071ea76bd0b19d [02/11] nfsd: drop the ncf_cb_bmap field commit: 95cc4b27389630394dd42a5d7e12dfc92e82e49d [03/11] nfsd: don't request change attr in CB_GETATTR once file is modified commit: 4374695a6b0ffdce0c9dce1d7833f87d5cc622b4 [04/11] nfsd: drop the nfsd4_fattr_args "size" field commit: 6cb6bcdbdf416ad24dcf430f8b88d7c38810efc2 [05/11] nfsd: have nfsd4_deleg_getattr_conflict pass back write deleg pointer commit: eecc86f5e5390c64e5f85241b8872f081dd7c520 [06/11] nfs_common: make include/linux/nfs4.h include generated nfs4.h commit: 4443c4f509e74bb91e059123eb8b42ad6fd666fd [07/11] nfsd: add support for FATTR4_OPEN_ARGUMENTS commit: 9d0b846784f084479c5beeb61458f0d38ac16f1e [08/11] nfsd: implement OPEN_ARGS_SHARE_ACCESS_WANT_OPEN_XOR_DELEGATION commit: 91556251507771f943c2f04b2ffbf517908bbb48 [09/11] fs: handle delegated timestamps in setattr_copy_mgtime (no commit info) [10/11] nfsd: add support for delegated timestamps commit: 921347aabef19b4df68d25d4327091b4a0554bac [11/11] nfsd: handle delegated timestamps in SETATTR commit: 8dd7cf087ba772634cba60ab922febae0b756271 -- Chuck Lever
Sorry this has taken me a bit to re-post. I've been working on some pynfs testcases for CB_GETATTR, and have found more bugs in our implementation. This repost is based on top of Chuck's nfsd-next branch. The first two patches fix a couple of different bugs in how we handle the change attr. I also dropped one of the patches from the last series that tried to correct how we were handling the change attr. After going over RFC8881 section 10.4.3 a few times, I think the existing code in this respect is actually correct. We advance the change attr in the inode on every CB_GETATTR, which follows the guidance in the spec. The rest of the series is more or less the same as the last one. Signed-off-by: Jeff Layton <jlayton@kernel.org> --- Changes in v4: - get attrs from correct inode when issuing write deleg - dropped some change attr handling patches that were incorrect - only request FATTR4_CHANGE in CB_GETATTR if the file isn't modified - Link to v3: https://lore.kernel.org/r/20240829-delstid-v3-0-271c60806c5d@kernel.org Changes in v3: - fix includes in nfs4xdr_gen.c - drop ATTR_CTIME_DLG flag (just use ATTR_DELEG instead) - proper handling for SETATTR (maybe? Outstanding q about stateid here) - incorporate Neil's patches for handling non-delegation leases - always return times from CB_GETATTR instead of from local vfs_getattr - fix potential races vs. mgtimes by moving ctime handling into VFS layer - Link to v2: https://lore.kernel.org/r/20240826-delstid-v2-0-e8ab5c0e39cc@kernel.org Changes in v2: - rebase onto Chuck's lkxdrgen branch, and reworked how autogenerated code is included - declare nfsd_open_arguments as a global, so it doesn't have to be set up on the stack each time - delegated timestamp support has been added - Link to v1: https://lore.kernel.org/r/20240816-delstid-v1-0-c221c3dc14cd@kernel.org --- Jeff Layton (11): nfsd: fix initial getattr on write delegation nfsd: drop the ncf_cb_bmap field nfsd: don't request change attr in CB_GETATTR once file is modified nfsd: drop the nfsd4_fattr_args "size" field nfsd: have nfsd4_deleg_getattr_conflict pass back write deleg pointer nfs_common: make include/linux/nfs4.h include generated nfs4.h nfsd: add support for FATTR4_OPEN_ARGUMENTS nfsd: implement OPEN_ARGS_SHARE_ACCESS_WANT_OPEN_XOR_DELEGATION fs: handle delegated timestamps in setattr_copy_mgtime nfsd: add support for delegated timestamps nfsd: handle delegated timestamps in SETATTR fs/attr.c | 28 +++++--- fs/inode.c | 74 ++++++++++++++++++++++ fs/nfsd/Makefile | 2 +- fs/nfsd/nfs4callback.c | 50 +++++++++++++-- fs/nfsd/nfs4proc.c | 29 ++++++++- fs/nfsd/nfs4state.c | 158 ++++++++++++++++++++++++++++++++++++++-------- fs/nfsd/nfs4xdr.c | 108 +++++++++++++++++++++++++++---- fs/nfsd/nfsd.h | 5 +- fs/nfsd/state.h | 6 +- fs/nfsd/xdr4cb.h | 10 ++- include/linux/fs.h | 2 + include/linux/nfs4.h | 7 +- include/linux/nfs_xdr.h | 5 -- include/linux/time64.h | 5 ++ include/uapi/linux/nfs4.h | 7 +- 15 files changed, 416 insertions(+), 80 deletions(-) --- base-commit: 5cd183a621de1d76daeb58379d7a2c2f8dc1143f change-id: 20240815-delstid-93290691ad11 Best regards,