common/rc: optionally test xfs_repair index rebuilding

Run xfs_repair twice more at the end of each test -- once to rebuild
the btree indices, and again with -n to check the rebuild work.
This is in addition to the regular dry-run spot check.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
This commit is contained in:
Darrick J. Wong
2016-08-03 15:45:36 -07:00
committed by Eryu Guan
parent 49b0eda17a
commit dd6eca7b0e
2 changed files with 33 additions and 0 deletions
+4
View File
@@ -80,6 +80,10 @@ Preparing system for tests (IRIX and Linux):
added to the end of fsstresss and fsx invocations, respectively, added to the end of fsstresss and fsx invocations, respectively,
in case you wish to exclude certain operational modes from these in case you wish to exclude certain operational modes from these
tests. tests.
- set TEST_XFS_REPAIR_REBUILD=1 to have _check_xfs_filesystem
run xfs_repair -n to check the filesystem; xfs_repair to rebuild
metadata indexes; and xfs_repair -n (a third time) to check the
results of the rebuilding.
- or add a case to the switch in common/config assigning - or add a case to the switch in common/config assigning
these variables based on the hostname of your test these variables based on the hostname of your test
+29
View File
@@ -2451,6 +2451,35 @@ _check_xfs_filesystem()
fi fi
rm -f $tmp.fs_check $tmp.logprint $tmp.repair rm -f $tmp.fs_check $tmp.logprint $tmp.repair
# Optionally test the index rebuilding behavior.
if [ -n "$TEST_XFS_REPAIR_REBUILD" ]; then
$XFS_REPAIR_PROG $extra_options $extra_log_options $extra_rt_options $device >$tmp.repair 2>&1
if [ $? -ne 0 ]; then
echo "_check_xfs_filesystem: filesystem on $device is inconsistent (rebuild) (see $seqres.full)"
echo "_check_xfs_filesystem: filesystem on $device is inconsistent (rebuild)" >>$seqres.full
echo "*** xfs_repair output ***" >>$seqres.full
cat $tmp.repair | _fix_malloc >>$seqres.full
echo "*** end xfs_repair output" >>$seqres.full
ok=0
fi
rm -f $tmp.repair
$XFS_REPAIR_PROG -n $extra_options $extra_log_options $extra_rt_options $device >$tmp.repair 2>&1
if [ $? -ne 0 ]; then
echo "_check_xfs_filesystem: filesystem on $device is inconsistent (rebuild-reverify) (see $seqres.full)"
echo "_check_xfs_filesystem: filesystem on $device is inconsistent (rebuild-reverify)" >>$seqres.full
echo "*** xfs_repair -n output ***" >>$seqres.full
cat $tmp.repair | _fix_malloc >>$seqres.full
echo "*** end xfs_repair output" >>$seqres.full
ok=0
fi
rm -f $tmp.repair
fi
if [ $ok -eq 0 ] if [ $ok -eq 0 ]
then then
echo "*** mount output ***" >>$seqres.full echo "*** mount output ***" >>$seqres.full