must be sure to always convert b_bno to disk block (db) units
authorKirk McKusick <mckusick@ucbvax.Berkeley.EDU>
Wed, 8 Jun 1988 09:52:04 +0000 (01:52 -0800)
committerKirk McKusick <mckusick@ucbvax.Berkeley.EDU>
Wed, 8 Jun 1988 09:52:04 +0000 (01:52 -0800)
SCCS-vsn: sbin/fsck/utilities.c 5.13

usr/src/sbin/fsck/utilities.c

index 3052033..c61a69a 100644 (file)
@@ -131,7 +131,7 @@ getdatablk(blkno, size)
        register BUFAREA *bp;
 
        for (bp = bufhead.b_next; bp != &bufhead; bp = bp->b_next)
        register BUFAREA *bp;
 
        for (bp = bufhead.b_next; bp != &bufhead; bp = bp->b_next)
-               if (bp->b_bno == blkno)
+               if (bp->b_bno == fsbtodb(&sblock, blkno))
                        goto foundit;
        for (bp = bufhead.b_prev; bp != &bufhead; bp = bp->b_prev)
                if ((bp->b_flags & B_INUSE) == 0)
                        goto foundit;
        for (bp = bufhead.b_prev; bp != &bufhead; bp = bp->b_prev)
                if ((bp->b_flags & B_INUSE) == 0)
@@ -162,12 +162,13 @@ getblk(bp, blk, size)
        daddr_t dblk;
 
        fcp = &dfile;
        daddr_t dblk;
 
        fcp = &dfile;
-       if (bp->b_bno == blk)
+       dblk = fsbtodb(&sblock, blk);
+       if (bp->b_bno == dblk)
                return (bp);
        flush(fcp, bp);
        diskreads++;
                return (bp);
        flush(fcp, bp);
        diskreads++;
-       bp->b_errs = bread(fcp, bp->b_un.b_buf, fsbtodb(&sblock, blk), size);
-       bp->b_bno = blk;
+       bp->b_errs = bread(fcp, bp->b_un.b_buf, dblk, size);
+       bp->b_bno = dblk;
        bp->b_size = size;
        return (bp);
 }
        bp->b_size = size;
        return (bp);
 }