Re: [PATCH] NFS: avoid infinite NFS4ERR_OLD_STATEID loops
From: Trond Myklebust <trondmy@kernel.org>
Date: 2023-02-14 02:57:11
From: Trond Myklebust <trondmy@kernel.org>
Date: 2023-02-14 02:57:11
On Tue, 2023-02-14 at 09:57 +1100, NeilBrown wrote:
Linux-NFS responds to NFS4ERR_OLD_STATEID by simply retrying the request, hoping to make use of an updated stateid that might have arrived from the server. This is usually successful. However if the client and server get out-of-sync for some reason and if there is no new stateid to try, this can result in an indefinite loop which looks a bit like a DoS attack. This can particularly happen when a server replies with success to an OPEN request, but fails a subsequent GETATTR. This has been observed with Netapp and Hitachi servers when a concurrent unlink from a different client removes the file between the OPEN and the GETATTR. The GETATTR returns NFS4ERR_STALE.
Then they are both badly broken servers, and people should complain to NetApp and Hitachi. We're still not fixing their server bugs in the Linux client. NACK... -- Trond Myklebust Linux NFS client maintainer, Hammerspace trond.myklebust@hammerspace.com