2009-04-14 11:11:33

by Nikanth Karthikesan

[permalink] [raw]
Subject: [PATCH 4/6] Handle possible bio_alloc failure in jfs

Handle bio_alloc failure in jfs.

Signed-off-by: Nikanth Karthikesan <[email protected]>

---

Index: linux-2.6/fs/jfs/jfs_logmgr.c
===================================================================
--- linux-2.6.orig/fs/jfs/jfs_logmgr.c
+++ linux-2.6/fs/jfs/jfs_logmgr.c
@@ -2003,6 +2003,8 @@ static int lbmRead(struct jfs_log * log,
bp->l_flag |= lbmREAD;

bio = bio_alloc(GFP_NOFS, 1);
+ if (unlikely(!bio))
+ return -ENOMEM;

bio->bi_sector = bp->l_blkno << (log->l2bsize - 9);
bio->bi_bdev = log->bdev;
@@ -2145,6 +2147,9 @@ static void lbmStartIO(struct lbuf * bp)
jfs_info("lbmStartIO\n");

bio = bio_alloc(GFP_NOFS, 1);
+ if (unlikely(!bio))
+ panic("Unable to allocate bio\n");
+
bio->bi_sector = bp->l_blkno << (log->l2bsize - 9);
bio->bi_bdev = log->bdev;
bio->bi_io_vec[0].bv_page = bp->l_page;
Index: linux-2.6/fs/jfs/jfs_metapage.c
===================================================================
--- linux-2.6.orig/fs/jfs/jfs_metapage.c
+++ linux-2.6/fs/jfs/jfs_metapage.c
@@ -436,6 +436,9 @@ static int metapage_writepage(struct pag
len = min(xlen, (int)JFS_SBI(inode->i_sb)->nbperpage);

bio = bio_alloc(GFP_NOFS, 1);
+ if (unlikely(!bio))
+ return -ENOMEM;
+
bio->bi_bdev = inode->i_sb->s_bdev;
bio->bi_sector = pblock << (inode->i_blkbits - 9);
bio->bi_end_io = metapage_write_end_io;
@@ -515,6 +518,9 @@ static int metapage_readpage(struct file
submit_bio(READ, bio);

bio = bio_alloc(GFP_NOFS, 1);
+ if (unlikely(!bio))
+ return -ENOMEM;
+
bio->bi_bdev = inode->i_sb->s_bdev;
bio->bi_sector = pblock << (inode->i_blkbits - 9);
bio->bi_end_io = metapage_read_end_io;