diff --git a/Documentation/btrfs-scrub.asciidoc b/Documentation/btrfs-scrub.asciidoc index 44022657..03f7f008 100644 --- a/Documentation/btrfs-scrub.asciidoc +++ b/Documentation/btrfs-scrub.asciidoc @@ -16,7 +16,7 @@ and metadata blocks from all devices and verify checksums. Automatically repair corrupted blocks if there's a correct copy available. NOTE: Scrub is not a filesystem checker (fsck) and does not verify nor repair -structural damage in the filesystem. It really only checks checksums of of data +structural damage in the filesystem. It really only checks checksums of data and tree blocks, it doesn't ensure the content of tree blocks is valid and consistent. There's some validation performed when metadata blocks are read from disk but it's not extensive and cannot substitute full 'btrfs check' run. diff --git a/tests/cli-tests/011-defrag-recursion/test.sh b/tests/cli-tests/011-defrag-recursion/test.sh new file mode 100755 index 00000000..6123632c --- /dev/null +++ b/tests/cli-tests/011-defrag-recursion/test.sh @@ -0,0 +1,27 @@ +#!/bin/bash +# check how deep does recursive defrag go, currently it has to stop at +# mountpoint and subvolume boundary, ie. only the first file should +# appear in the list of processed files + +source "$TEST_TOP/common" + +check_prereq mkfs.btrfs +check_prereq btrfs + +setup_root_helper +prepare_test_dev + +run_check_mkfs_test_dev +run_check_mount_test_dev + +run_check $SUDO_HELPER dd if=/dev/zero bs=1M count=10 of="$TEST_MNT"/file1 +run_check $SUDO_HELPER "$TOP/btrfs" subvolume create "$TEST_MNT"/subv1 +run_check $SUDO_HELPER dd if=/dev/zero bs=1M count=10 of="$TEST_MNT"/subv1/file2 +run_check $SUDO_HELPER "$TOP/btrfs" subvolume snapshot "$TEST_MNT"/subv1 "$TEST_MNT"/snap1 +run_check $SUDO_HELPER dd if=/dev/zero bs=1M count=10 of="$TEST_MNT"/snap1/file3 + +run_check $SUDO_HELPER find "$TEST_MNT" +run_check_stdout $SUDO_HELPER "$TOP/btrfs" filesystem defrag -v -r "$TEST_MNT" | + grep -q 'file[23]' && _fail "recursive defrag went to subvolumes" + +run_check_umount_test_dev