]> git.baikalelectronics.ru Git - kernel.git/commit
NFS: Reduce inode->i_lock contention in nfs_lock_and_join_requests()
authorTrond Myklebust <trond.myklebust@primarydata.com>
Mon, 17 Jul 2017 14:34:21 +0000 (10:34 -0400)
committerTrond Myklebust <trond.myklebust@primarydata.com>
Tue, 15 Aug 2017 15:54:47 +0000 (11:54 -0400)
commita9aced02878edb5be5025c6bb8fd0aaf374e24a9
treea7b26c72f233c65257b8008d0366bb98ecf95448
parentbbfabcb4262dcfc017431fb3b2d2c087b4627d9f
NFS: Reduce inode->i_lock contention in nfs_lock_and_join_requests()

We should no longer need the inode->i_lock, now that we've
straightened out the request locking. The locking schema is now:

1) Lock page head request
2) Lock the page group
3) Lock the subrequests one by one

Note that there is a subtle race with nfs_inode_remove_request() due
to the fact that the latter does not lock the page head, when removing
it from the struct page. Only the last subrequest is locked, hence
we need to re-check that the PagePrivate(page) is still set after
we've locked all the subrequests.

Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
fs/nfs/write.c