btrfs-progs: fsck-tests: verify 'btrfs check --repair' fixes corrupted nlink field
PATCH v3 1/1 btrfs-progs: fsck-tests: verify 'btrfs check --repair' fixes corrupted nlink field
--- tests/fsck-tests/026-check-inode-link/test.sh | 30 +++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100755 tests/fsck-tests/026-check-inode-link/test.sh
tests/fsck-tests/026-check-inode-link/test.sh new file +30 -0
@@ -0,0 +1,30 @@ +#!/bin/bash +# verify that 'btrfs check --repair' fixes corrupted inode nlink field + +source $TOP/tests/common + +check_prereq btrfs-corrupt-block +check_prereq mkfs.btrfs + +setup_root_helper +prepare_test_dev 512M + +test_inode_nlink_field() +{ + run_check $SUDO_HELPER $TOP/mkfs.btrfs -f $TEST_DEV + + run_check_mount_test_dev + run_check $SUDO_HELPER touch $TEST_MNT/test_nlink.txt + + # find inode_number + inode_number=`stat -c%i $TEST_MNT/test_nlink.txt` + run_check_umount_test_dev + + # corrupt nlink field of inode object + run_check $SUDO_HELPER $TOP/btrfs-corrupt-block -i $inode_number \ + -f nlink $TEST_DEV + + check_image $TEST_DEV +} + +test_inode_nlink_field
Signature · 1 line
2.7.4
Quoted 12 lines · Lakshmipathi.G
Signed-off-by Lakshmipathi.G <[email protected]>--- tests/fsck-tests/026-check-inode-link/test.sh | 30 +++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100755 tests/fsck-tests/026-check-inode-link/test.shtests/fsck-tests/026-check-inode-link/test.sh new file +0
-0
tests/fsck-tests/026-check-inode-link/test.sh line 10
Quoted 10 lines
tests/fsck-tests/026-check-inode-link/test.sh new file +10
-0@@ -0,0 +1,30 @@ +#!/bin/bash +# verify that 'btrfs check --repair' fixes corrupted inode nlink field + +source $TOP/tests/common + +check_prereq btrfs-corrupt-block +check_prereq mkfs.btrfs + +setup_root_helper +prepare_test_dev 512M
Please use default size unless you really need 512M for the test purposes.
Quoted 7 lines
tests/fsck-tests/026-check-inode-link/test.sh new file +7
-0+ +test_inode_nlink_field() +{ + run_check $SUDO_HELPER $TOP/mkfs.btrfs -f $TEST_DEV + + run_check_mount_test_dev + run_check $SUDO_HELPER touch $TEST_MNT/test_nlink.txt
tests/fsck-tests/026-check-inode-link/test.sh line 27
Quoted 10 lines
tests/fsck-tests/026-check-inode-link/test.sh new file +10
-0+ + # find inode_number + inode_number=`stat -c%i $TEST_MNT/test_nlink.txt` + run_check_umount_test_dev + + # corrupt nlink field of inode object + run_check $SUDO_HELPER $TOP/btrfs-corrupt-block -i $inode_number \ + -f nlink $TEST_DEV + + check_image $TEST_DEV
The wrapper runs a pre-check that must detect errors, then runs --repair and then again a plain check. Is this intended here?
I think we should try to mount the fixed image again and read the file or check link count.
Please add shell quotation around all variables.
Quoted 39 lines · David Sterba
Quoted 12 lines · Lakshmipathi.G
Signed-off-by Lakshmipathi.G <[email protected]>--- tests/fsck-tests/026-check-inode-link/test.sh | 30 +++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100755 tests/fsck-tests/026-check-inode-link/test.shtests/fsck-tests/026-check-inode-link/test.sh new file +0
-0tests/fsck-tests/026-check-inode-link/test.sh line 10
Quoted 10 lines
tests/fsck-tests/026-check-inode-link/test.sh new file +10
-0@@ -0,0 +1,30 @@ +#!/bin/bash +# verify that 'btrfs check --repair' fixes corrupted inode nlink field + +source $TOP/tests/common + +check_prereq btrfs-corrupt-block +check_prereq mkfs.btrfs + +setup_root_helper +prepare_test_dev 512MPlease use default size unless you really need 512M for the test purposes.
Quoted 12 lines
tests/fsck-tests/026-check-inode-link/test.sh new file +12
-0+ +test_inode_nlink_field() +{ + run_check $SUDO_HELPER $TOP/mkfs.btrfs -f $TEST_DEV + + run_check_mount_test_dev + run_check $SUDO_HELPER touch $TEST_MNT/test_nlink.txt + + # find inode_number + inode_number=`stat -c%i $TEST_MNT/test_nlink.txt` + run_check_umount_test_dev +
Quoted 9 lines
tests/fsck-tests/026-check-inode-link/test.sh line 27
Quoted 5 lines
tests/fsck-tests/026-check-inode-link/test.sh new file +5
-0+ # corrupt nlink field of inode object + run_check $SUDO_HELPER $TOP/btrfs-corrupt-block -i $inode_number \ + -f nlink $TEST_DEV + + check_image $TEST_DEVThe wrapper runs a pre-check that must detect errors, then runs --repair and then again a plain check. Is this intended here?
Yes its intentional. The test should fail, if its unable to detect the corruption. This is to ensure btrfs-corrupt-block -f nlink works as expected.
Quoted 3 lines
I think we should try to mount the fixed image again and read the file or check link count.
Right, I missed the verification part, will added this and change prepare_test_dev to default size.
Quoted 1 line
Please add shell quotation around all variables.
Now quotation is added.
Cheers.
Lakshmipathi.G