nfsd: Replace use of rwsem with errseq_t

The nfsd_file nf_rwsem is currently being used to separate file write
and commit instances to ensure that we catch errors and apply them to
the correct write/commit.
We can improve scalability at the expense of a little accuracy (some
extra false positives) by replacing the nf_rwsem with more careful
use of the errseq_t mechanism to track errors across the different
operations.

BUG=b/219091171
TEST=presubmit
RELEASE_NOTE=Fixed a Linux kernel write IOPS regression with nfsd.

cos-patch: bug
Signed-off-by: Trond Myklebust <[email protected]>
Signed-off-by: Chuck Lever <[email protected]>
Change-Id: I481a23eccfe85152c9144184b2e0e71ed27a264d
Reviewed-on: https://cos-review.googlesource.com/c/third_party/kernel/+/33361
Main-Branch-Verified: Cusky Presubmit Bot <[email protected]>
Tested-by: Cusky Presubmit Bot <[email protected]>
Reviewed-by: Oleksandr Tymoshenko <[email protected]>
(cherry picked from commit 36b67b8b4132f00582426e5e4f409ff0f962e9c5)
Reviewed-on: https://cos-review.googlesource.com/c/third_party/kernel/+/33440
4 files changed