OSDN Git Service

xfs: log proper length of btree block in scrub/repair
authorEric Sandeen <sandeen@redhat.com>
Wed, 28 Aug 2019 00:35:12 +0000 (17:35 -0700)
committerDarrick J. Wong <darrick.wong@oracle.com>
Wed, 28 Aug 2019 15:31:02 +0000 (08:31 -0700)
xfs_trans_log_buf() takes a final argument of the last byte to
log in the buffer; b_length is in basic blocks, so this isn't
the correct last byte.  Fix it.

Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
fs/xfs/scrub/repair.c

index 4cfeec5..7bcc755 100644 (file)
@@ -351,7 +351,7 @@ xrep_init_btblock(
        xfs_buf_zero(bp, 0, BBTOB(bp->b_length));
        xfs_btree_init_block(mp, bp, btnum, 0, 0, sc->sa.agno);
        xfs_trans_buf_set_type(tp, bp, XFS_BLFT_BTREE_BUF);
-       xfs_trans_log_buf(tp, bp, 0, bp->b_length);
+       xfs_trans_log_buf(tp, bp, 0, BBTOB(bp->b_length) - 1);
        bp->b_ops = ops;
        *bpp = bp;