diff options
author | Eric Sandeen <sandeen@redhat.com> | 2011-06-23 11:39:34 -0400 |
---|---|---|
committer | Steven Whitehouse <swhiteho@redhat.com> | 2011-07-15 04:32:52 -0400 |
commit | 46fcb2ed29ff7a9ec34c4ae67b631743eb7e756f (patch) | |
tree | f28487201dd8fe815192b75d1b29426a7882a01b /fs/gfs2/rgrp.c | |
parent | 9964afbb797329e4c6e5d05ebc199c39af618c5f (diff) |
GFS2: combine duplicated block freeing routines
__gfs2_free_data and __gfs2_free_meta are almost identical, and
can be trivially combined.
[This is as per Eric's original patch minus gfs2_free_data() which had
no callers left and plus the conversion of the bmap.c calls to these
functions. All in all, a nice clean up]
Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
Diffstat (limited to 'fs/gfs2/rgrp.c')
-rw-r--r-- | fs/gfs2/rgrp.c | 52 |
1 files changed, 5 insertions, 47 deletions
diff --git a/fs/gfs2/rgrp.c b/fs/gfs2/rgrp.c index 9b780df3fd54..7f8af1eb02de 100644 --- a/fs/gfs2/rgrp.c +++ b/fs/gfs2/rgrp.c | |||
@@ -1607,14 +1607,15 @@ rgrp_error: | |||
1607 | } | 1607 | } |
1608 | 1608 | ||
1609 | /** | 1609 | /** |
1610 | * gfs2_free_data - free a contiguous run of data block(s) | 1610 | * __gfs2_free_blocks - free a contiguous run of block(s) |
1611 | * @ip: the inode these blocks are being freed from | 1611 | * @ip: the inode these blocks are being freed from |
1612 | * @bstart: first block of a run of contiguous blocks | 1612 | * @bstart: first block of a run of contiguous blocks |
1613 | * @blen: the length of the block run | 1613 | * @blen: the length of the block run |
1614 | * @meta: 1 if the blocks represent metadata | ||
1614 | * | 1615 | * |
1615 | */ | 1616 | */ |
1616 | 1617 | ||
1617 | void __gfs2_free_data(struct gfs2_inode *ip, u64 bstart, u32 blen) | 1618 | void __gfs2_free_blocks(struct gfs2_inode *ip, u64 bstart, u32 blen, int meta) |
1618 | { | 1619 | { |
1619 | struct gfs2_sbd *sdp = GFS2_SB(&ip->i_inode); | 1620 | struct gfs2_sbd *sdp = GFS2_SB(&ip->i_inode); |
1620 | struct gfs2_rgrpd *rgd; | 1621 | struct gfs2_rgrpd *rgd; |
@@ -1631,54 +1632,11 @@ void __gfs2_free_data(struct gfs2_inode *ip, u64 bstart, u32 blen) | |||
1631 | gfs2_trans_add_rg(rgd); | 1632 | gfs2_trans_add_rg(rgd); |
1632 | 1633 | ||
1633 | /* Directories keep their data in the metadata address space */ | 1634 | /* Directories keep their data in the metadata address space */ |
1634 | if (ip->i_depth) | 1635 | if (meta || ip->i_depth) |
1635 | gfs2_meta_wipe(ip, bstart, blen); | 1636 | gfs2_meta_wipe(ip, bstart, blen); |
1636 | } | 1637 | } |
1637 | 1638 | ||
1638 | /** | 1639 | /** |
1639 | * gfs2_free_data - free a contiguous run of data block(s) | ||
1640 | * @ip: the inode these blocks are being freed from | ||
1641 | * @bstart: first block of a run of contiguous blocks | ||
1642 | * @blen: the length of the block run | ||
1643 | * | ||
1644 | */ | ||
1645 | |||
1646 | void gfs2_free_data(struct gfs2_inode *ip, u64 bstart, u32 blen) | ||
1647 | { | ||
1648 | struct gfs2_sbd *sdp = GFS2_SB(&ip->i_inode); | ||
1649 | |||
1650 | __gfs2_free_data(ip, bstart, blen); | ||
1651 | gfs2_statfs_change(sdp, 0, +blen, 0); | ||
1652 | gfs2_quota_change(ip, -(s64)blen, ip->i_inode.i_uid, ip->i_inode.i_gid); | ||
1653 | } | ||
1654 | |||
1655 | /** | ||
1656 | * gfs2_free_meta - free a contiguous run of data block(s) | ||
1657 | * @ip: the inode these blocks are being freed from | ||
1658 | * @bstart: first block of a run of contiguous blocks | ||
1659 | * @blen: the length of the block run | ||
1660 | * | ||
1661 | */ | ||
1662 | |||
1663 | void __gfs2_free_meta(struct gfs2_inode *ip, u64 bstart, u32 blen) | ||
1664 | { | ||
1665 | struct gfs2_sbd *sdp = GFS2_SB(&ip->i_inode); | ||
1666 | struct gfs2_rgrpd *rgd; | ||
1667 | |||
1668 | rgd = rgblk_free(sdp, bstart, blen, GFS2_BLKST_FREE); | ||
1669 | if (!rgd) | ||
1670 | return; | ||
1671 | trace_gfs2_block_alloc(ip, bstart, blen, GFS2_BLKST_FREE); | ||
1672 | rgd->rd_free += blen; | ||
1673 | |||
1674 | gfs2_trans_add_bh(rgd->rd_gl, rgd->rd_bits[0].bi_bh, 1); | ||
1675 | gfs2_rgrp_out(rgd, rgd->rd_bits[0].bi_bh->b_data); | ||
1676 | |||
1677 | gfs2_trans_add_rg(rgd); | ||
1678 | gfs2_meta_wipe(ip, bstart, blen); | ||
1679 | } | ||
1680 | |||
1681 | /** | ||
1682 | * gfs2_free_meta - free a contiguous run of data block(s) | 1640 | * gfs2_free_meta - free a contiguous run of data block(s) |
1683 | * @ip: the inode these blocks are being freed from | 1641 | * @ip: the inode these blocks are being freed from |
1684 | * @bstart: first block of a run of contiguous blocks | 1642 | * @bstart: first block of a run of contiguous blocks |
@@ -1690,7 +1648,7 @@ void gfs2_free_meta(struct gfs2_inode *ip, u64 bstart, u32 blen) | |||
1690 | { | 1648 | { |
1691 | struct gfs2_sbd *sdp = GFS2_SB(&ip->i_inode); | 1649 | struct gfs2_sbd *sdp = GFS2_SB(&ip->i_inode); |
1692 | 1650 | ||
1693 | __gfs2_free_meta(ip, bstart, blen); | 1651 | __gfs2_free_blocks(ip, bstart, blen, 1); |
1694 | gfs2_statfs_change(sdp, 0, +blen, 0); | 1652 | gfs2_statfs_change(sdp, 0, +blen, 0); |
1695 | gfs2_quota_change(ip, -(s64)blen, ip->i_inode.i_uid, ip->i_inode.i_gid); | 1653 | gfs2_quota_change(ip, -(s64)blen, ip->i_inode.i_uid, ip->i_inode.i_gid); |
1696 | } | 1654 | } |