2 # SPDX-License-Identifier: GPL-2.0
3 # Copyright (c) 2018 Oracle, Inc. All Rights Reserved.
7 # Test for two related regressions -- first, check that repair doesn't
8 # repeatedly rebuild directories with a single leafn block; and check that
9 # repair also doesn't crash when it hits a corrupt da btree with a zero before
13 seqres=$RESULT_DIR/$seq
14 echo "QA output created by $seq"
18 status=1 # failure is the default!
19 trap "_cleanup; exit \$status" 0 1 2 3 7 15
27 # get standard environment, filters and checks
33 # real QA test starts here
35 _require_scratch_xfs_fuzz_fields
37 echo "Format and populate"
38 _scratch_populate_cached nofill > $seqres.full 2>&1
41 grep rebuilding | sed -e 's/directory inode [0-9]*/directory inode XXX/g'
45 _scratch_xfs_repair > $tmp.repair 2>&1
46 cat $tmp.repair >> $seqres.full
47 cat $tmp.repair | filter_nbrepair
50 echo "Check leafn rebuilds"
54 echo "Fuzz nbtree[0].before to zero"
56 inum=$(stat -c '%i' $SCRATCH_MNT/S_IFDIR.FMT_NODE)
57 blk_sz=$(_get_block_size $SCRATCH_MNT)
59 leaf_offset=$(( (2 ** 35) / blk_sz ))
60 _scratch_xfs_fuzz_metadata_field "nbtree[0].before" "zeroes" "inode ${inum}" \
61 "dblock ${leaf_offset}" >> $seqres.full
63 echo "Check nbtree[0].before repair"