Handle bio_alloc failure in xfs.
Signed-off-by: Nikanth Karthikesan <[email protected]>
---
Index: linux-2.6/fs/xfs/linux-2.6/xfs_buf.c
===================================================================
--- linux-2.6.orig/fs/xfs/linux-2.6/xfs_buf.c
+++ linux-2.6/fs/xfs/linux-2.6/xfs_buf.c
@@ -1196,6 +1196,8 @@ _xfs_buf_ioapply(
(XBF_READ|_XBF_PAGE_LOCKED)) &&
(blocksize >= PAGE_CACHE_SIZE)) {
bio = bio_alloc(GFP_NOIO, 1);
+ if (unlikely(!bio))
+ goto out_enomem;
bio->bi_bdev = bp->b_target->bt_bdev;
bio->bi_sector = sector - (offset >> BBSHIFT);
@@ -1217,6 +1219,9 @@ next_chunk:
nr_pages = total_nr_pages;
bio = bio_alloc(GFP_NOIO, nr_pages);
+ if (unlikely(!bio))
+ goto out_enomem;
+
bio->bi_bdev = bp->b_target->bt_bdev;
bio->bi_sector = sector;
bio->bi_end_io = xfs_buf_bio_end_io;
@@ -1247,6 +1252,11 @@ submit_io:
bio_put(bio);
xfs_buf_ioerror(bp, EIO);
}
+ return;
+
+out_enomem:
+ xfs_buf_ioerror(bp, ENOMEM);
+
}
int
On Tue, Apr 14, 2009 at 04:36:45PM +0530, Nikanth Karthikesan wrote:
> Handle bio_alloc failure in xfs.
>
> Signed-off-by: Nikanth Karthikesan <[email protected]>
NAK, as already explained by Jens.