git: 7f65ff3d8854 - stable/13 - Cleanups to UFS/FFS ffs_checkblk().
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sun, 20 Aug 2023 04:28:26 UTC
The branch stable/13 has been updated by mckusick:
URL: https://cgit.FreeBSD.org/src/commit/?id=7f65ff3d8854026cce3428eab1ec9afedf1112a8
commit 7f65ff3d8854026cce3428eab1ec9afedf1112a8
Author: Kirk McKusick <mckusick@FreeBSD.org>
AuthorDate: 2023-08-11 05:38:56 +0000
Commit: Kirk McKusick <mckusick@FreeBSD.org>
CommitDate: 2023-08-20 04:27:38 +0000
Cleanups to UFS/FFS ffs_checkblk().
No functional change intended.
Sponsored-by: The FreeBSD Foundation
(cherry picked from commit 677023529d6a46da52ed780eb299c6754a75f6ef)
---
sys/ufs/ffs/ffs_alloc.c | 44 +++++++++++++++++++++++---------------------
1 file changed, 23 insertions(+), 21 deletions(-)
diff --git a/sys/ufs/ffs/ffs_alloc.c b/sys/ufs/ffs/ffs_alloc.c
index 35c8662307c6..04dbfd90dee4 100644
--- a/sys/ufs/ffs/ffs_alloc.c
+++ b/sys/ufs/ffs/ffs_alloc.c
@@ -114,7 +114,7 @@ static void ffs_blkfree_cg(struct ufsmount *, struct fs *,
struct vnode *, ufs2_daddr_t, long, ino_t,
struct workhead *);
#ifdef INVARIANTS
-static int ffs_checkblk(struct inode *, ufs2_daddr_t, long);
+static int ffs_checkfreeblk(struct inode *, ufs2_daddr_t, long);
#endif
static ufs2_daddr_t ffs_clusteralloc(struct inode *, uint64_t, ufs2_daddr_t,
int);
@@ -600,7 +600,7 @@ ffs_reallocblks_ufs1(
end_lbn = start_lbn + len - 1;
#ifdef INVARIANTS
for (i = 0; i < len; i++)
- if (!ffs_checkblk(ip,
+ if (!ffs_checkfreeblk(ip,
dbtofsb(fs, buflist->bs_children[i]->b_blkno), fs->fs_bsize))
panic("ffs_reallocblks: unallocated block 1");
for (i = 1; i < len; i++)
@@ -721,7 +721,7 @@ ffs_reallocblks_ufs1(
soff = -i;
}
#ifdef INVARIANTS
- if (!ffs_checkblk(ip,
+ if (!ffs_checkfreeblk(ip,
dbtofsb(fs, buflist->bs_children[i]->b_blkno), fs->fs_bsize))
panic("ffs_reallocblks: unallocated block 2");
if (dbtofsb(fs, buflist->bs_children[i]->b_blkno) != *bap)
@@ -804,7 +804,8 @@ ffs_reallocblks_ufs1(
NOTRIM_KEY : SINGLETON_KEY);
bp->b_blkno = fsbtodb(fs, blkno);
#ifdef INVARIANTS
- if (!ffs_checkblk(ip, dbtofsb(fs, bp->b_blkno), fs->fs_bsize))
+ if (!ffs_checkfreeblk(ip, dbtofsb(fs, bp->b_blkno),
+ fs->fs_bsize))
panic("ffs_reallocblks: unallocated block 3");
#endif
#ifdef DIAGNOSTIC
@@ -865,7 +866,7 @@ ffs_reallocblks_ufs2(
end_lbn = start_lbn + len - 1;
#ifdef INVARIANTS
for (i = 0; i < len; i++)
- if (!ffs_checkblk(ip,
+ if (!ffs_checkfreeblk(ip,
dbtofsb(fs, buflist->bs_children[i]->b_blkno), fs->fs_bsize))
panic("ffs_reallocblks: unallocated block 1");
for (i = 1; i < len; i++)
@@ -985,7 +986,7 @@ ffs_reallocblks_ufs2(
soff = -i;
}
#ifdef INVARIANTS
- if (!ffs_checkblk(ip,
+ if (!ffs_checkfreeblk(ip,
dbtofsb(fs, buflist->bs_children[i]->b_blkno), fs->fs_bsize))
panic("ffs_reallocblks: unallocated block 2");
if (dbtofsb(fs, buflist->bs_children[i]->b_blkno) != *bap)
@@ -1068,7 +1069,8 @@ ffs_reallocblks_ufs2(
NOTRIM_KEY : SINGLETON_KEY);
bp->b_blkno = fsbtodb(fs, blkno);
#ifdef INVARIANTS
- if (!ffs_checkblk(ip, dbtofsb(fs, bp->b_blkno), fs->fs_bsize))
+ if (!ffs_checkfreeblk(ip, dbtofsb(fs, bp->b_blkno),
+ fs->fs_bsize))
panic("ffs_reallocblks: unallocated block 3");
#endif
#ifdef DIAGNOSTIC
@@ -2285,7 +2287,7 @@ ffs_blkfree_cg(struct ufsmount *ump,
printf("dev=%s, bno = %jd, bsize = %ld, size = %ld, fs = %s\n",
devtoname(dev), (intmax_t)bno, (long)fs->fs_bsize,
size, fs->fs_fsmnt);
- panic("ffs_blkfree_cg: bad size");
+ panic("ffs_blkfree_cg: invalid size");
}
#endif
if ((uint64_t)bno >= fs->fs_size) {
@@ -2748,11 +2750,11 @@ ffs_blkfree(struct ufsmount *ump,
#ifdef INVARIANTS
/*
- * Verify allocation of a block or fragment. Returns true if block or
- * fragment is allocated, false if it is free.
+ * Verify allocation of a block or fragment.
+ * Return 1 if block or fragment is free.
*/
static int
-ffs_checkblk(struct inode *ip,
+ffs_checkfreeblk(struct inode *ip,
ufs2_daddr_t bno,
long size)
{
@@ -2760,34 +2762,34 @@ ffs_checkblk(struct inode *ip,
struct cg *cgp;
struct buf *bp;
ufs1_daddr_t cgbno;
- int i, error, frags, free;
+ int i, error, frags, blkalloced;
uint8_t *blksfree;
fs = ITOFS(ip);
if ((uint64_t)size > fs->fs_bsize || fragoff(fs, size) != 0) {
printf("bsize = %ld, size = %ld, fs = %s\n",
(long)fs->fs_bsize, size, fs->fs_fsmnt);
- panic("ffs_checkblk: bad size");
+ panic("ffs_checkfreeblk: bad size");
}
if ((uint64_t)bno >= fs->fs_size)
- panic("ffs_checkblk: bad block %jd", (intmax_t)bno);
+ panic("ffs_checkfreeblk: too big block %jd", (intmax_t)bno);
error = ffs_getcg(fs, ITODEVVP(ip), dtog(fs, bno), 0, &bp, &cgp);
if (error)
- panic("ffs_checkblk: cylinder group read failed");
+ panic("ffs_checkfreeblk: cylinder group read failed");
blksfree = cg_blksfree(cgp);
cgbno = dtogd(fs, bno);
if (size == fs->fs_bsize) {
- free = ffs_isblock(fs, blksfree, fragstoblks(fs, cgbno));
+ blkalloced = ffs_isblock(fs, blksfree, fragstoblks(fs, cgbno));
} else {
frags = numfrags(fs, size);
- for (free = 0, i = 0; i < frags; i++)
+ for (blkalloced = 0, i = 0; i < frags; i++)
if (isset(blksfree, cgbno + i))
- free++;
- if (free != 0 && free != frags)
- panic("ffs_checkblk: partially free fragment");
+ blkalloced++;
+ if (blkalloced != 0 && blkalloced != frags)
+ panic("ffs_checkfreeblk: partially free fragment");
}
brelse(bp);
- return (!free);
+ return (blkalloced == 0);
}
#endif /* INVARIANTS */