mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-19 18:53:52 +08:00
GFS2: Combine gfs2_free_di with gfs2_free_uninit_di
Before this patch, function gfs2_free_di was 4 lines of code, and one of those lines was to call gfs2_free_uninit_di. Although unlikely, if function gfs2_free_uninit_di encountered an error finding the block to be freed, the error was silently ignored by the caller, which went ahead and improperly did a quota-change operation and meta_wipe despite the error. This patch combines the two functions into one to make the code more readable and fixes the bug by returning from the combined function before it takes those next incorrect steps. Signed-off-by: Bob Peterson <rpeterso@redhat.com>
This commit is contained in:
parent
4fbd8d194f
commit
a18c78c5f5
@ -2453,12 +2453,12 @@ void gfs2_unlink_di(struct inode *inode)
|
||||
update_rgrp_lvb_unlinked(rgd, 1);
|
||||
}
|
||||
|
||||
static void gfs2_free_uninit_di(struct gfs2_rgrpd *rgd, u64 blkno)
|
||||
void gfs2_free_di(struct gfs2_rgrpd *rgd, struct gfs2_inode *ip)
|
||||
{
|
||||
struct gfs2_sbd *sdp = rgd->rd_sbd;
|
||||
struct gfs2_rgrpd *tmp_rgd;
|
||||
|
||||
tmp_rgd = rgblk_free(sdp, blkno, 1, GFS2_BLKST_FREE);
|
||||
tmp_rgd = rgblk_free(sdp, ip->i_no_addr, 1, GFS2_BLKST_FREE);
|
||||
if (!tmp_rgd)
|
||||
return;
|
||||
gfs2_assert_withdraw(sdp, rgd == tmp_rgd);
|
||||
@ -2474,12 +2474,6 @@ static void gfs2_free_uninit_di(struct gfs2_rgrpd *rgd, u64 blkno)
|
||||
update_rgrp_lvb_unlinked(rgd, -1);
|
||||
|
||||
gfs2_statfs_change(sdp, 0, +1, -1);
|
||||
}
|
||||
|
||||
|
||||
void gfs2_free_di(struct gfs2_rgrpd *rgd, struct gfs2_inode *ip)
|
||||
{
|
||||
gfs2_free_uninit_di(rgd, ip->i_no_addr);
|
||||
trace_gfs2_block_alloc(ip, rgd, ip->i_no_addr, 1, GFS2_BLKST_FREE);
|
||||
gfs2_quota_change(ip, -1, ip->i_inode.i_uid, ip->i_inode.i_gid);
|
||||
gfs2_meta_wipe(ip, ip->i_no_addr, 1);
|
||||
|
Loading…
Reference in New Issue
Block a user