nfsd: Reduce contention for the nfsd_file nf_rwsem
authorTrond Myklebust <trond.myklebust@hammerspace.com>
Thu, 17 Jun 2021 23:26:52 +0000 (19:26 -0400)
committerJ. Bruce Fields <bfields@redhat.com>
Wed, 7 Jul 2021 00:14:44 +0000 (20:14 -0400)
commit474bc334698df98ce07c890f1898c7e7f389b0c7
treecc20b6c784eb464070790b61ed86c7c278510275
parent0ff5b50ab1f7f39862d0cdf6803978d31b27f25e
nfsd: Reduce contention for the nfsd_file nf_rwsem

When flushing out the unstable file writes as part of a COMMIT call, try
to perform most of of the data writes and waits outside the semaphore.

This means that if the client is sending the COMMIT as part of a memory
reclaim operation, then it can continue performing I/O, with contention
for the lock occurring only once the data sync is finished.

Fixes: 5011af4c698a ("nfsd: Fix stable writes")
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
Tested-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
fs/nfsd/vfs.c