This patch 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: - It improves responsiveness when a delegated file is accessed from another client, and - It removes an unnecessary latency if a client has neglected to return a delegation before attempting a RENAME or SETATTR NFS4ERR_DELAY during NFSv4 OPEN is still not handled. However, I'm comfortable merging the infrastructure in this series and support for using it in SETATTR, RENAME, and REMOVE now, and then handling OPEN at a later time. This series applies against v6.0-rc4. Changes since v3: - Also handle JUKEBOX when an NFSv3 operation triggers a CB_RECALL Changes since v2: - Wake immediately after server receives 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 (8): 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: Refactor nfsd_setattr() NFSD: Make nfsd4_setattr() wait before returning NFS4ERR_DELAY NFSD: Make nfsd4_rename() wait before returning NFS4ERR_DELAY NFSD: Make nfsd4_remove() wait before returning NFS4ERR_DELAY fs/nfsd/nfs4layouts.c | 2 +- fs/nfsd/nfs4proc.c | 6 +- fs/nfsd/nfs4state.c | 34 +++++++++++ fs/nfsd/nfsd.h | 7 +++ fs/nfsd/nfsfh.c | 8 +-- fs/nfsd/trace.h | 131 ++++++++++++++++++++++++++++++++++++++---- fs/nfsd/vfs.c | 100 ++++++++++++++++++++------------ 7 files changed, 233 insertions(+), 55 deletions(-) -- Chuck Lever