git: d0c90712df75 - stable/12 - nfscl: fix the handling of NFSERR_DELAY for Open/LayoutGet RPCs

Rick Macklem rmacklem at FreeBSD.org
Tue May 11 01:25:50 UTC 2021


The branch stable/12 has been updated by rmacklem:

URL: https://cgit.FreeBSD.org/src/commit/?id=d0c90712df75e588cc1fa1f68a93f67ba9ff80c6

commit d0c90712df75e588cc1fa1f68a93f67ba9ff80c6
Author:     Rick Macklem <rmacklem at FreeBSD.org>
AuthorDate: 2021-04-27 00:48:21 +0000
Commit:     Rick Macklem <rmacklem at FreeBSD.org>
CommitDate: 2021-05-11 01:23:12 +0000

    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 | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/sys/fs/nfs/nfs_commonkrpc.c b/sys/fs/nfs/nfs_commonkrpc.c
index 449b3ad5e4a7..b6fe49b8e470 100644
--- a/sys/fs/nfs/nfs_commonkrpc.c
+++ b/sys/fs/nfs/nfs_commonkrpc.c
@@ -1062,7 +1062,9 @@ tryagain:
 			     nd->nd_procnum != NFSPROC_WRITE &&
 			     nd->nd_procnum != NFSPROC_WRITEDS &&
 			     nd->nd_procnum != NFSPROC_OPEN &&
+			     nd->nd_procnum != NFSPROC_OPENLAYGET &&
 			     nd->nd_procnum != NFSPROC_CREATE &&
+			     nd->nd_procnum != NFSPROC_CREATELAYGET &&
 			     nd->nd_procnum != NFSPROC_OPENCONFIRM &&
 			     nd->nd_procnum != NFSPROC_OPENDOWNGRADE &&
 			     nd->nd_procnum != NFSPROC_CLOSE &&


More information about the dev-commits-src-all mailing list