diff options
author | Trond Myklebust <Trond.Myklebust@netapp.com> | 2006-12-05 00:35:39 -0500 |
---|---|---|
committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2006-12-06 10:46:37 -0500 |
commit | 87a4ce16082e92b4b6d27596a517b302f3692650 (patch) | |
tree | 5cc37898459d69135b09ed9485d54745d15922ba /fs/nfs | |
parent | 49a70f278658894d2899824cd4037095fb6711fe (diff) | |
download | lwn-87a4ce16082e92b4b6d27596a517b302f3692650.tar.gz lwn-87a4ce16082e92b4b6d27596a517b302f3692650.zip |
NFS: Remove call to igrab() from nfs_writepage()
We always ensure that the nfs_open_context holds a reference to the dentry,
so the test in nfs_writepage() for whether or not the inode is referenced
is redundant.
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'fs/nfs')
-rw-r--r-- | fs/nfs/write.c | 16 |
1 files changed, 1 insertions, 15 deletions
diff --git a/fs/nfs/write.c b/fs/nfs/write.c index 3f6ca5229562..74e86601d978 100644 --- a/fs/nfs/write.c +++ b/fs/nfs/write.c @@ -317,24 +317,12 @@ int nfs_writepage(struct page *page, struct writeback_control *wbc) struct nfs_open_context *ctx; struct inode *inode = page->mapping->host; unsigned offset; - int inode_referenced = 0; int priority = wb_priority(wbc); int err; nfs_inc_stats(inode, NFSIOS_VFSWRITEPAGE); nfs_add_stats(inode, NFSIOS_WRITEPAGES, 1); - /* - * Note: We need to ensure that we have a reference to the inode - * if we are to do asynchronous writes. If not, waiting - * in nfs_wait_on_request() may deadlock with clear_inode(). - * - * If igrab() fails here, then it is in any case safe to - * call nfs_wb_page(), since there will be no pending writes. - */ - if (igrab(inode) != 0) - inode_referenced = 1; - /* Ensure we've flushed out any previous writes */ nfs_wb_page_priority(inode, page, priority); @@ -349,7 +337,7 @@ int nfs_writepage(struct page *page, struct writeback_control *wbc) goto out; } lock_kernel(); - if (!IS_SYNC(inode) && inode_referenced) { + if (!IS_SYNC(inode)) { err = nfs_writepage_async(ctx, inode, page, 0, offset); if (!wbc->for_writepages) nfs_flush_mapping(page->mapping, wbc, wb_priority(wbc)); @@ -366,8 +354,6 @@ int nfs_writepage(struct page *page, struct writeback_control *wbc) put_nfs_open_context(ctx); out: unlock_page(page); - if (inode_referenced) - iput(inode); return err; } |