Skip to contentSkip to conversation

btrfs-progs: fsck-tests: verify 'btrfs check --repair' fixes corrupted nlink field

PATCH Superseded Lakshmipathi.G 2 participants 3 messages Feb 2, 2017 – Apr 15, 2017 Btrfs file system

v3 of 4 Superseded Latest is v4 →

lore
Share & tools
lore
#0 lore raw

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
new file mode 100755
index 0000000..6822ee2
@@ -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
#1 lore raw
Quoted 12 lines · Lakshmipathi.G
---
 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 +0 -0
new file mode 100755
index 0000000..6822ee2

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.

#2 lore raw
Quoted 39 lines · David Sterba
Quoted 12 lines · Lakshmipathi.G
---
 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 +0 -0
new file mode 100755
index 0000000..6822ee2

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 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_DEV

The 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