r367672 broke the NFS server
Konstantin Belousov
kostikbel at gmail.com
Wed Dec 30 12:53:19 UTC 2020
On Wed, Dec 30, 2020 at 02:02:48AM +0000, Rick Macklem wrote:
> Hi,
>
> Post r367671...
> When multiple files are being created by an NFS client in the same
> directory, the VOP_CREATE()/ufs_create() can fail with ERELOOKUP.
> This results in a EIO return to the NFS client.
> --> This causes "nfsv4 client/server protocol prob err=10026"
> on the client for NFSv4.0 mounts.
> --> This explains why this error has been reported by
> several people lately, although it should "never happen".
>
> Unfortunately, for the NFS server, the Lookup call is done separately
> and it will not be easy to redo it, given the current NFS code structure.
>
> Is there another way to deal with the problem r367672 was fixing that
> avoids ufs_create() returning ERELOOKUP?
Idea of the change is to restart the syscall at top level. So for NFS
server the right approach is to not send a response and also to not
free the request mbuf chain, but to restart processing.
I am sorry I forgot about NFS server when designing this fix, the only
mild excuse I can provide is that the change was quite complicated as is.
I will start looking at the fix.
More information about the freebsd-current
mailing list