btrfs-progs: misc-tests: Superblock corruption and recovery using backup.
PATCH v3 1/1 btrfs-progs: misc-tests: Superblock corruption and recovery using backup.
Test script to recover damaged primary superblock using backup superblock.
--- .../019-fix-superblock-corruption/test.sh | 36 ++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100755 tests/misc-tests/019-fix-superblock-corruption/test.sh
tests/misc-tests/019-fix-superblock-corruption/test.sh new file +36 -0
@@ -0,0 +1,36 @@ +#!/bin/bash +# +# Corrupt primary superblock and restore it using backup superblock. +# + +source $TOP/tests/common + +check_prereq btrfs-select-super +check_prereq btrfs + +setup_root_helper +prepare_test_dev 512M + +FIRST_SUPERBLOCK_OFFSET=65536 + +test_superblock_restore() +{ + run_check $SUDO_HELPER $TOP/mkfs.btrfs -f $TEST_DEV + + # Corrupt superblock checksum + dd if=/dev/zero of=$TEST_DEV seek=$FIRST_SUPERBLOCK_OFFSET bs=1 \ + count=4 conv=notrunc &> /dev/null + # Run btrfs check to detect corruption + $TOP/btrfs check $TEST_DEV >& /dev/null && \ + _fail "btrfs check should detect corruption" + # Copy backup superblock to primary + run_check $TOP/btrfs-select-super -s 1 $TEST_DEV + + echo "Performing btrfs check" &>> $RESULTS + $TOP/btrfs check $TEST_DEV &>> $RESULTS + if [ $? -ne 0 ]; then + _fail "Failed to fix superblock." + fi +} + +test_superblock_restore
Signature · 1 line
2.7.4
Quoted 3 lines · Lakshmipathi.G
Test script to recover damaged primary superblock using backup superblock.
Signed-off-by Lakshmipathi.G <[email protected]>
Thanks for the test, a few comments below.
Quoted 26 lines
--- .../019-fix-superblock-corruption/test.sh | 36 ++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100755 tests/misc-tests/019-fix-superblock-corruption/test.shtests/misc-tests/019-fix-superblock-corruption/test.sh new file +15
-0@@ -0,0 +1,36 @@ +#!/bin/bash +# +# Corrupt primary superblock and restore it using backup superblock. +# + +source $TOP/tests/common + +check_prereq btrfs-select-super +check_prereq btrfs + +setup_root_helper +prepare_test_dev 512M + +FIRST_SUPERBLOCK_OFFSET=65536 +
tests/misc-tests/019-fix-superblock-corruption/test.sh line 25
Quoted 10 lines
tests/misc-tests/019-fix-superblock-corruption/test.sh new file +10
-0+test_superblock_restore() +{ + run_check $SUDO_HELPER $TOP/mkfs.btrfs -f $TEST_DEV + + # Corrupt superblock checksum + dd if=/dev/zero of=$TEST_DEV seek=$FIRST_SUPERBLOCK_OFFSET bs=1 \ + count=4 conv=notrunc &> /dev/null + # Run btrfs check to detect corruption + $TOP/btrfs check $TEST_DEV >& /dev/null && \ + _fail "btrfs check should detect corruption"
No run_check? In general all test output is desired and should be in the test log so you can use 'run_mayfail'. Also, please keep the entier output and don't redirect it to /dev/null .
tests/misc-tests/019-fix-superblock-corruption/test.sh line 29
Quoted 4 lines
tests/misc-tests/019-fix-superblock-corruption/test.sh new file +4
-0+ # Copy backup superblock to primary + run_check $TOP/btrfs-select-super -s 1 $TEST_DEV + + echo "Performing btrfs check" &>> $RESULTS
Use _log for that
tests/misc-tests/019-fix-superblock-corruption/test.sh line 30
Quoted 1 line
tests/misc-tests/019-fix-superblock-corruption/test.sh new file +1
-0+ $TOP/btrfs check $TEST_DEV &>> $RESULTS
Use run_check
tests/misc-tests/019-fix-superblock-corruption/test.sh line 32
Quoted 2 lines
tests/misc-tests/019-fix-superblock-corruption/test.sh new file +2
-0+ if [ $? -ne 0 ]; then + _fail "Failed to fix superblock."
And this would be unnecessary.
I've added a section to tests/README.md to describe the common coding practices. Feel free to read/update/fix. Older tests could violate the recommendations so at least new tests are in line and we'll update the rest incrementally.
Quoted 64 lines · David Sterba
Quoted 3 lines · Lakshmipathi.G
Test script to recover damaged primary superblock using backup superblock.
Signed-off-by Lakshmipathi.G <[email protected]>Thanks for the test, a few comments below.
Quoted 26 lines
--- .../019-fix-superblock-corruption/test.sh | 36 ++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100755 tests/misc-tests/019-fix-superblock-corruption/test.shtests/misc-tests/019-fix-superblock-corruption/test.sh new file +15
-0@@ -0,0 +1,36 @@ +#!/bin/bash +# +# Corrupt primary superblock and restore it using backup superblock. +# + +source $TOP/tests/common + +check_prereq btrfs-select-super +check_prereq btrfs + +setup_root_helper +prepare_test_dev 512M + +FIRST_SUPERBLOCK_OFFSET=65536 +tests/misc-tests/019-fix-superblock-corruption/test.sh line 25
Quoted 10 lines
tests/misc-tests/019-fix-superblock-corruption/test.sh new file +10
-0+test_superblock_restore() +{ + run_check $SUDO_HELPER $TOP/mkfs.btrfs -f $TEST_DEV + + # Corrupt superblock checksum + dd if=/dev/zero of=$TEST_DEV seek=$FIRST_SUPERBLOCK_OFFSET bs=1 \ + count=4 conv=notrunc &> /dev/null + # Run btrfs check to detect corruption + $TOP/btrfs check $TEST_DEV >& /dev/null && \ + _fail "btrfs check should detect corruption"No
run_check? In general all test output is desired and should be in the test log so you can use 'run_mayfail'. Also, please keep the entier output and don't redirect it to/dev/null.tests/misc-tests/019-fix-superblock-corruption/test.sh line 29
Quoted 4 lines
tests/misc-tests/019-fix-superblock-corruption/test.sh new file +4
-0+ # Copy backup superblock to primary + run_check $TOP/btrfs-select-super -s 1 $TEST_DEV + + echo "Performing btrfs check" &>> $RESULTSUse
_logfor thattests/misc-tests/019-fix-superblock-corruption/test.sh line 30
Quoted 1 line
tests/misc-tests/019-fix-superblock-corruption/test.sh new file +1
-0+ $TOP/btrfs check $TEST_DEV &>> $RESULTSUse
run_checktests/misc-tests/019-fix-superblock-corruption/test.sh line 32
Quoted 2 lines
tests/misc-tests/019-fix-superblock-corruption/test.sh new file +2
-0+ if [ $? -ne 0 ]; then + _fail "Failed to fix superblock."And this would be unnecessary.
Quoted 4 lines
I've added a section to
tests/README.mdto describe the common coding practices. Feel free to read/update/fix. Older tests could violate the recommendations so at least new tests are in line and we'll update the rest incrementally.
Just sent a new patch(v4), addressing above review comments.thanks.
Cheers.
Lakshmipathi.G