]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
MFC: r337438
authorrmacklem <rmacklem@FreeBSD.org>
Fri, 24 Aug 2018 22:41:32 +0000 (22:41 +0000)
committerrmacklem <rmacklem@FreeBSD.org>
Fri, 24 Aug 2018 22:41:32 +0000 (22:41 +0000)
commit7512df1057a2ca30da672b2ffd9f5b70e939804d
treefc7a49be00e4491d128459843a6c0a32a8fb5aa6
parent3d1094f71e6c07c10668da15ffe6a5eabaeb5d35
MFC: r337438
Allow newnfs_request() to retry all callback RPCs with an NFSERR_DELAY reply.

The code in newnfs_request() retries RPCs that get a reply of NFSERR_DELAY,
but exempts certain NFSv4 operations. However, for callback RPCs, there
should not be any exemptions at this time. The code would have erroneously
exempted the CBRECALL callback, since it has the same operation number as
the CLOSE operation.
This patch fixes this by checking for a callback RPC (indicated by clp != NULL)
and not checking for exempt operations for callbacks.
This would have only affected the NFSv4 server when delegations are enabled
(they are not enabled by default) and the client replies to CBRECALL with
NFSERR_DELAY. This may never actually happen.
Spotted during code inspection.
sys/fs/nfs/nfs_commonkrpc.c