HomeFreeBSD

nfscl: Handle NFSv4.1/4.2 Close RPC NFSERR_DELAY replies better

Description

nfscl: Handle NFSv4.1/4.2 Close RPC NFSERR_DELAY replies better

Without this patch, if a NFSv4.1/4.2 server replies NFSERR_DELAY to
a Close operation, the client loops retrying the Close while holding
a shared lock on the clientID. This shared lock blocks returns of
delegations, even though the server has issued a CB_RECALL to request
the delegation return.

This patch delays doing a retry of a Close that received a reply of
NFSERR_DELAY until after the shared lock on the clientID is released,
for NFSv4.1/4.2. To fix this for NFSv4.0 would be very difficult and
since the only known NFSv4 server to reply NFSERR_DELAY to Close only
does NFSv4.1/4.2, this fix is hoped to be sufficient.

This problem was detected during a recent IETF working group NFSv4
testing event.

(cherry picked from commit 52dee2bc035545f7ae2b838d8a0449f65043cd8a)

Details

Provenance
rmacklemAuthored on Oct 18 2021, 10:02 PM
Parents
rGd37e54c771d3: nfscl: Modify Close RPC so that it does not use "owner" for NFSv4.1/4.2
Branches
Unknown
Tags
Unknown