btrfs-progs: tests: Allow check test to repair in lowmem mode for certain errors

Since lowmem mode can repair certain corruptions (mostly in fs tree),
insert a beacon into each fsck test cases to allow some of them be
tested in lowmem mode.

With this patch, fsck option override will check the beacon file
".lowmem_repairable" in the same directory of the test image, and if the
beacon exists, then it will also run lowmem mode repair to repair the
image.

Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
Qu Wenruo 2017-03-01 09:21:51 +08:00 committed by David Sterba
parent 63edc91441
commit eca65a8977
7 changed files with 14 additions and 1 deletions

View File

@ -14,11 +14,24 @@ fi
# gets arguments of a current command and can decide if the argument insertion # gets arguments of a current command and can decide if the argument insertion
# should happen, eg. if some option combination does not make sense or would # should happen, eg. if some option combination does not make sense or would
# break tests # break tests
#
# Return 0 if we need to skip option override
# Return 1 if we don't need to skip option override
_skip_spec() _skip_spec()
{ {
local beacon
beacon=.lowmem_repairable
# For lowmem repair, only support fs tree repair for now
# So we place lowmem repair beacon in the same dir of the test case
if echo "$TEST_ARGS_CHECK" | grep -q 'mode=lowmem' && if echo "$TEST_ARGS_CHECK" | grep -q 'mode=lowmem' &&
echo "$@" | grep -q -- '--repair'; then echo "$@" | grep -q -- '--repair'; then
return 0 dir="$(dirname ${@: -1})"
if [ -f ${dir}/${beacon} ]; then
return 1;
fi
return 0;
fi fi
return 1 return 1
} }