This RFC series adds logic to the Linux NFS server to make it wait a few moments for clients to return a delegation before replying with NFS4ERR_DELAY. There are two main benefits: - This improves responsiveness when a delegated file is accessed from another client - This removes an unnecessary latency if a client has neglected to return a delegation before attempting a RENAME or SETATTR This series is incomplete: - There are likely other operations that can benefit (eg. OPEN) This series applies against v5.19. Changes since v2: - Wake immediately after client sends DELEGRETURN - More tracepoint improvements Changes since RFC: - Eliminate spurious console messages on the server - Wait for DELEGRETURN for RENAME operations - Add CB done tracepoints - Rework the retry loop --- Chuck Lever (7): NFSD: Instrument fh_verify() NFSD: Replace dprintk() call site in fh_verify() NFSD: Trace NFSv4 COMPOUND tags NFSD: Add tracepoints to report NFSv4 callback completions NFSD: Add a mechanism to wait for a DELEGRETURN NFSD: Make nfsd4_setattr() wait before returning NFS4ERR_DELAY NFSD: Make nfsd4_rename() wait before returning NFS4ERR_DELAY fs/nfsd/nfs4layouts.c | 2 +- fs/nfsd/nfs4proc.c | 56 +++++++++++--- fs/nfsd/nfs4state.c | 35 +++++++++ fs/nfsd/nfsd.h | 1 + fs/nfsd/nfsfh.c | 13 +--- fs/nfsd/trace.h | 171 ++++++++++++++++++++++++++++++++++++++++-- fs/nfsd/xdr4.h | 2 + 7 files changed, 251 insertions(+), 29 deletions(-) -- Chuck Lever