From 444a64c61990cd9b530b3fda448e1f53509576a6 Mon Sep 17 00:00:00 2001 From: Bob Peterson Date: Tue, 11 Dec 2007 19:16:09 -0600 Subject: [PATCH] --- yaml --- r: 76049 b: refs/heads/master c: b0d5fd307463405fe1f57494fbb37f810715ed6d h: refs/heads/master i: 76047: 7adcd5b35e59ada6ef2a8c5682f097206d2a465b v: v3 --- [refs] | 2 +- trunk/fs/gfs2/bmap.c | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/[refs] b/[refs] index c4859a2357aa..8880206364ed 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 398bbe68321947f6763fbc259a01eb548ce19408 +refs/heads/master: b0d5fd307463405fe1f57494fbb37f810715ed6d diff --git a/trunk/fs/gfs2/bmap.c b/trunk/fs/gfs2/bmap.c index 49486029edc2..224114166529 100644 --- a/trunk/fs/gfs2/bmap.c +++ b/trunk/fs/gfs2/bmap.c @@ -469,6 +469,7 @@ int gfs2_block_map(struct inode *inode, sector_t lblock, unsigned int maxlen = bh_map->b_size >> inode->i_blkbits; struct metapath mp; u64 size; + struct buffer_head *dibh = NULL; BUG_ON(maxlen == 0); @@ -499,6 +500,8 @@ int gfs2_block_map(struct inode *inode, sector_t lblock, error = gfs2_meta_inode_buffer(ip, &bh); if (error) goto out_fail; + dibh = bh; + get_bh(dibh); for (x = 0; x < end_of_metadata; x++) { lookup_block(ip, bh, x, &mp, create, &new, &dblock); @@ -517,13 +520,8 @@ int gfs2_block_map(struct inode *inode, sector_t lblock, if (boundary) set_buffer_boundary(bh_map); if (new) { - struct buffer_head *dibh; - error = gfs2_meta_inode_buffer(ip, &dibh); - if (!error) { - gfs2_trans_add_bh(ip->i_gl, dibh, 1); - gfs2_dinode_out(ip, dibh->b_data); - brelse(dibh); - } + gfs2_trans_add_bh(ip->i_gl, dibh, 1); + gfs2_dinode_out(ip, dibh->b_data); set_buffer_new(bh_map); goto out_brelse; } @@ -544,6 +542,8 @@ int gfs2_block_map(struct inode *inode, sector_t lblock, out_ok: error = 0; out_fail: + if (dibh) + brelse(dibh); bmap_unlock(inode, create); return error; }