+42
−6
+0
−2
+16
−0
Loading
During v4 request compound arg decoding, some ops (e.g. SETATTR) can trigger idmap lookup upcalls. When those upcall responses get delayed beyond the allowed time limit, cache_check() will mark the request for deferral and cause it to be dropped. This prevents nfs4svc_encode_compoundres from being executed, and thus the session slot flag NFSD4_SLOT_INUSE never gets cleared. Subsequent client requests will fail with NFSERR_JUKEBOX, given that the slot will be marked as in-use, making the SEQUENCE op fail. Fix this by making sure that the RQ_USEDEFERRAL flag is always clear during nfs4svc_decode_compoundargs(), since no v4 request should ever be deferred. Fixes: 2f425878 ("nfsd: don't use the deferral service, return NFS4ERR_DELAY") Signed-off-by:Anthony Iliopoulos <ailiop@suse.com> Reviewed-by:
NeilBrown <neil@brown.name> Signed-off-by:
Chuck Lever <chuck.lever@oracle.com>