aboutsummaryrefslogtreecommitdiffstats
path: root/fs/xfs/linux-2.6/xfs_aops.c
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@sgi.com>2005-09-02 16:58:38 +1000
committerNathan Scott <nathans@sgi.com>2005-09-02 16:58:38 +1000
commit51c91ed52b8a9a30fcb2a465b40c20a1f11735ba (patch)
treeedebb01cbfe550a2edb066d5b4185445cfff11ba /fs/xfs/linux-2.6/xfs_aops.c
parent592cb26bda6fe69838529acf71e50a6dee7acbb4 (diff)
downloadlinux-51c91ed52b8a9a30fcb2a465b40c20a1f11735ba.tar.gz
[XFS] add infrastructure for waiting on I/O completion at inode reclaim
time SGI-PV: 934766 SGI-Modid: xfs-linux:xfs-kern:196854a Signed-off-by: Christoph Hellwig <hch@sgi.com> Signed-off-by: Nathan Scott <nathans@sgi.com>
Diffstat (limited to 'fs/xfs/linux-2.6/xfs_aops.c')
-rw-r--r--fs/xfs/linux-2.6/xfs_aops.c11
1 files changed, 2 insertions, 9 deletions
diff --git a/fs/xfs/linux-2.6/xfs_aops.c b/fs/xfs/linux-2.6/xfs_aops.c
index bd9aba1f23538..b55cb7f02e886 100644
--- a/fs/xfs/linux-2.6/xfs_aops.c
+++ b/fs/xfs/linux-2.6/xfs_aops.c
@@ -139,7 +139,7 @@ linvfs_unwritten_convert(
XFS_BUF_SET_FSPRIVATE(bp, NULL);
XFS_BUF_CLR_IODONE_FUNC(bp);
XFS_BUF_UNDATAIO(bp);
- iput(LINVFS_GET_IP(vp));
+ vn_iowake(vp);
pagebuf_iodone(bp, 0, 0);
}
@@ -448,14 +448,7 @@ xfs_map_unwritten(
if (!pb)
return -EAGAIN;
- /* Take a reference to the inode to prevent it from
- * being reclaimed while we have outstanding unwritten
- * extent IO on it.
- */
- if ((igrab(inode)) != inode) {
- pagebuf_free(pb);
- return -EAGAIN;
- }
+ atomic_inc(&LINVFS_GET_VP(inode)->v_iocount);
/* Set the count to 1 initially, this will stop an I/O
* completion callout which happens before we have started