]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
nfsd: fix NFS server for ERELOOKUP
authorRick Macklem <rmacklem@FreeBSD.org>
Fri, 1 Jan 2021 21:55:51 +0000 (13:55 -0800)
committerRick Macklem <rmacklem@FreeBSD.org>
Fri, 1 Jan 2021 21:55:51 +0000 (13:55 -0800)
commit774a36851e0e562a6428e5ac45fbfb2b23f3f58c
treeb4a9fd9afcd7cda724dd521ecf065670f041befe
parentfb6bc290fb342864f5362ab9cef7dd214df05cf3
nfsd: fix NFS server for ERELOOKUP

r367672 modified UFS such that certain VOPs, such as
VOP_CREATE() will intermittently return ERELOOKUP.
When this happens, the entire system call, or NFS
operation in the case of the NFS server, must be redone.

This patch adds that support to the NFS server by rolling
back the state of the NFS request arguments and NFS
reply arguments mbuf lists to the condition they were
in before the operation and then redoing the operation.

Tested by: pho
Reviewed by: kib
Differential Revision: https://reviews.freebsd.org/D27875
sys/fs/nfs/nfs_var.h
sys/fs/nfsserver/nfs_nfsdport.c
sys/fs/nfsserver/nfs_nfsdsocket.c