HomeFreeBSD

nfscl: Handle a Getattr failure with NFSERR_DELAY following Open

Description

nfscl: Handle a Getattr failure with NFSERR_DELAY following Open

During testing at a recent IETF NFSv4 Bakeathon, a non-FreeBSD
server was rebooted. After the reboot, the FreeBSD client sent
an Open/Claim_previous with a Getattr after the Open in the same
compound. The Open/Claim_previous was done to recover the Open
and a Delegation for for a file. The Open succeeded, but the
Getattr after the Open failed with NFSERR_DELAY. This resulted
in the FreeBSD client retrying the entire RPC over and over again,
until the server's recovery grace period ended. Since the Open
succeeded, there was no need to retry the entire RPC.

This patch modifies the NFSv4 client side recovery Open/Claim_previous
RPC reply handling to deal with this case. With this patch, the
Getattr reply of NFSERR_DELAY is ignored and the successful Open
reply is processed.

This bug will not normally affect users, since this non-FreeBSD
server is not widely used (it may not even have shipped to any
customers).

(cherry picked from commit 14bbf4fe5abb20f1126168e66b03127ae920f78e)

Details

Provenance
rmacklemAuthored on Oct 22 2023, 1:33 AM
Parents
rG4e583d78b77c: nfscl: Use Claim_Null_FH and Claim_Deleg_Cur_FH
Branches
Unknown
Tags
Unknown