• Trond Myklebust's avatar
    NFS: Reduce inode->i_lock contention in nfs_lock_and_join_requests() · b5bab9bf
    Trond Myklebust authored
    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: default avatarTrond Myklebust <trond.myklebust@primarydata.com>
    b5bab9bf
write.c 55.9 KB