gfs2: Pass resource group to rgblk_free
Function rgblk_free can only deal with one resource group at a time, so pass that resource group is as a parameter. Several of the callers already have the resource group at hand, so we only need additional lookup code in a few places. Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com> Signed-off-by: Bob Peterson <rpeterso@redhat.com> Reviewed-by: Steven Whitehouse <swhiteho@redhat.com>
This commit is contained in:
committed by
Bob Peterson
parent
c3abc29e54
commit
0ddeded4ae
@ -283,7 +283,7 @@ static int ea_dealloc_unstuffed(struct gfs2_inode *ip, struct buffer_head *bh,
|
||||
blen++;
|
||||
else {
|
||||
if (bstart)
|
||||
gfs2_free_meta(ip, bstart, blen);
|
||||
gfs2_free_meta(ip, rgd, bstart, blen);
|
||||
bstart = bn;
|
||||
blen = 1;
|
||||
}
|
||||
@ -292,7 +292,7 @@ static int ea_dealloc_unstuffed(struct gfs2_inode *ip, struct buffer_head *bh,
|
||||
gfs2_add_inode_blocks(&ip->i_inode, -1);
|
||||
}
|
||||
if (bstart)
|
||||
gfs2_free_meta(ip, bstart, blen);
|
||||
gfs2_free_meta(ip, rgd, bstart, blen);
|
||||
|
||||
if (prev && !leave) {
|
||||
u32 len;
|
||||
@ -1250,6 +1250,7 @@ static int ea_dealloc_indirect(struct gfs2_inode *ip)
|
||||
{
|
||||
struct gfs2_sbd *sdp = GFS2_SB(&ip->i_inode);
|
||||
struct gfs2_rgrp_list rlist;
|
||||
struct gfs2_rgrpd *rgd;
|
||||
struct buffer_head *indbh, *dibh;
|
||||
__be64 *eablk, *end;
|
||||
unsigned int rg_blocks = 0;
|
||||
@ -1302,8 +1303,7 @@ static int ea_dealloc_indirect(struct gfs2_inode *ip)
|
||||
gfs2_rlist_alloc(&rlist);
|
||||
|
||||
for (x = 0; x < rlist.rl_rgrps; x++) {
|
||||
struct gfs2_rgrpd *rgd = gfs2_glock2rgrp(rlist.rl_ghs[x].gh_gl);
|
||||
|
||||
rgd = gfs2_glock2rgrp(rlist.rl_ghs[x].gh_gl);
|
||||
rg_blocks += rgd->rd_length;
|
||||
}
|
||||
|
||||
@ -1320,6 +1320,7 @@ static int ea_dealloc_indirect(struct gfs2_inode *ip)
|
||||
|
||||
eablk = (__be64 *)(indbh->b_data + sizeof(struct gfs2_meta_header));
|
||||
bstart = 0;
|
||||
rgd = NULL;
|
||||
blen = 0;
|
||||
|
||||
for (; eablk < end; eablk++) {
|
||||
@ -1333,8 +1334,9 @@ static int ea_dealloc_indirect(struct gfs2_inode *ip)
|
||||
blen++;
|
||||
else {
|
||||
if (bstart)
|
||||
gfs2_free_meta(ip, bstart, blen);
|
||||
gfs2_free_meta(ip, rgd, bstart, blen);
|
||||
bstart = bn;
|
||||
rgd = gfs2_blk2rgrpd(sdp, bstart, true);
|
||||
blen = 1;
|
||||
}
|
||||
|
||||
@ -1342,7 +1344,7 @@ static int ea_dealloc_indirect(struct gfs2_inode *ip)
|
||||
gfs2_add_inode_blocks(&ip->i_inode, -1);
|
||||
}
|
||||
if (bstart)
|
||||
gfs2_free_meta(ip, bstart, blen);
|
||||
gfs2_free_meta(ip, rgd, bstart, blen);
|
||||
|
||||
ip->i_diskflags &= ~GFS2_DIF_EA_INDIRECT;
|
||||
|
||||
@ -1391,7 +1393,7 @@ static int ea_dealloc_block(struct gfs2_inode *ip)
|
||||
if (error)
|
||||
goto out_gunlock;
|
||||
|
||||
gfs2_free_meta(ip, ip->i_eattr, 1);
|
||||
gfs2_free_meta(ip, rgd, ip->i_eattr, 1);
|
||||
|
||||
ip->i_eattr = 0;
|
||||
gfs2_add_inode_blocks(&ip->i_inode, -1);
|
||||
|
Reference in New Issue
Block a user