diff options
author | Lakshmipathi.G <Lakshmipathi.G@giis.co.in> | 2017-04-15 15:43:08 +0530 |
---|---|---|
committer | David Sterba <dsterba@suse.com> | 2017-04-19 19:06:26 +0200 |
commit | 57909d702c4d636a5f733309202c36fe006d84e9 (patch) | |
tree | eb11848b8a9ec315c9049fc6deae7c32783b56f2 /tests/misc-tests | |
parent | 89093e6fd17dce4e74ccffb54504bb4278c77aaa (diff) |
btrfs-progs: misc-tests: Superblock corruption and recovery using backup
Signed-off-by: Lakshmipathi.G <Lakshmipathi.G@giis.co.in>
Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to 'tests/misc-tests')
-rwxr-xr-x | tests/misc-tests/020-fix-superblock-corruption/test.sh | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/tests/misc-tests/020-fix-superblock-corruption/test.sh b/tests/misc-tests/020-fix-superblock-corruption/test.sh new file mode 100755 index 00000000..77c1a5aa --- /dev/null +++ b/tests/misc-tests/020-fix-superblock-corruption/test.sh @@ -0,0 +1,34 @@ +#!/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 + +FIRST_SUPERBLOCK_OFFSET=65536 + +test_superblock_restore() +{ + run_check $SUDO_HELPER "$TOP/mkfs.btrfs" -f "$TEST_DEV" + + # Corrupt superblock checksum + run_check $SUDO_HELPER dd if=/dev/zero of="$TEST_DEV" \ + seek="$FIRST_SUPERBLOCK_OFFSET" bs=1 count=4 conv=notrunc + + # Run btrfs check to detect corruption + run_mayfail "$TOP/btrfs" check "$TEST_DEV" && \ + _fail "btrfs check should detect corruption" + + # Copy backup superblock to primary + run_check "$TOP/btrfs-select-super" -s 1 "$TEST_DEV" + + # Perform btrfs check + run_check "$TOP/btrfs" check "$TEST_DEV" +} + +test_superblock_restore |