I'm seeing a pynfs4.0 GATT9 regression. That's a test that attempts a compound with 90 GETATTR ops each a request for all mandatory attributes. The test expects OK or RESOURCE but looks like its getting a corrupted response? (I haven't looked at the wire traffic yet.) I think it's one of the final patches changing how errors are returned. --b. On Thu, Oct 01, 2020 at 06:58:46PM -0400, Chuck Lever wrote: > Hi Bruce- > > Here's the latest version of the nfsd_dispatch clean up series, > building on the "non-controversial" patches I posted last week. > > The purpose of this series is three-fold: > > o Prepare to add NFS procedure tracepoints > o Prepare to eventually deprecate NFSv2 > o Minor optimizations of the dispatcher hot path > > > Changes since v2: > - Fixed crasher caused by invoking NFSv2 ROOT or WRITECACHE > - Hoisted encoding of NFS status code into XDR Reply encoders > - Numerous bug fixes, clean ups, and patch re-ordering > > Changes since v1: > - Pulled in latest version of rq_lease_breaker cleanup > - Added patches to make NFSv2 error encoding similar to NFSv3 > - Clarified nfsd_dispatch's new documenting comment > - Renamed a variable > > --- > > Chuck Lever (14): > NFSD: Add missing NFSv2 .pc_func methods > lockd: Replace PROC() macro with open code > NFSACL: Replace PROC() macro with open code > NFSD: Encoder and decoder functions are always present > NFSD: Clean up switch statement in nfsd_dispatch() > NFSD: Clean up stale comments in nfsd_dispatch() > NFSD: Clean up nfsd_dispatch() variables > NFSD: Refactor nfsd_dispatch() error paths > NFSD: Remove vestigial typedefs > NFSD: Fix .pc_release method for NFSv2 > NFSD: Call NFSv2 encoders on error returns > NFSD: Remove the RETURN_STATUS() macro > NFSD: Map nfserr_wrongsec outside of nfsd_dispatch > NFSD: Hoist status code encoding into XDR encoder functions > > J. Bruce Fields (1): > nfsd: rq_lease_breaker cleanup > > > fs/lockd/svc4proc.c | 248 ++++++++++++++++++++++++------- > fs/lockd/svcproc.c | 250 ++++++++++++++++++++++++------- > fs/nfsd/export.c | 2 +- > fs/nfsd/nfs2acl.c | 160 +++++++++++++------- > fs/nfsd/nfs3acl.c | 88 ++++++----- > fs/nfsd/nfs3proc.c | 238 +++++++++++++++--------------- > fs/nfsd/nfs3xdr.c | 25 +++- > fs/nfsd/nfs4proc.c | 6 +- > fs/nfsd/nfs4xdr.c | 11 +- > fs/nfsd/nfsproc.c | 283 ++++++++++++++++++++---------------- > fs/nfsd/nfssvc.c | 121 ++++++++------- > fs/nfsd/nfsxdr.c | 52 ++++++- > fs/nfsd/xdr.h | 16 +- > fs/nfsd/xdr3.h | 1 + > fs/nfsd/xdr4.h | 1 + > include/uapi/linux/nfsacl.h | 2 + > 16 files changed, 984 insertions(+), 520 deletions(-) > > -- > Chuck Lever