From 6fd1e845e99d9d686f751c24631f46aca9310a7b Mon Sep 17 00:00:00 2001 From: Nathan Scott Date: Tue, 10 Feb 2004 13:31:45 +1100 Subject: [PATCH] [XFS] Add back a missing pflags check in releasepage. SGI Modid: xfs-linux:xfs-kern:166323a --- fs/xfs/linux/xfs_aops.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/fs/xfs/linux/xfs_aops.c b/fs/xfs/linux/xfs_aops.c index 112e297e4b678..5e2c9a3d88095 100644 --- a/fs/xfs/linux/xfs_aops.c +++ b/fs/xfs/linux/xfs_aops.c @@ -410,7 +410,6 @@ map_unwritten( /* get an "empty" pagebuf to manage IO completion * Proper values will be set before returning */ pb = pagebuf_lookup(iomapp->iomap_target, 0, 0, 0); - if (!pb) return -EAGAIN; @@ -473,7 +472,7 @@ map_unwritten( nblocks += bs; atomic_add(bs, &pb->pb_io_remaining); convert_page(inode, page, iomapp, pb, startio, all_bh); - /* stop if converting the next page might add + /* stop if converting the next page might add * enough blocks that the corresponding byte * count won't fit in our ulong page buf length */ if (nblocks >= ((ULONG_MAX - PAGE_SIZE) >> block_bits)) @@ -1183,6 +1182,12 @@ linvfs_release_page( if (!(gfp_mask & __GFP_FS)) return 0; + /* If we are already inside a transaction or the thread cannot + * do I/O, we cannot release this page. + */ + if (PFLAGS_TEST_FSTRANS()) + return 0; + /* * Convert delalloc space to real space, do not flush the * data out to disk, that will be done by the caller. -- 2.53.0