diff options
Diffstat (limited to 'fs/gfs2/bmap.c')
-rw-r--r-- | fs/gfs2/bmap.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/fs/gfs2/bmap.c b/fs/gfs2/bmap.c index 3a5d3f883e10..253e1a39f841 100644 --- a/fs/gfs2/bmap.c +++ b/fs/gfs2/bmap.c | |||
@@ -136,7 +136,9 @@ int gfs2_unstuff_dinode(struct gfs2_inode *ip, struct page *page) | |||
136 | and write it out to disk */ | 136 | and write it out to disk */ |
137 | 137 | ||
138 | unsigned int n = 1; | 138 | unsigned int n = 1; |
139 | block = gfs2_alloc_block(ip, &n); | 139 | error = gfs2_alloc_block(ip, &block, &n); |
140 | if (error) | ||
141 | goto out_brelse; | ||
140 | if (isdir) { | 142 | if (isdir) { |
141 | gfs2_trans_add_unrevoke(GFS2_SB(&ip->i_inode), block, 1); | 143 | gfs2_trans_add_unrevoke(GFS2_SB(&ip->i_inode), block, 1); |
142 | error = gfs2_dir_get_new_buffer(ip, block, &bh); | 144 | error = gfs2_dir_get_new_buffer(ip, block, &bh); |
@@ -476,8 +478,11 @@ static int gfs2_bmap_alloc(struct inode *inode, const sector_t lblock, | |||
476 | blks = dblks + iblks; | 478 | blks = dblks + iblks; |
477 | i = sheight; | 479 | i = sheight; |
478 | do { | 480 | do { |
481 | int error; | ||
479 | n = blks - alloced; | 482 | n = blks - alloced; |
480 | bn = gfs2_alloc_block(ip, &n); | 483 | error = gfs2_alloc_block(ip, &bn, &n); |
484 | if (error) | ||
485 | return error; | ||
481 | alloced += n; | 486 | alloced += n; |
482 | if (state != ALLOC_DATA || gfs2_is_jdata(ip)) | 487 | if (state != ALLOC_DATA || gfs2_is_jdata(ip)) |
483 | gfs2_trans_add_unrevoke(sdp, bn, n); | 488 | gfs2_trans_add_unrevoke(sdp, bn, n); |