]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
ufs: untangle ubh_...block...(), part 2
authorAl Viro <viro@zeniv.linux.org.uk>
Sat, 28 Jan 2023 00:36:21 +0000 (19:36 -0500)
committerAl Viro <viro@zeniv.linux.org.uk>
Fri, 18 Oct 2024 21:35:31 +0000 (17:35 -0400)
pass cylinder group descriptor instead of its buffer head (ubh,
always UCPI_UBH(ucpi)) and its ->c_freeoff.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/ufs/balloc.c
fs/ufs/util.h

index e412ddcfda034df3cc11b3dde121b52bca0ae66e..d76c04fbd4fa1f484495012c37e0613bb370cb3c 100644 (file)
@@ -95,7 +95,7 @@ void ufs_free_fragments(struct inode *inode, u64 fragment, unsigned count)
         * Trying to reassemble free fragments into block
         */
        blkno = ufs_fragstoblks (bbase);
-       if (ubh_isblockset(uspi, UCPI_UBH(ucpi), ucpi->c_freeoff, blkno)) {
+       if (ubh_isblockset(uspi, ucpi, blkno)) {
                fs32_sub(sb, &ucg->cg_cs.cs_nffree, uspi->s_fpb);
                uspi->cs_total.cs_nffree -= uspi->s_fpb;
                fs32_sub(sb, &UFS_SB(sb)->fs_cs(cgno).cs_nffree, uspi->s_fpb);
@@ -182,10 +182,10 @@ do_more:
 
        for (i = bit; i < end_bit; i += uspi->s_fpb) {
                blkno = ufs_fragstoblks(i);
-               if (ubh_isblockset(uspi, UCPI_UBH(ucpi), ucpi->c_freeoff, blkno)) {
+               if (ubh_isblockset(uspi, ucpi, blkno)) {
                        ufs_error(sb, "ufs_free_blocks", "freeing free fragment");
                }
-               ubh_setblock(uspi, UCPI_UBH(ucpi), ucpi->c_freeoff, blkno);
+               ubh_setblock(uspi, ucpi, blkno);
                inode_sub_bytes(inode, uspi->s_fpb << uspi->s_fshift);
                if ((UFS_SB(sb)->s_flags & UFS_CG_MASK) == UFS_CG_44BSD)
                        ufs_clusteracct (sb, ucpi, blkno, 1);
@@ -716,7 +716,7 @@ static u64 ufs_alloccg_block(struct inode *inode,
        /*
         * If the requested block is available, use it.
         */
-       if (ubh_isblockset(uspi, UCPI_UBH(ucpi), ucpi->c_freeoff, ufs_fragstoblks(goal))) {
+       if (ubh_isblockset(uspi, ucpi, ufs_fragstoblks(goal))) {
                result = goal;
                goto gotit;
        }
@@ -730,7 +730,7 @@ gotit:
        if (!try_add_frags(inode, uspi->s_fpb))
                return 0;
        blkno = ufs_fragstoblks(result);
-       ubh_clrblock(uspi, UCPI_UBH(ucpi), ucpi->c_freeoff, blkno);
+       ubh_clrblock(uspi, ucpi, blkno);
        if ((UFS_SB(sb)->s_flags & UFS_CG_MASK) == UFS_CG_44BSD)
                ufs_clusteracct (sb, ucpi, blkno, -1);
 
index 729bc55398f2ec5a21b9020916179cdf115264c8..c7196a81fb0d06a921cdf870d363b8ba683fe36c 100644 (file)
@@ -455,9 +455,11 @@ static inline unsigned _ubh_find_last_zero_bit_(
        return (base << uspi->s_bpfshift) + pos - begin;
 }      
 
-static inline int ubh_isblockset(struct ufs_sb_private_info * uspi,
-       struct ufs_buffer_head * ubh, unsigned begin, unsigned block)
+static inline int ubh_isblockset(struct ufs_sb_private_info *uspi,
+       struct ufs_cg_private_info *ucpi, unsigned block)
 {
+       struct ufs_buffer_head *ubh = UCPI_UBH(ucpi);
+       unsigned begin = ucpi->c_freeoff;
        u8 mask;
        switch (uspi->s_fpb) {
        case 8:
@@ -475,9 +477,11 @@ static inline int ubh_isblockset(struct ufs_sb_private_info * uspi,
        return 0;       
 }
 
-static inline void ubh_clrblock(struct ufs_sb_private_info * uspi,
-       struct ufs_buffer_head * ubh, unsigned begin, unsigned block)
+static inline void ubh_clrblock(struct ufs_sb_private_info *uspi,
+       struct ufs_cg_private_info *ucpi, unsigned block)
 {
+       struct ufs_buffer_head *ubh = UCPI_UBH(ucpi);
+       unsigned begin = ucpi->c_freeoff;
        switch (uspi->s_fpb) {
        case 8:
                *ubh_get_addr (ubh, begin + block) = 0x00;
@@ -495,8 +499,10 @@ static inline void ubh_clrblock(struct ufs_sb_private_info * uspi,
 }
 
 static inline void ubh_setblock(struct ufs_sb_private_info * uspi,
-       struct ufs_buffer_head * ubh, unsigned begin, unsigned block)
+       struct ufs_cg_private_info *ucpi, unsigned block)
 {
+       struct ufs_buffer_head *ubh = UCPI_UBH(ucpi);
+       unsigned begin = ucpi->c_freeoff;
        switch (uspi->s_fpb) {
        case 8:
                *ubh_get_addr(ubh, begin + block) = 0xff;