]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
nfscl: fix the handling of NFSERR_DELAY for Open/LayoutGet RPCs
authorRick Macklem <rmacklem@FreeBSD.org>
Tue, 27 Apr 2021 00:48:21 +0000 (17:48 -0700)
committerRick Macklem <rmacklem@FreeBSD.org>
Tue, 11 May 2021 01:23:12 +0000 (18:23 -0700)
commitd0c90712df75e588cc1fa1f68a93f67ba9ff80c6
tree0184ea00cc2ebf43a856ad6c7e0015c2d7472bf3
parent16e172a410bff6d2c67523fe949424ab055b46a6
nfscl: fix the handling of NFSERR_DELAY for Open/LayoutGet RPCs

For a pNFS mount, the NFSv4.1/4.2 client uses compound RPCs that
have both Open and LayoutGet operations in them.
If the pNFS server were tp reply NFSERR_DELAY for one of these
compounds, the retry after a delay cannot be handled by
newnfs_request(), since there is a reference held on the open
state for the Open operation in them.

Fix this by adding these RPCs to the "don't do delay here"
list in newnfs_request().

This patch is only needed if the mount is using pNFS (the "pnfs"
mount option) and probably only matters if the MDS server
is issuing delegations as well as pNFS layouts.

Found by code inspection.

(cherry picked from commit f5ff282bc025f0395afcef40f5b6e778202c4181)
sys/fs/nfs/nfs_commonkrpc.c