Hi- After a little inebriated holiday consideration, I've come to the conclusion that returning zero verifiers to STABLE WRITE requests as reported by Rick Macklem here: https://lore.kernel.org/linux-nfs/YQXPR0101MB096857EEACF04A6DF1FC6D9BDD749@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/T/ is a regression because at least one NFS client noticed the behavior and required a code change to continue interoperating with the Linux NFS server. The behavior also seems contrary to spec language in RFC 8881 and RFC 1813. To address this, I propose the following (during v5.17 merge window): 1. Roll back "nfsd: Add a tracepoint for errors in nfsd4_clone_file_range()" "nfsd: Replace use of rwsem with errseq_t" 2. Apply "NFSD: Fix verifier returned in stable WRITEs" first so that it has a greater opportunity to be back-ported cleanly to recent kernels 3. Re-apply patches rolled back in step 1 along with additional clean-ups. Review will show that not all of these new clean-ups are necessary, but they do eliminate some technical debt that has accrued over the past few years in this area. I'm interested in review, comments, or objections. --- Chuck Lever (8): NFSD: Fix verifier returned in stable WRITEs NFSD: Clean up nfsd_vfs_write() NFSD: De-duplicate net_generic(SVC_NET(rqstp), nfsd_net_id) NFSD: De-duplicate net_generic(nf->nf_net, nfsd_net_id) NFSD: Write verifier might go backwards NFSD: Clean up the nfsd_net::nfssvc_boot field NFSD: Rename boot verifier functions NFSD: Trace boot verifier resets Trond Myklebust (2): nfsd: Replace use of rwsem with errseq_t nfsd: Add a tracepoint for errors in nfsd4_clone_file_range() fs/nfsd/filecache.c | 3 +- fs/nfsd/filecache.h | 1 - fs/nfsd/netns.h | 11 ++--- fs/nfsd/nfs4proc.c | 20 +++++---- fs/nfsd/nfsctl.c | 3 +- fs/nfsd/nfssvc.c | 61 ++++++++++++++++++-------- fs/nfsd/trace.h | 78 +++++++++++++++++++++++++++++++++ fs/nfsd/vfs.c | 104 ++++++++++++++++++++++---------------------- fs/nfsd/vfs.h | 3 +- 9 files changed, 195 insertions(+), 89 deletions(-) -- Chuck Lever