NFS: Fix a hang in the writeback path
authorTrond Myklebust <Trond.Myklebust@netapp.com>
Fri, 25 Mar 2011 18:15:11 +0000 (14:15 -0400)
committerTrond Myklebust <Trond.Myklebust@netapp.com>
Sun, 27 Mar 2011 15:48:07 +0000 (17:48 +0200)
commit4d65c520fb4abed970069d18c119cfe85624f46d
tree74671eb263380317f1e4a958a6a7f73749e98eec
parent16c29dafcc86024048f1dbb8349d31cb22c7c55a
NFS: Fix a hang in the writeback path

Now that the inode scalability patches have been merged, it is no longer
safe to call igrab() under the inode->i_lock.
Now that we no longer call nfs_clear_request() until the nfs_page is
being freed, we know that we are always holding a reference to the
nfs_open_context, which again holds a reference to the path, and so
the inode cannot be freed until the last nfs_page has been removed
from the radix tree and freed.

We can therefore skip the igrab()/iput() altogether.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
fs/nfs/pagelist.c
fs/nfs/write.c
include/linux/nfs_page.h