Qu Wenruo
2014-Feb-26 02:32 UTC
[PATCH] btrfs-progs: Add test for btrfsck on "--init-csum/extent-tree"
Before this patchset btrfsck with "--init-csum-tree --extent-tree"
will
corrupt the btrfs fs.
This patch will add test case for the bug.
Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
---
tests/fsck-tests.sh | 49 +++++++++++++++++++++++++++++++++++++++++--------
1 file changed, 41 insertions(+), 8 deletions(-)
diff --git a/tests/fsck-tests.sh b/tests/fsck-tests.sh
index 25c390d..03b0586 100644
--- a/tests/fsck-tests.sh
+++ b/tests/fsck-tests.sh
@@ -6,27 +6,60 @@
#
here=`pwd`
+log=fsck-tests-results.txt
+img=test.img
+mp=mount_point
_fail()
{
- echo "$*" | tee -a fsck-tests-results.txt
+ echo "$*" | tee -a $log
exit 1
}
-rm -f fsck-tests-results.txt
+_clean()
+{
+ rm -f $log &> /dev/null
+ rm -f $img &> /dev/null
+ umount $mp &> /dev/null
+ rm -rf $mp &> /dev/null
+}
+
+_init()
+{
+ _clean
+ touch $img
+ truncate -s 5G $img
+ mkdir $mp
+}
+
+_init
for i in $(find $here/tests/fsck-tests -name '*.img')
do
echo " [TEST] $(basename $i)"
- echo "testing image $i" >> fsck-tests-results.txt
- $here/btrfs-image -r $i test.img >> fsck-tests-results.txt 2>&1 \
- || _fail "restore failed"
- $here/btrfsck test.img >> fsck-test-results.txt 2>&1
+ echo "testing image $i" >> $log
+ $here/btrfs-image -r $i $img >> $log 2>&1 || _fail "restore
failed"
+ $here/btrfsck $img >> $log 2>&1
[ $? -eq 0 ] && _fail "btrfsck should have detected
corruption"
- $here/btrfsck --repair test.img >> fsck-test-results.txt 2>&1 ||
\
+ $here/btrfsck --repair $img >> $log 2>&1 || \
_fail "btrfsck should have repaired the image"
- $here/btrfsck test.img >> fsck-test-results.txt 2>&1 || \
+ $here/btrfsck $img >> $log 2>&1 || \
_fail "btrfsck did not correct corruption"
+
done
+
+if [[ $EUID -ne 0 ]]; then
+ echo "init extent csum tree test needs to be run by root"
+ _clean
+ exit 0
+fi
+echo " [TEST] init extent csum tree"
+$here/mkfs.btrfs $img -f >> $log 2>&1
+$here/btrfsck $img --init-extent-tree --init-csum-tree >> $log
2>&1
+# just test whether the mount will success, since extent/csum tree is cleared
+# it will never pass btrfsck, but it should be OK to be mounted.
+mount $img $mp -t btrfs >> $log 2>&1 || _fail "btrfsck
corrupt the img"
+
+_clean
--
1.9.0
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs"
in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html