Right now, NFSD uses a 30ms wait (in nfsd thread context) for callback responses, and then proceeds to recall or return NFS4ERR_DELAY if the client has not responded. We don’t wait longer because that ties up an RPC execution resource — if enough threads are waiting for callbacks, the server can’t respond to incoming requests.
One thing to look at is whether the existing svc_defer() mechanism can handle these waits.
Right now, NFSD uses a 30ms wait (in nfsd thread context) for callback responses, and then proceeds to recall or return NFS4ERR_DELAY if the client has not responded. We don’t wait longer because that ties up an RPC execution resource — if enough threads are waiting for callbacks, the server can’t respond to incoming requests.
One thing to look at is whether the existing svc_defer() mechanism can handle these waits.