]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
xfs: only check da node header padding on v5 filesystems
authorDarrick J. Wong <darrick.wong@oracle.com>
Wed, 8 Nov 2017 20:21:05 +0000 (12:21 -0800)
committerDarrick J. Wong <darrick.wong@oracle.com>
Thu, 9 Nov 2017 17:10:45 +0000 (09:10 -0800)
It turns out that we only started zeroing a new da btree node's block
header on v5 filesystems.  Prior to that, we just wouldn't set anything
at all, which means that the pad field never got set and would retain
whatever happened to be in memory.

Therefore, we can only check the pad for zeroness on v5 filesystems.
shared/006 on a v4 filesystem exposes this scrub bug.

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

index 4c9839c401631eab3ab5d5d5d6a1cfc0ce6865d4..d94edd93cba833b602da7dfc3f510161d6cd62b9 100644 (file)
@@ -378,7 +378,8 @@ xfs_scrub_da_btree_block(
        blk->magic = be16_to_cpu(hdr3->hdr.magic);
        pmaxrecs = &ds->maxrecs[level];
 
-       if (hdr3->hdr.pad != cpu_to_be16(0))
+       /* We only started zeroing the header on v5 filesystems. */
+       if (xfs_sb_version_hascrc(&ds->sc->mp->m_sb) && hdr3->hdr.pad)
                xfs_scrub_da_set_corrupt(ds, level);
 
        /* Check the owner. */