summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorDimitri John Ledkov <xnox@ubuntu.com>2018-05-08 14:17:29 -0700
committerDimitri John Ledkov <xnox@ubuntu.com>2018-05-08 14:17:29 -0700
commitd00c9550da1801a0eaff5cedf4312e24691b31ea (patch)
tree3881ca1764ef792259e1b70f12c884a3ac0c0715 /tests
parentdab6d2181f1f194ec3a76d900cf2c6533379cbea (diff)
New upstream release.
Diffstat (limited to 'tests')
-rw-r--r--tests/README.md24
-rw-r--r--tests/common7
-rwxr-xr-xtests/convert-tests/014-reiserfs-tail-handling/test.sh5
-rwxr-xr-xtests/convert-tests/016-invalid-large-inline-extent/test.sh22
-rwxr-xr-xtests/fsck-tests/015-tree-reloc-tree/test.sh7
-rw-r--r--tests/fsck-tests/020-extent-ref-cases/extent_data_ref.imgbin0 -> 6144 bytes
-rwxr-xr-xtests/fsck-tests/020-extent-ref-cases/test.sh5
-rw-r--r--tests/fsck-tests/029-valid-orphan-item/orphan_inode.img.xzbin0 -> 1620 bytes
-rwxr-xr-xtests/fsck-tests/029-valid-orphan-item/test.sh15
-rw-r--r--tests/fsck-tests/030-reflinked-prealloc-extents/reflinked-prealloc-extents.img.xzbin0 -> 3244 bytes
-rwxr-xr-xtests/fsck-tests/030-reflinked-prealloc-extents/test.sh42
-rwxr-xr-xtests/fsck-tests/031-metadatadump-check-data-csum/test.sh30
-rwxr-xr-xtests/fuzz-tests/001-simple-check-unmounted/test.sh7
-rwxr-xr-xtests/fuzz-tests/002-simple-image/test.sh7
-rwxr-xr-xtests/fuzz-tests/003-multi-check-unmounted/test.sh2
-rwxr-xr-xtests/fuzz-tests/004-simple-dump-tree/test.sh7
-rwxr-xr-xtests/fuzz-tests/005-simple-dump-super/test.sh6
-rwxr-xr-xtests/fuzz-tests/006-simple-tree-stats/test.sh7
-rwxr-xr-xtests/fuzz-tests/008-simple-chunk-recover/test.sh4
-rwxr-xr-xtests/fuzz-tests/009-simple-zero-log/test.sh4
-rwxr-xr-xtests/misc-tests.sh1
-rwxr-xr-xtests/misc-tests/001-btrfstune-features/test.sh13
-rwxr-xr-xtests/misc-tests/002-uuid-rewrite/test.sh43
-rwxr-xr-xtests/misc-tests/003-zero-log/test.sh32
-rwxr-xr-xtests/misc-tests/004-shrink-fs/test.sh36
-rwxr-xr-xtests/misc-tests/005-convert-progress-thread-crash/test.sh6
-rwxr-xr-xtests/misc-tests/006-image-on-missing-device/test.sh22
-rwxr-xr-xtests/misc-tests/007-subvolume-sync/test.sh18
-rwxr-xr-xtests/misc-tests/008-leaf-crossing-stripes/test.sh4
-rwxr-xr-xtests/misc-tests/009-subvolume-sync-must-wait/test.sh28
-rwxr-xr-xtests/misc-tests/010-convert-delete-ext2-subvol/test.sh10
-rwxr-xr-xtests/misc-tests/011-delete-missing-device/test.sh22
-rwxr-xr-xtests/misc-tests/012-find-root-no-result/test.sh4
-rwxr-xr-xtests/misc-tests/013-subvolume-sync-crash/test.sh24
-rwxr-xr-xtests/misc-tests/014-filesystem-label/test.sh24
-rwxr-xr-xtests/misc-tests/015-dump-super-garbage/test.sh18
-rwxr-xr-xtests/misc-tests/016-send-clone-src/test.sh12
-rwxr-xr-xtests/misc-tests/018-recv-end-of-stream/test.sh68
-rwxr-xr-xtests/misc-tests/019-receive-clones-on-mounted-subvol/test.sh4
-rwxr-xr-xtests/misc-tests/021-image-multi-devices/test.sh22
-rwxr-xr-xtests/misc-tests/023-device-usage-with-missing-device/test.sh6
-rwxr-xr-xtests/misc-tests/024-inspect-internal-rootid/test.sh6
-rwxr-xr-xtests/misc-tests/028-superblock-recover/test.sh6
-rwxr-xr-xtests/misc-tests/029-send-p-different-mountpoints/test.sh51
-rwxr-xr-xtests/misc-tests/030-missing-device-image/test.sh58
-rwxr-xr-xtests/mkfs-tests/001-basic-profiles/test.sh19
-rwxr-xr-xtests/mkfs-tests/004-rootdir-keeps-size/test.sh12
-rwxr-xr-xtests/mkfs-tests/005-long-device-name-for-ssd/test.sh20
-rwxr-xr-xtests/mkfs-tests/006-partitioned-loopdev/test.sh10
-rwxr-xr-xtests/mkfs-tests/007-mix-nodesize-sectorsize/test.sh16
-rwxr-xr-xtests/mkfs-tests/008-sectorsize-nodesize-combination/test.sh10
-rwxr-xr-xtests/mkfs-tests/010-minimal-size/test.sh6
-rwxr-xr-xtests/mkfs-tests/011-rootdir-create-file/test.sh2
-rwxr-xr-xtests/mkfs-tests/012-rootdir-no-shrink/test.sh8
-rwxr-xr-xtests/mkfs-tests/013-reserved-1M-for-single/test.sh6
-rwxr-xr-xtests/mkfs-tests/014-rootdir-inline-extent/test.sh46
-rwxr-xr-xtests/mkfs-tests/015-fstree-uuid-otime/test.sh35
-rwxr-xr-xtests/mkfs-tests/016-rootdir-bad-symbolic-link/test.sh26
58 files changed, 638 insertions, 317 deletions
diff --git a/tests/README.md b/tests/README.md
index d4b80da1..d14d727c 100644
--- a/tests/README.md
+++ b/tests/README.md
@@ -189,6 +189,27 @@ $ TEST=012\* ./misc-tests.sh # from tests/
7. A commit that fixes a bug should be applied before the test that verifies
the fix. This is to keep the git history bisectable.
+
+### Test images
+
+Most tests should be able to create the test images from scratch, using regular
+commands and file operation. The commands also document the testcase and use
+the teste code and kernel of the environment.
+
+In other cases, a pre-created image may be the right way if the above does not
+work (eg. comparing output, requesting an exact layout or some intermediate
+state that would be hard to achieve otherwise).
+
+* images that don't need data and valid checksums can be created by
+ `btrfs-image`, the image can be compressed by the tool itself (file extension
+ `.img`) or compressed externally (recognized is `.img.xz`)
+
+* raw images that are binary dump of an existing image, created eg. from a
+ sparse file (`.raw` or `.raw.xz`)
+
+Use `xz --best` and try to get the smallest size as the file is stored in git.
+
+
### Crafted/fuzzed images
Images that are created by fuzzing or specially crafted to trigger some error
@@ -232,9 +253,10 @@ The tests assume write acesss to their directories.
* quote all variables by default, any path, even the TOP could need that, and
we use it everywhere
+ * even if the variable is safe, use quotes for consistency and to ease
+ reading the code
* there are exceptions:
* `$SUDO_HELPER` as it might be intentionally unset
- * the variable is obviously set to a value that does not require it
* use `#!/bin/bash` explicitly
* check for all external dependencies (`check_prereq_global`)
* check for internal dependencies (`check_prereq`), though the basic set is
diff --git a/tests/common b/tests/common
index fae30f1d..4b266c5b 100644
--- a/tests/common
+++ b/tests/common
@@ -54,6 +54,13 @@ _log()
echo "$*" | tee -a "$RESULTS"
}
+# copy stdout to log and pass to stdout, eg. another stdout consumer, commands
+# should redirect stderr to stdout if this is consmed by further commands
+_log_stdout()
+{
+ tee -a "$RESULTS"
+}
+
_not_run()
{
echo " [NOTRUN] $*"
diff --git a/tests/convert-tests/014-reiserfs-tail-handling/test.sh b/tests/convert-tests/014-reiserfs-tail-handling/test.sh
index 5714dc6c..3be2ed5b 100755
--- a/tests/convert-tests/014-reiserfs-tail-handling/test.sh
+++ b/tests/convert-tests/014-reiserfs-tail-handling/test.sh
@@ -18,10 +18,9 @@ prepare_test_dev
check_prereq btrfs-convert
check_global_prereq md5sum
check_global_prereq mkreiserfs
-check_global_prereq perl
-perl -e "print 'a'x8192;" > input
-perl -e "print 'b'x8192;" > input2
+printf "%0.sa" {1..8192} > input
+printf "%0.sb" {1..8192} > input2
default_mkfs="mkreiserfs -b 4096"
convert_test_preamble '' 'tail conversion test' 16k "$default_mkfs"
diff --git a/tests/convert-tests/016-invalid-large-inline-extent/test.sh b/tests/convert-tests/016-invalid-large-inline-extent/test.sh
new file mode 100755
index 00000000..f37c7c09
--- /dev/null
+++ b/tests/convert-tests/016-invalid-large-inline-extent/test.sh
@@ -0,0 +1,22 @@
+#!/bin/bash
+# Check if btrfs-convert refuses to rollback the filesystem, and leave the fs
+# and the convert image untouched
+
+source "$TEST_TOP/common"
+source "$TEST_TOP/common.convert"
+
+setup_root_helper
+prepare_test_dev
+check_prereq btrfs-convert
+check_global_prereq mke2fs
+
+convert_test_prep_fs ext4 mke2fs -t ext4 -b 4096
+
+# Create a 6K file, which should not be inlined
+run_check $SUDO_HELPER dd if=/dev/zero bs=2k count=3 of="$TEST_MNT/file1"
+
+run_check_umount_test_dev
+
+# convert_test_do_convert() will call btrfs check, which should expose any
+# invalid inline extent with too large size
+convert_test_do_convert
diff --git a/tests/fsck-tests/015-tree-reloc-tree/test.sh b/tests/fsck-tests/015-tree-reloc-tree/test.sh
index afad1e8d..5d9d5122 100755
--- a/tests/fsck-tests/015-tree-reloc-tree/test.sh
+++ b/tests/fsck-tests/015-tree-reloc-tree/test.sh
@@ -5,15 +5,12 @@
# Also due to the short life span of reloc tree, save the as dump example for
# later usage.
-source "$TOP/tests/common"
+source "$TEST_TOP/common"
check_prereq btrfs
check_image() {
- local image
-
- image=$1
- run_check "$TOP/btrfs" check "$image"
+ run_check "$TOP/btrfs" check "$1"
}
check_all_images
diff --git a/tests/fsck-tests/020-extent-ref-cases/extent_data_ref.img b/tests/fsck-tests/020-extent-ref-cases/extent_data_ref.img
new file mode 100644
index 00000000..3ab2396b
--- /dev/null
+++ b/tests/fsck-tests/020-extent-ref-cases/extent_data_ref.img
Binary files differ
diff --git a/tests/fsck-tests/020-extent-ref-cases/test.sh b/tests/fsck-tests/020-extent-ref-cases/test.sh
index 9cf99a51..a1bf75b1 100755
--- a/tests/fsck-tests/020-extent-ref-cases/test.sh
+++ b/tests/fsck-tests/020-extent-ref-cases/test.sh
@@ -20,10 +20,7 @@ source "$TEST_TOP/common"
check_prereq btrfs
check_image() {
- local image
-
- image=$1
- run_check "$TOP/btrfs" check "$image"
+ run_check "$TOP/btrfs" check "$1"
}
check_all_images
diff --git a/tests/fsck-tests/029-valid-orphan-item/orphan_inode.img.xz b/tests/fsck-tests/029-valid-orphan-item/orphan_inode.img.xz
new file mode 100644
index 00000000..26e4cf8a
--- /dev/null
+++ b/tests/fsck-tests/029-valid-orphan-item/orphan_inode.img.xz
Binary files differ
diff --git a/tests/fsck-tests/029-valid-orphan-item/test.sh b/tests/fsck-tests/029-valid-orphan-item/test.sh
new file mode 100755
index 00000000..d8068f63
--- /dev/null
+++ b/tests/fsck-tests/029-valid-orphan-item/test.sh
@@ -0,0 +1,15 @@
+#!/bin/bash
+# To check if btrfs check can handle valid orphan items.
+# Orphan item is a marker for deleted inodes that were open at the time of
+# deletion. # Orphan inode/root will is not referenced and will have an orphan
+# item, which should not be reported as error.
+
+source "$TEST_TOP/common"
+
+check_prereq btrfs
+
+check_image() {
+ run_check "$TOP/btrfs" check "$1"
+}
+
+check_all_images
diff --git a/tests/fsck-tests/030-reflinked-prealloc-extents/reflinked-prealloc-extents.img.xz b/tests/fsck-tests/030-reflinked-prealloc-extents/reflinked-prealloc-extents.img.xz
new file mode 100644
index 00000000..8adf0071
--- /dev/null
+++ b/tests/fsck-tests/030-reflinked-prealloc-extents/reflinked-prealloc-extents.img.xz
Binary files differ
diff --git a/tests/fsck-tests/030-reflinked-prealloc-extents/test.sh b/tests/fsck-tests/030-reflinked-prealloc-extents/test.sh
new file mode 100755
index 00000000..63f692bc
--- /dev/null
+++ b/tests/fsck-tests/030-reflinked-prealloc-extents/test.sh
@@ -0,0 +1,42 @@
+#!/bin/bash
+#
+# Verify that a filesystem check operation (fsck) does not report the following
+# scenario as an error:
+#
+# An extent is shared between two inodes, as a result of clone/reflink operation,
+# and for one of the inodes, lets call it inode A, the extent is referenced
+# through a file extent item as a prealloc extent, while for the other inode,
+# call it inode B, the extent is referenced through a regular file extent item,
+# that is, it was written to. The goal of this test is to make sure a filesystem
+# check operation will not report "odd csum items" errors for the prealloc
+# extent at inode A, because this scenario is valid since the extent was written
+# through inode B and therefore it is expected to have checksum items in the
+# filesystem's checksum btree for that shared extent.
+#
+# Such scenario can be created with the following steps for example:
+#
+# mkfs.btrfs -f /dev/sdb
+# mount /dev/sdb /mnt
+#
+# touch /mnt/foo
+# xfs_io -c "falloc 0 256K" /mnt/foo
+# sync
+#
+# xfs_io -c "pwrite -S 0xab 0 256K" /mnt/foo
+# touch /mnt/bar
+# xfs_io -c "reflink /mnt/foo 0 0 256K" /mnt/bar
+# xfs_io -c "fsync" /mnt/bar
+#
+# <power fail>
+# mount /dev/sdb /mnt
+# umount /mnt
+
+source "$TEST_TOP/common"
+
+check_prereq btrfs
+
+check_image() {
+ run_check "$TOP/btrfs" check "$1"
+}
+
+check_all_images
diff --git a/tests/fsck-tests/031-metadatadump-check-data-csum/test.sh b/tests/fsck-tests/031-metadatadump-check-data-csum/test.sh
new file mode 100755
index 00000000..30b0b7a3
--- /dev/null
+++ b/tests/fsck-tests/031-metadatadump-check-data-csum/test.sh
@@ -0,0 +1,30 @@
+#!/bin/bash
+# To check if "btrfs check" can detect metadata dump (restored by btrfs-iamge)
+# and ignore --check-data-csum option
+
+source "$TEST_TOP/common"
+
+check_prereq btrfs
+check_prereq mkfs.btrfs
+check_prereq btrfs-image
+setup_root_helper
+prepare_test_dev
+
+run_check $SUDO_HELPER "$TOP/mkfs.btrfs" -f "$TEST_DEV"
+run_check_mount_test_dev
+
+run_check $SUDO_HELPER dd if=/dev/urandom of="$TEST_MNT/file" bs=4k count=16
+run_check_umount_test_dev
+
+run_check $SUDO_HELPER "$TOP/btrfs-image" "$TEST_DEV" "restored_image"
+
+# use prepare_test_dev() to wipe all existing data on $TEST_DEV
+# so there is no way that restored image could have mathcing data csum
+prepare_test_dev
+
+run_check $SUDO_HELPER "$TOP/btrfs-image" -r "restored_image" "$TEST_DEV"
+
+# Should not report any error
+run_check "$TOP/btrfs" check --check-data-csum "$TEST_DEV"
+
+rm -rf -- "restored_image*"
diff --git a/tests/fuzz-tests/001-simple-check-unmounted/test.sh b/tests/fuzz-tests/001-simple-check-unmounted/test.sh
index 905d37b7..87a63944 100755
--- a/tests/fuzz-tests/001-simple-check-unmounted/test.sh
+++ b/tests/fuzz-tests/001-simple-check-unmounted/test.sh
@@ -9,12 +9,9 @@ check_prereq btrfs
# redefine the one provided by common
check_image() {
- local image
-
- image=$1
- run_mayfail $TOP/btrfs check "$image"
+ run_mayfail "$TOP/btrfs" check "$1"
}
-check_all_images $TEST_TOP/fuzz-tests/images
+check_all_images "$TEST_TOP/fuzz-tests/images"
exit 0
diff --git a/tests/fuzz-tests/002-simple-image/test.sh b/tests/fuzz-tests/002-simple-image/test.sh
index 034fcf46..5dddc9e1 100755
--- a/tests/fuzz-tests/002-simple-image/test.sh
+++ b/tests/fuzz-tests/002-simple-image/test.sh
@@ -9,15 +9,12 @@ check_prereq btrfs-image
# redefine the one provided by common
check_image() {
- local image
-
- image=$1
truncate -s0 target
- run_mayfail $TOP/btrfs-image "$image" target
+ run_mayfail "$TOP/btrfs-image" "$1" target
truncate -s0 target
}
-check_all_images $TEST_TOP/fuzz-tests/images
+check_all_images "$TEST_TOP/fuzz-tests/images"
rm -- target
diff --git a/tests/fuzz-tests/003-multi-check-unmounted/test.sh b/tests/fuzz-tests/003-multi-check-unmounted/test.sh
index 35dfe4fc..3021c3a8 100755
--- a/tests/fuzz-tests/003-multi-check-unmounted/test.sh
+++ b/tests/fuzz-tests/003-multi-check-unmounted/test.sh
@@ -21,6 +21,6 @@ check_image() {
run_mayfail $TOP/btrfs check --repair "$image"
}
-check_all_images $TEST_TOP/fuzz-tests/images
+check_all_images "$TEST_TOP/fuzz-tests/images"
exit 0
diff --git a/tests/fuzz-tests/004-simple-dump-tree/test.sh b/tests/fuzz-tests/004-simple-dump-tree/test.sh
index 6c9e8c45..c09b8478 100755
--- a/tests/fuzz-tests/004-simple-dump-tree/test.sh
+++ b/tests/fuzz-tests/004-simple-dump-tree/test.sh
@@ -7,12 +7,9 @@ check_prereq btrfs
# redefine the one provided by common
check_image() {
- local image
-
- image=$1
- run_mayfail $TOP/btrfs inspect-internal dump-tree "$image"
+ run_mayfail "$TOP/btrfs" inspect-internal dump-tree "$1"
}
-check_all_images $TEST_TOP/fuzz-tests/images
+check_all_images "$TEST_TOP/fuzz-tests/images"
exit 0
diff --git a/tests/fuzz-tests/005-simple-dump-super/test.sh b/tests/fuzz-tests/005-simple-dump-super/test.sh
index 01c7b628..18f71a48 100755
--- a/tests/fuzz-tests/005-simple-dump-super/test.sh
+++ b/tests/fuzz-tests/005-simple-dump-super/test.sh
@@ -10,10 +10,10 @@ check_image() {
local image
image=$1
- run_mayfail $TOP/btrfs inspect-internal dump-super "$image"
- run_mayfail $TOP/btrfs inspect-internal dump-super -Ffa "$image"
+ run_mayfail "$TOP/btrfs" inspect-internal dump-super "$image"
+ run_mayfail "$TOP/btrfs" inspect-internal dump-super -Ffa "$image"
}
-check_all_images $TEST_TOP/fuzz-tests/images
+check_all_images "$TEST_TOP/fuzz-tests/images"
exit 0
diff --git a/tests/fuzz-tests/006-simple-tree-stats/test.sh b/tests/fuzz-tests/006-simple-tree-stats/test.sh
index dbed471a..146afa93 100755
--- a/tests/fuzz-tests/006-simple-tree-stats/test.sh
+++ b/tests/fuzz-tests/006-simple-tree-stats/test.sh
@@ -7,12 +7,9 @@ check_prereq btrfs
# redefine the one provided by common
check_image() {
- local image
-
- image=$1
- run_mayfail $TOP/btrfs inspect-internal tree-stats "$image"
+ run_mayfail "$TOP/btrfs" inspect-internal tree-stats "$1"
}
-check_all_images $TEST_TOP/fuzz-tests/images
+check_all_images "$TEST_TOP/fuzz-tests/images"
exit 0
diff --git a/tests/fuzz-tests/008-simple-chunk-recover/test.sh b/tests/fuzz-tests/008-simple-chunk-recover/test.sh
index 198f88e2..4b27de0c 100755
--- a/tests/fuzz-tests/008-simple-chunk-recover/test.sh
+++ b/tests/fuzz-tests/008-simple-chunk-recover/test.sh
@@ -11,10 +11,10 @@ check_image() {
image=$1
run_check cp "$image" "$image".scratch
- run_mayfail $TOP/btrfs rescue chunk-recover -y -v "$image".scratch
+ run_mayfail "$TOP/btrfs" rescue chunk-recover -y -v "$image".scratch
rm -- "$image".scratch
}
-check_all_images $TEST_TOP/fuzz-tests/images
+check_all_images "$TEST_TOP/fuzz-tests/images"
exit 0
diff --git a/tests/fuzz-tests/009-simple-zero-log/test.sh b/tests/fuzz-tests/009-simple-zero-log/test.sh
index 928c66b1..f78e5b50 100755
--- a/tests/fuzz-tests/009-simple-zero-log/test.sh
+++ b/tests/fuzz-tests/009-simple-zero-log/test.sh
@@ -11,10 +11,10 @@ check_image() {
image=$1
run_check cp "$image" "$image".scratch
- run_mayfail $TOP/btrfs rescue zero-log "$image".scratch
+ run_mayfail "$TOP/btrfs" rescue zero-log "$image".scratch
rm -- "$image".scratch
}
-check_all_images $TEST_TOP/fuzz-tests/images
+check_all_images "$TEST_TOP/fuzz-tests/images"
exit 0
diff --git a/tests/misc-tests.sh b/tests/misc-tests.sh
index 94703a3e..dad397ec 100755
--- a/tests/misc-tests.sh
+++ b/tests/misc-tests.sh
@@ -46,7 +46,6 @@ check_prereq btrfs-corrupt-block
check_prereq btrfs-image
check_prereq btrfstune
check_prereq btrfs
-check_prereq btrfs-zero-log
check_prereq btrfs-find-root
check_prereq btrfs-select-super
check_kernel_support
diff --git a/tests/misc-tests/001-btrfstune-features/test.sh b/tests/misc-tests/001-btrfstune-features/test.sh
index 718e4b08..e3da3949 100755
--- a/tests/misc-tests/001-btrfstune-features/test.sh
+++ b/tests/misc-tests/001-btrfstune-features/test.sh
@@ -21,21 +21,22 @@ test_feature()
local tuneopt
local sbflag
- mkfsfeatures=${1:+-O ^$1}
+ mkfsfeatures=$1
tuneopt="$2"
sbflag="$3"
- run_check $SUDO_HELPER $TOP/mkfs.btrfs -f $mkfsfeatures $TEST_DEV
- if run_check_stdout $TOP/btrfs inspect-internal dump-super $TEST_DEV | \
+ run_check $SUDO_HELPER "$TOP/mkfs.btrfs" -f \
+ ${mkfsfeatures:+-O ^"$mkfsfeatures"} "$TEST_DEV"
+ if run_check_stdout "$TOP/btrfs" inspect-internal dump-super "$TEST_DEV" | \
grep -q "$sbflag"; then
_fail "FAIL: feature $sbflag must not be set on the base image"
fi
- run_check $TOP/btrfstune $tuneopt $TEST_DEV
- if ! run_check_stdout $TOP/btrfs inspect-internal dump-super $TEST_DEV | \
+ run_check "$TOP/btrfstune" "$tuneopt" "$TEST_DEV"
+ if ! run_check_stdout "$TOP/btrfs" inspect-internal dump-super "$TEST_DEV" | \
grep -q "$sbflag"; then
_fail "FAIL: feature $sbflag not set"
fi
- run_check $SUDO_HELPER $TOP/btrfs check $TEST_DEV
+ run_check $SUDO_HELPER "$TOP/btrfs" check "$TEST_DEV"
}
test_feature extref -r EXTENDED_IREF
diff --git a/tests/misc-tests/002-uuid-rewrite/test.sh b/tests/misc-tests/002-uuid-rewrite/test.sh
index e32aff0c..0191bd5c 100755
--- a/tests/misc-tests/002-uuid-rewrite/test.sh
+++ b/tests/misc-tests/002-uuid-rewrite/test.sh
@@ -10,10 +10,7 @@ check_prereq btrfs
prepare_test_dev
get_fs_uuid() {
- local image
-
- image="$1"
- run_check_stdout $TOP/btrfs inspect-internal dump-super "$image" | \
+ run_check_stdout "$TOP/btrfs" inspect-internal dump-super "$1" | \
grep '^fsid' | awk '{print $2}'
}
@@ -23,18 +20,18 @@ test_uuid_random()
origuuid=11111111-a101-4031-b29a-379d4f8b7a2d
- run_check $SUDO_HELPER $TOP/mkfs.btrfs -f \
- --uuid $origuuid \
- --rootdir $INTERNAL_BIN/Documentation \
- $TEST_DEV
- run_check $TOP/btrfs inspect-internal dump-super "$TEST_DEV"
- currentfsid=$(run_check_stdout $TOP/btrfstune -f -u $TEST_DEV | \
+ run_check $SUDO_HELPER "$TOP/mkfs.btrfs" -f \
+ --uuid "$origuuid" \
+ --rootdir "$INTERNAL_BIN/Documentation" \
+ "$TEST_DEV"
+ run_check "$TOP/btrfs" inspect-internal dump-super "$TEST_DEV"
+ currentfsid=$(run_check_stdout "$TOP/btrfstune" -f -u "$TEST_DEV" | \
grep -i 'current fsid:' | awk '{print $3}')
- if ! [ $currentfsid = $origuuid ]; then
+ if ! [ "$currentfsid" = "$origuuid" ]; then
_fail "FAIL: current UUID mismatch"
fi
- run_check $TOP/btrfs inspect-internal dump-super "$TEST_DEV"
- run_check $SUDO_HELPER $TOP/btrfs check $TEST_DEV
+ run_check "$TOP/btrfs" inspect-internal dump-super "$TEST_DEV"
+ run_check $SUDO_HELPER "$TOP/btrfs" check "$TEST_DEV"
}
test_uuid_user()
@@ -45,19 +42,19 @@ test_uuid_user()
origuuid=22222222-d324-4f92-80e9-7658bf3b845f
newuuid=33333333-bfc9-4045-9399-a396dc6893b3
- run_check $SUDO_HELPER $TOP/mkfs.btrfs -f \
- --uuid $origuuid \
- --rootdir $INTERNAL_BIN/Documentation \
- $TEST_DEV
- run_check $TOP/btrfs inspect-internal dump-super "$TEST_DEV"
- run_check $TOP/btrfstune -f -U $newuuid \
- $TEST_DEV
+ run_check $SUDO_HELPER "$TOP/mkfs.btrfs" -f \
+ --uuid "$origuuid" \
+ --rootdir "$INTERNAL_BIN/Documentation" \
+ "$TEST_DEV"
+ run_check "$TOP/btrfs" inspect-internal dump-super "$TEST_DEV"
+ run_check "$TOP/btrfstune" -f -U "$newuuid" \
+ "$TEST_DEV"
# btrfs inspect-internal dump-super is called within get_fs_uuid
- fsid=$(get_fs_uuid $TEST_DEV)
- if ! [ $fsid = $newuuid ]; then
+ fsid=$(get_fs_uuid "$TEST_DEV")
+ if ! [ "$fsid" = "$newuuid" ]; then
_fail "FAIL: UUID not rewritten"
fi
- run_check $SUDO_HELPER $TOP/btrfs check $TEST_DEV
+ run_check $SUDO_HELPER "$TOP/btrfs" check "$TEST_DEV"
}
test_uuid_random
diff --git a/tests/misc-tests/003-zero-log/test.sh b/tests/misc-tests/003-zero-log/test.sh
index 9d2940f5..c6742bf3 100755
--- a/tests/misc-tests/003-zero-log/test.sh
+++ b/tests/misc-tests/003-zero-log/test.sh
@@ -9,42 +9,32 @@ prepare_test_dev
get_log_root()
{
- local image
-
- image="$1"
- $TOP/btrfs inspect-internal dump-super "$image" | \
+ "$TOP/btrfs" inspect-internal dump-super "$1" | \
grep '^log_root\>' | awk '{print $2}'
}
get_log_root_level() {
- local image
-
- image="$1"
- $TOP/btrfs inspect-internal dump-super "$image" | \
+ "$TOP/btrfs" inspect-internal dump-super "$1" | \
grep '^log_root_level' | awk '{print $2}'
}
test_zero_log()
{
# FIXME: we need an image with existing log_root
- run_check $SUDO_HELPER $TOP/mkfs.btrfs -f \
- --rootdir $INTERNAL_BIN/Documentation \
- $TEST_DEV
- run_check $TOP/btrfs inspect-internal dump-super $TEST_DEV
- if [ "$1" = 'standalone' ]; then
- run_check $TOP/btrfs rescue zero-log $TEST_DEV
- else
- run_check $TOP/btrfs-zero-log $TEST_DEV
- fi
- log_root=$(get_log_root $TEST_DEV)
- log_root_level=$(get_log_root $TEST_DEV)
+ run_check $SUDO_HELPER "$TOP/mkfs.btrfs" -f \
+ --rootdir "$INTERNAL_BIN/Documentation" \
+ "$TEST_DEV"
+ run_check "$TOP/btrfs" inspect-internal dump-super "$TEST_DEV"
+ run_check "$TOP/btrfs" rescue zero-log "$TEST_DEV"
+ log_root=$(get_log_root "$TEST_DEV")
+ log_root_level=$(get_log_root "$TEST_DEV")
if [ "$log_root" != 0 ]; then
_fail "FAIL: log_root not reset"
fi
if [ "$log_root_level" != 0 ]; then
_fail "FAIL: log_root_level not reset"
fi
- run_check $TOP/btrfs inspect-internal dump-super $TEST_DEV
- run_check $SUDO_HELPER $TOP/btrfs check $TEST_DEV
+ run_check "$TOP/btrfs" inspect-internal dump-super "$TEST_DEV"
+ run_check $SUDO_HELPER "$TOP/btrfs" check "$TEST_DEV"
}
test_zero_log standalone
diff --git a/tests/misc-tests/004-shrink-fs/test.sh b/tests/misc-tests/004-shrink-fs/test.sh
index 2f08b0b0..4117f037 100755
--- a/tests/misc-tests/004-shrink-fs/test.sh
+++ b/tests/misc-tests/004-shrink-fs/test.sh
@@ -14,45 +14,45 @@ setup_root_helper
# Optionally take id of the device to shrink
shrink_test()
{
- min_size=$(run_check_stdout $SUDO_HELPER $TOP/btrfs inspect-internal min-dev-size ${1:+--id $1} $TEST_MNT)
- min_size=$(echo $min_size | cut -d ' ' -f 1)
- echo "min size = ${min_size}" >> $RESULTS
+ min_size=$(run_check_stdout $SUDO_HELPER "$TOP/btrfs" inspect-internal min-dev-size ${1:+--id "$1"} "$TEST_MNT")
+ min_size=$(echo "$min_size" | cut -d ' ' -f 1)
+ echo "min size = ${min_size}" >> "$RESULTS"
if [ -z "$min_size" ]; then
_fail "Failed to parse minimum size"
fi
- run_check $SUDO_HELPER $TOP/btrfs filesystem resize $min_size $TEST_MNT
+ run_check $SUDO_HELPER "$TOP/btrfs" filesystem resize "$min_size" "$TEST_MNT"
}
-run_check truncate -s 20G $IMAGE
-run_check $TOP/mkfs.btrfs -f $IMAGE
-run_check $SUDO_HELPER mount $IMAGE $TEST_MNT
-run_check $SUDO_HELPER chmod a+rw $TEST_MNT
+run_check truncate -s 20G "$IMAGE"
+run_check "$TOP/mkfs.btrfs" -f "$IMAGE"
+run_check $SUDO_HELPER mount "$IMAGE" "$TEST_MNT"
+run_check $SUDO_HELPER chmod a+rw "$TEST_MNT"
# Create 7 data block groups, each with a size of 1Gb.
for ((i = 1; i <= 7; i++)); do
- run_check fallocate -l 1G $TEST_MNT/foo$i
+ run_check fallocate -l 1G "$TEST_MNT/foo$i"
done
# Make sure they are persisted (all the chunk, device and block group items
# added to the chunk/dev/extent trees).
-run_check $TOP/btrfs filesystem sync $TEST_MNT
+run_check "$TOP/btrfs" filesystem sync "$TEST_MNT"
# Now remove 3 of those 1G files. This will result in 3 block groups becoming
# unused, which will be automatically deleted by the cleaner kthread, and this
# will result in 3 holes (unallocated space) in the device (each with a size
# of 1Gb).
-run_check rm -f $TEST_MNT/foo2
-run_check rm -f $TEST_MNT/foo4
-run_check rm -f $TEST_MNT/foo6
+run_check rm -f "$TEST_MNT/foo2"
+run_check rm -f "$TEST_MNT/foo4"
+run_check rm -f "$TEST_MNT/foo6"
# Sync once to wake up the cleaner kthread which will delete the unused block
# groups - it could have been sleeping when they became unused. Then wait a bit
# to allow the cleaner kthread to delete them and then finally ensure the
# transaction started by the cleaner kthread is committed.
-run_check $TOP/btrfs filesystem sync $TEST_MNT
+run_check "$TOP/btrfs" filesystem sync "$TEST_MNT"
sleep 3
-run_check $TOP/btrfs filesystem sync $TEST_MNT
+run_check "$TOP/btrfs" filesystem sync "$TEST_MNT"
# Now attempt to get the minimum size we can resize the filesystem to and verify
# the resize operation succeeds. This size closely matches the sum of the size
@@ -63,10 +63,10 @@ done
# Now convert metadata and system chunks to the single profile and check we are
# still able to get a correct minimum size and shrink to that size.
-run_check $SUDO_HELPER $TOP/btrfs balance start -mconvert=single \
- -sconvert=single -f $TEST_MNT
+run_check $SUDO_HELPER "$TOP/btrfs" balance start -mconvert=single \
+ -sconvert=single -f "$TEST_MNT"
for ((i = 1; i <= 3; i++)); do
shrink_test 1
done
-run_check $SUDO_HELPER umount $TEST_MNT
+run_check $SUDO_HELPER umount "$TEST_MNT"
diff --git a/tests/misc-tests/005-convert-progress-thread-crash/test.sh b/tests/misc-tests/005-convert-progress-thread-crash/test.sh
index b8012c9f..dcd6fd26 100755
--- a/tests/misc-tests/005-convert-progress-thread-crash/test.sh
+++ b/tests/misc-tests/005-convert-progress-thread-crash/test.sh
@@ -9,7 +9,7 @@ mkfs.ext4 -V &>/dev/null || _not_run "mkfs.ext4 not found"
prepare_test_dev
for ((i = 0; i < 20; i++)); do
- echo "loop $i" >>$RESULTS
- mkfs.ext4 -F "$TEST_DEV" &>>$RESULTS || _not_run "mkfs.ext4 failed"
- run_check $TOP/btrfs-convert "$TEST_DEV"
+ echo "loop $i" >> "$RESULTS"
+ mkfs.ext4 -F "$TEST_DEV" &>>"$RESULTS" || _not_run "mkfs.ext4 failed"
+ run_check "$TOP/btrfs-convert" "$TEST_DEV"
done
diff --git a/tests/misc-tests/006-image-on-missing-device/test.sh b/tests/misc-tests/006-image-on-missing-device/test.sh
index d8b1cef2..2b222340 100755
--- a/tests/misc-tests/006-image-on-missing-device/test.sh
+++ b/tests/misc-tests/006-image-on-missing-device/test.sh
@@ -14,29 +14,29 @@ setup_root_helper
test_image_dump()
{
- run_check $SUDO_HELPER $TOP/btrfs check $dev1
+ run_check $SUDO_HELPER "$TOP/btrfs" check "$dev1"
# the output file will be deleted
- run_mayfail $SUDO_HELPER $TOP/btrfs-image $dev1 /tmp/test-img.dump
+ run_mayfail $SUDO_HELPER "$TOP/btrfs-image" "$dev1" /tmp/test-img.dump
}
test_run()
{
- run_check $SUDO_HELPER $TOP/mkfs.btrfs -f -d raid1 -m raid1 $dev1 $dev2
+ run_check $SUDO_HELPER "$TOP/mkfs.btrfs" -f -d raid1 -m raid1 "$dev1" "$dev2"
# we need extents to trigger reading from all devices
- run_check $SUDO_HELPER mount $dev1 $TEST_MNT
- run_check $SUDO_HELPER dd if=/dev/zero of=$TEST_MNT/a bs=1M count=10
- run_check $SUDO_HELPER dd if=/dev/zero of=$TEST_MNT/b bs=4k count=1000 conv=sync
- run_check $SUDO_HELPER umount $TEST_MNT
+ run_check $SUDO_HELPER mount "$dev1" "$TEST_MNT"
+ run_check $SUDO_HELPER dd if=/dev/zero of="$TEST_MNT/a" bs=1M count=10
+ run_check $SUDO_HELPER dd if=/dev/zero of="$TEST_MNT/b" bs=4k count=1000 conv=sync
+ run_check $SUDO_HELPER umount "$TEST_MNT"
test_image_dump
- run_check $SUDO_HELPER $TOP/btrfs filesystem show $dev1
+ run_check $SUDO_HELPER "$TOP/btrfs" filesystem show "$dev1"
# create a degraded raid1 filesystem, check must succeed
# btrfs-image must not loop
- run_mayfail wipefs -a $dev2
- run_check $SUDO_HELPER losetup -d $dev2
+ run_mayfail wipefs -a "$dev2"
+ run_check $SUDO_HELPER losetup -d "$dev2"
unset loopdevs[2]
- run_check $SUDO_HELPER $TOP/btrfs filesystem show $dev1
+ run_check $SUDO_HELPER "$TOP/btrfs" filesystem show "$dev1"
test_image_dump
}
diff --git a/tests/misc-tests/007-subvolume-sync/test.sh b/tests/misc-tests/007-subvolume-sync/test.sh
index ef03d16b..104b50ea 100755
--- a/tests/misc-tests/007-subvolume-sync/test.sh
+++ b/tests/misc-tests/007-subvolume-sync/test.sh
@@ -12,21 +12,21 @@ check_prereq btrfs
setup_root_helper
prepare_test_dev
-run_check $SUDO_HELPER $TOP/mkfs.btrfs -f "$TEST_DEV"
+run_check $SUDO_HELPER "$TOP/mkfs.btrfs" -f "$TEST_DEV"
run_check_mount_test_dev
# to check following thing in both 1 and multiple subvolume case:
# 1: is subvolume sync loop indefinitely
# 2: is return value right
#
-run_check $SUDO_HELPER $TOP/btrfs subvolume create "$TEST_MNT"/mysubvol1
-run_check $SUDO_HELPER $TOP/btrfs subvolume create "$TEST_MNT"/mysubvol2
-run_check $SUDO_HELPER $TOP/btrfs subvolume delete "$TEST_MNT"/mysubvol1
-run_check $SUDO_HELPER $TOP/btrfs subvolume delete "$TEST_MNT"/mysubvol2
-run_check $SUDO_HELPER $TOP/btrfs subvolume sync "$TEST_MNT"
+run_check $SUDO_HELPER "$TOP/btrfs" subvolume create "$TEST_MNT"/mysubvol1
+run_check $SUDO_HELPER "$TOP/btrfs" subvolume create "$TEST_MNT"/mysubvol2
+run_check $SUDO_HELPER "$TOP/btrfs" subvolume delete "$TEST_MNT"/mysubvol1
+run_check $SUDO_HELPER "$TOP/btrfs" subvolume delete "$TEST_MNT"/mysubvol2
+run_check $SUDO_HELPER "$TOP/btrfs" subvolume sync "$TEST_MNT"
-run_check $SUDO_HELPER $TOP/btrfs subvolume create "$TEST_MNT"/mysubvol
-run_check $SUDO_HELPER $TOP/btrfs subvolume delete "$TEST_MNT"/mysubvol
-run_check $SUDO_HELPER $TOP/btrfs subvolume sync "$TEST_MNT"
+run_check $SUDO_HELPER "$TOP/btrfs" subvolume create "$TEST_MNT"/mysubvol
+run_check $SUDO_HELPER "$TOP/btrfs" subvolume delete "$TEST_MNT"/mysubvol
+run_check $SUDO_HELPER "$TOP/btrfs" subvolume sync "$TEST_MNT"
run_check_umount_test_dev
diff --git a/tests/misc-tests/008-leaf-crossing-stripes/test.sh b/tests/misc-tests/008-leaf-crossing-stripes/test.sh
index 517bd667..41825439 100755
--- a/tests/misc-tests/008-leaf-crossing-stripes/test.sh
+++ b/tests/misc-tests/008-leaf-crossing-stripes/test.sh
@@ -15,8 +15,8 @@ A_PRIME_NUM=17
for ((size = SIZE_FROM; size <= SIZE_END; size += A_PRIME_NUM)); do
run_check truncate -s "$size"M "$IMAGE"
run_check mkfs.ext4 -F "$IMAGE"
- run_check $TOP/btrfs-convert "$IMAGE"
- run_check_stdout $TOP/btrfs check "$IMAGE" 2>&1 |
+ run_check "$TOP/btrfs-convert" "$IMAGE"
+ run_check_stdout "$TOP/btrfs" check "$IMAGE" 2>&1 |
grep -q "crossing stripe boundary" &&
_fail "leaf crossing stripes after btrfs-convert"
done
diff --git a/tests/misc-tests/009-subvolume-sync-must-wait/test.sh b/tests/misc-tests/009-subvolume-sync-must-wait/test.sh
index 15de3355..62190e14 100755
--- a/tests/misc-tests/009-subvolume-sync-must-wait/test.sh
+++ b/tests/misc-tests/009-subvolume-sync-must-wait/test.sh
@@ -10,41 +10,41 @@ check_prereq btrfs
setup_root_helper
prepare_test_dev
-run_check $TOP/mkfs.btrfs -f "$TEST_DEV"
+run_check "$TOP/mkfs.btrfs" -f "$TEST_DEV"
run_check_mount_test_dev
-run_check $SUDO_HELPER chmod a+rw $TEST_MNT
+run_check $SUDO_HELPER chmod a+rw "$TEST_MNT"
-cd $TEST_MNT
+cd "$TEST_MNT"
for i in `seq 5`; do
run_check dd if=/dev/zero of=file$i bs=1M count=10
done
for sn in `seq 4`;do
- run_check $SUDO_HELPER $TOP/btrfs subvolume snapshot . snap$sn
+ run_check $SUDO_HELPER "$TOP/btrfs" subvolume snapshot . snap$sn
for i in `seq 10`; do
- run_check dd if=/dev/zero of=snap$sn/file$i bs=1M count=10
+ run_check dd if=/dev/zero of="snap$sn/file$i" bs=1M count=10
done
done
-run_check $SUDO_HELPER $TOP/btrfs subvolume list .
-run_check $SUDO_HELPER $TOP/btrfs subvolume list -d .
+run_check $SUDO_HELPER "$TOP/btrfs" subvolume list .
+run_check $SUDO_HELPER "$TOP/btrfs" subvolume list -d .
-idtodel=`run_check_stdout $SUDO_HELPER $TOP/btrfs inspect-internal rootid snap3`
+idtodel=`run_check_stdout $SUDO_HELPER "$TOP/btrfs" inspect-internal rootid snap3`
# delete, sync after some time
-run_check $SUDO_HELPER $TOP/btrfs subvolume delete -c snap3
-{ sleep 5; run_check $TOP/btrfs filesystem sync $TEST_MNT; } &
+run_check $SUDO_HELPER "$TOP/btrfs" subvolume delete -c snap3
+{ sleep 5; run_check "$TOP/btrfs" filesystem sync "$TEST_MNT"; } &
-run_check $SUDO_HELPER $TOP/btrfs subvolume sync . $idtodel
+run_check $SUDO_HELPER "$TOP/btrfs" subvolume sync . "$idtodel"
-if run_check_stdout $SUDO_HELPER $TOP/btrfs subvolume list -d . |
+if run_check_stdout $SUDO_HELPER "$TOP/btrfs" subvolume list -d . |
grep -q "ID $idtodel.*DELETED"; then
_fail "sync did not wait for the subvolume cleanup"
fi
-run_check $TOP/btrfs filesystem sync $TEST_MNT
-run_check $SUDO_HELPER $TOP/btrfs subvolume list -d .
+run_check "$TOP/btrfs" filesystem sync "$TEST_MNT"
+run_check $SUDO_HELPER "$TOP/btrfs" subvolume list -d .
wait
cd ..
diff --git a/tests/misc-tests/010-convert-delete-ext2-subvol/test.sh b/tests/misc-tests/010-convert-delete-ext2-subvol/test.sh
index 6d510fea..5f441a7f 100755
--- a/tests/misc-tests/010-convert-delete-ext2-subvol/test.sh
+++ b/tests/misc-tests/010-convert-delete-ext2-subvol/test.sh
@@ -13,13 +13,13 @@ prepare_test_dev
run_check truncate -s 2G "$TEST_DEV"
run_check mkfs.ext4 -F "$TEST_DEV"
-run_check $TOP/btrfs-convert "$TEST_DEV"
-run_check $SUDO_HELPER $TOP/btrfs inspect-internal dump-tree "$TEST_DEV"
+run_check "$TOP/btrfs-convert" "$TEST_DEV"
+run_check $SUDO_HELPER "$TOP/btrfs" inspect-internal dump-tree "$TEST_DEV"
run_check_mount_test_dev
-run_check $SUDO_HELPER $TOP/btrfs subvolume delete -c "$TEST_MNT/ext2_saved"
+run_check $SUDO_HELPER "$TOP/btrfs" subvolume delete -c "$TEST_MNT/ext2_saved"
run_check_umount_test_dev
-run_check $SUDO_HELPER $TOP/btrfs inspect-internal dump-tree "$TEST_DEV"
-run_check_stdout $TOP/btrfs-convert --rollback "$TEST_DEV" |
+run_check $SUDO_HELPER "$TOP/btrfs" inspect-internal dump-tree "$TEST_DEV"
+run_check_stdout "$TOP/btrfs-convert" --rollback "$TEST_DEV" |
grep -q 'is it deleted' || _fail "unexpected rollback"
exit 0
diff --git a/tests/misc-tests/011-delete-missing-device/test.sh b/tests/misc-tests/011-delete-missing-device/test.sh
index 469c3be9..4c976421 100755
--- a/tests/misc-tests/011-delete-missing-device/test.sh
+++ b/tests/misc-tests/011-delete-missing-device/test.sh
@@ -10,31 +10,31 @@ setup_root_helper
test_do_mkfs()
{
- run_check $SUDO_HELPER $TOP/mkfs.btrfs -f $@ ${loopdevs[@]}
- run_check $SUDO_HELPER $TOP/btrfs inspect-internal dump-super $dev1
- run_check $SUDO_HELPER $TOP/btrfs check $dev1
- run_check $SUDO_HELPER $TOP/btrfs filesystem show
+ run_check $SUDO_HELPER "$TOP/mkfs.btrfs" -f "$@" ${loopdevs[@]}
+ run_check $SUDO_HELPER "$TOP/btrfs" inspect-internal dump-super "$dev1"
+ run_check $SUDO_HELPER "$TOP/btrfs" check "$dev1"
+ run_check $SUDO_HELPER "$TOP/btrfs" filesystem show
}
test_wipefs()
{
- run_check $SUDO_HELPER wipefs -a $devtodel
- run_check $SUDO_HELPER losetup -d $devtodel
+ run_check $SUDO_HELPER wipefs -a "$devtodel"
+ run_check $SUDO_HELPER losetup -d "$devtodel"
unset loopdevs[3]
run_check $SUDO_HELPER losetup --all
- run_check $TOP/btrfs filesystem show
+ run_check "$TOP/btrfs" filesystem show
}
test_delete_missing()
{
run_check_mount_test_dev -o degraded
- run_check $SUDO_HELPER $TOP/btrfs filesystem show $TEST_MNT
- run_check $SUDO_HELPER $TOP/btrfs device delete missing $TEST_MNT
- run_check $SUDO_HELPER $TOP/btrfs filesystem show $TEST_MNT
+ run_check $SUDO_HELPER "$TOP/btrfs" filesystem show "$TEST_MNT"
+ run_check $SUDO_HELPER "$TOP/btrfs" device delete missing "$TEST_MNT"
+ run_check $SUDO_HELPER "$TOP/btrfs" filesystem show "$TEST_MNT"
run_check_umount_test_dev
run_check_mount_test_dev
local out
- out="$(run_check_stdout $SUDO_HELPER $TOP/btrfs filesystem show $TEST_MNT)"
+ out=$(run_check_stdout $SUDO_HELPER "$TOP/btrfs" filesystem show "$TEST_MNT")
if echo "$out" | grep -q -- "$devtodel"; then
_fail "device $devtodel not deleted"
fi
diff --git a/tests/misc-tests/012-find-root-no-result/test.sh b/tests/misc-tests/012-find-root-no-result/test.sh
index f4a57e76..6dd447f3 100755
--- a/tests/misc-tests/012-find-root-no-result/test.sh
+++ b/tests/misc-tests/012-find-root-no-result/test.sh
@@ -8,10 +8,10 @@ source "$TEST_TOP/common"
check_prereq btrfs-find-root
check_prereq btrfs-image
-run_check $TOP/btrfs-image -r first_meta_chunk.btrfs-image test.img || \
+run_check "$TOP/btrfs-image" -r first_meta_chunk.btrfs-image test.img || \
_fail "failed to extract first_meta_chunk.btrfs-image"
-result=$(run_check_stdout $TOP/btrfs-find-root test.img | sed '/^Superblock/d')
+result=$(run_check_stdout "$TOP/btrfs-find-root" test.img | sed '/^Superblock/d')
if [ -z "$result" ]; then
_fail "btrfs-find-root failed to find tree root"
diff --git a/tests/misc-tests/013-subvolume-sync-crash/test.sh b/tests/misc-tests/013-subvolume-sync-crash/test.sh
index 051b457a..c348ba5d 100755
--- a/tests/misc-tests/013-subvolume-sync-crash/test.sh
+++ b/tests/misc-tests/013-subvolume-sync-crash/test.sh
@@ -13,9 +13,9 @@ setup_root_helper
prepare_test_dev
run_check "$TOP/mkfs.btrfs" -f "$TEST_DEV"
run_check_mount_test_dev
-run_check $SUDO_HELPER chmod a+rw $TEST_MNT
+run_check $SUDO_HELPER chmod a+rw "$TEST_MNT"
-cd $TEST_MNT
+cd "$TEST_MNT"
for i in `seq 5`; do
run_check dd if=/dev/zero of=file$i bs=1M count=10
@@ -23,25 +23,25 @@ done
# 128 is minimum
for sn in `seq 130`;do
- run_check $SUDO_HELPER $TOP/btrfs subvolume snapshot . snap$sn
+ run_check $SUDO_HELPER "$TOP/btrfs" subvolume snapshot . snap$sn
for i in `seq 10`; do
- run_check dd if=/dev/zero of=snap$sn/file$i bs=1M count=1
+ run_check dd if=/dev/zero of="snap$sn/file$i" bs=1M count=1
done
done
-run_check $SUDO_HELPER $TOP/btrfs subvolume list .
-run_check $SUDO_HELPER $TOP/btrfs subvolume list -d .
+run_check $SUDO_HELPER "$TOP/btrfs" subvolume list .
+run_check $SUDO_HELPER "$TOP/btrfs" subvolume list -d .
-idtodel=`run_check_stdout $SUDO_HELPER $TOP/btrfs inspect-internal rootid snap3`
+idtodel=`run_check_stdout $SUDO_HELPER "$TOP/btrfs" inspect-internal rootid snap3`
# delete, sync after some time
-run_check $SUDO_HELPER $TOP/btrfs subvolume delete -c snap*
-{ sleep 5; run_check $TOP/btrfs filesystem sync $TEST_MNT; } &
+run_check $SUDO_HELPER "$TOP/btrfs" subvolume delete -c snap*
+{ sleep 5; run_check "$TOP/btrfs" filesystem sync "$TEST_MNT"; } &
-run_check $SUDO_HELPER $TOP/btrfs subvolume sync .
+run_check $SUDO_HELPER "$TOP/btrfs" subvolume sync .
-run_check $TOP/btrfs filesystem sync $TEST_MNT
-run_check $SUDO_HELPER $TOP/btrfs subvolume list -d .
+run_check "$TOP/btrfs" filesystem sync "$TEST_MNT"
+run_check $SUDO_HELPER "$TOP/btrfs" subvolume list -d .
wait
cd ..
diff --git a/tests/misc-tests/014-filesystem-label/test.sh b/tests/misc-tests/014-filesystem-label/test.sh
index bd6773cb..4756e764 100755
--- a/tests/misc-tests/014-filesystem-label/test.sh
+++ b/tests/misc-tests/014-filesystem-label/test.sh
@@ -12,14 +12,14 @@ setup_root_helper
prepare_test_dev
run_check "$TOP/mkfs.btrfs" -L BTRFS-TEST-LABEL -f "$TEST_DEV"
run_check_mount_test_dev
-run_check $SUDO_HELPER chmod a+rw $TEST_MNT
+run_check $SUDO_HELPER chmod a+rw "$TEST_MNT"
-cd $TEST_MNT
-run_check $SUDO_HELPER $TOP/btrfs filesystem label $TEST_MNT
+cd "$TEST_MNT"
+run_check $SUDO_HELPER "$TOP/btrfs" filesystem label "$TEST_MNT"
# shortest label
-run_check $SUDO_HELPER $TOP/btrfs filesystem label $TEST_MNT a
-run_check $SUDO_HELPER $TOP/btrfs filesystem label $TEST_MNT
-run_check $SUDO_HELPER $TOP/btrfs filesystem label $TEST_MNT ''
+run_check $SUDO_HELPER "$TOP/btrfs" filesystem label "$TEST_MNT" a
+run_check $SUDO_HELPER "$TOP/btrfs" filesystem label "$TEST_MNT"
+run_check $SUDO_HELPER "$TOP/btrfs" filesystem label "$TEST_MNT" ''
longlabel=\
0123456789\
@@ -54,15 +54,15 @@ longlabel=\
\
01234
-run_check $SUDO_HELPER $TOP/btrfs filesystem label $TEST_MNT "$longlabel"
-run_check $SUDO_HELPER $TOP/btrfs filesystem label $TEST_MNT
+run_check $SUDO_HELPER "$TOP/btrfs" filesystem label "$TEST_MNT" "$longlabel"
+run_check $SUDO_HELPER "$TOP/btrfs" filesystem label "$TEST_MNT"
# 256, must fail
run_mustfail "label 256 bytes long succeeded" \
- $SUDO_HELPER $TOP/btrfs filesystem label $TEST_MNT "$longlabel"5
-run_check $SUDO_HELPER $TOP/btrfs filesystem label $TEST_MNT
+ $SUDO_HELPER "$TOP/btrfs" filesystem label "$TEST_MNT" "$longlabel"5
+run_check $SUDO_HELPER "$TOP/btrfs" filesystem label "$TEST_MNT"
run_mustfail "label 2 * 255 bytes long succeeded" \
- $SUDO_HELPER $TOP/btrfs filesystem label $TEST_MNT "$longlabel$longlabel"
-run_check $SUDO_HELPER $TOP/btrfs filesystem label $TEST_MNT
+ $SUDO_HELPER "$TOP/btrfs" filesystem label "$TEST_MNT" "$longlabel$longlabel"
+run_check $SUDO_HELPER "$TOP/btrfs" filesystem label "$TEST_MNT"
cd ..
diff --git a/tests/misc-tests/015-dump-super-garbage/test.sh b/tests/misc-tests/015-dump-super-garbage/test.sh
index 10d8d5b6..b3469459 100755
--- a/tests/misc-tests/015-dump-super-garbage/test.sh
+++ b/tests/misc-tests/015-dump-super-garbage/test.sh
@@ -6,12 +6,12 @@ source "$TEST_TOP/common"
check_prereq btrfs
-run_check $TOP/btrfs inspect-internal dump-super /dev/urandom
-run_check $TOP/btrfs inspect-internal dump-super -a /dev/urandom
-run_check $TOP/btrfs inspect-internal dump-super -fa /dev/urandom
-run_check $TOP/btrfs inspect-internal dump-super -Ffa /dev/urandom
-run_check $TOP/btrfs inspect-internal dump-super -Ffa /dev/urandom
-run_check $TOP/btrfs inspect-internal dump-super -Ffa /dev/urandom
-run_check $TOP/btrfs inspect-internal dump-super -Ffa /dev/urandom
-run_check $TOP/btrfs inspect-internal dump-super -Ffa /dev/urandom
-run_check $TOP/btrfs inspect-internal dump-super -Ffa /dev/urandom
+run_check "$TOP/btrfs" inspect-internal dump-super /dev/urandom
+run_check "$TOP/btrfs" inspect-internal dump-super -a /dev/urandom
+run_check "$TOP/btrfs" inspect-internal dump-super -fa /dev/urandom
+run_check "$TOP/btrfs" inspect-internal dump-super -Ffa /dev/urandom
+run_check "$TOP/btrfs" inspect-internal dump-super -Ffa /dev/urandom
+run_check "$TOP/btrfs" inspect-internal dump-super -Ffa /dev/urandom
+run_check "$TOP/btrfs" inspect-internal dump-super -Ffa /dev/urandom
+run_check "$TOP/btrfs" inspect-internal dump-super -Ffa /dev/urandom
+run_check "$TOP/btrfs" inspect-internal dump-super -Ffa /dev/urandom
diff --git a/tests/misc-tests/016-send-clone-src/test.sh b/tests/misc-tests/016-send-clone-src/test.sh
index e4fa16a7..c993095e 100755
--- a/tests/misc-tests/016-send-clone-src/test.sh
+++ b/tests/misc-tests/016-send-clone-src/test.sh
@@ -17,28 +17,28 @@ run_check_mount_test_dev
here=`pwd`
cd "$TEST_MNT" || _fail "cannot chdir to TEST_MNT"
-run_check $SUDO_HELPER $TOP/btrfs subvolume create subv-parent1
+run_check $SUDO_HELPER "$TOP/btrfs" subvolume create subv-parent1
for i in 1 2 3; do
run_check $SUDO_HELPER dd if=/dev/zero of=subv-parent1/file1_$i bs=1M count=1
- run_check $SUDO_HELPER $TOP/btrfs subvolume snapshot -r subv-parent1 subv-snap1_$i
+ run_check $SUDO_HELPER "$TOP/btrfs" subvolume snapshot -r subv-parent1 subv-snap1_$i
done
-run_check $SUDO_HELPER $TOP/btrfs subvolume create subv-parent2
+run_check $SUDO_HELPER "$TOP/btrfs" subvolume create subv-parent2
for i in 1 2 3; do
run_check $SUDO_HELPER dd if=/dev/zero of=subv-parent2/file2_$i bs=1M count=1
- run_check $SUDO_HELPER $TOP/btrfs subvolume snapshot -r subv-parent2 subv-snap2_$i
+ run_check $SUDO_HELPER "$TOP/btrfs" subvolume snapshot -r subv-parent2 subv-snap2_$i
done
truncate -s0 "$here"/send-stream.img
chmod a+w "$here"/send-stream.img
-run_check $SUDO_HELPER $TOP/btrfs send -f "$here"/send-stream.img \
+run_check $SUDO_HELPER "$TOP/btrfs" send -f "$here"/send-stream.img \
-c subv-snap1_1 -c subv-snap2_1 subv-snap1_[23] subv-snap2_[23]
image=$(extract_image "$here"/multi-clone-src-v4.8.2.stream.xz)
old_stream_size=`stat --format=%s "$image"`
stream_size=`stat --format=%s "$here"/send-stream.img`
-if [ $old_stream_size -lt $stream_size ]; then
+if [ "$old_stream_size" -lt "$stream_size" ]; then
run_check ls -l "$image" "$here"/send-stream.img
_fail "sending stream size is bigger than old stream"
fi
diff --git a/tests/misc-tests/018-recv-end-of-stream/test.sh b/tests/misc-tests/018-recv-end-of-stream/test.sh
index 79e735ea..0de7d3b6 100755
--- a/tests/misc-tests/018-recv-end-of-stream/test.sh
+++ b/tests/misc-tests/018-recv-end-of-stream/test.sh
@@ -19,24 +19,24 @@ test_full_empty_stream() {
local str
str="$here/stream-full-empty.stream"
- run_check $TOP/mkfs.btrfs -f $TEST_DEV
+ run_check "$TOP/mkfs.btrfs" -f "$TEST_DEV"
run_check_mount_test_dev
cd "$TEST_MNT" || _fail "cannot chdir to TEST_MNT"
- run_check $SUDO_HELPER $TOP/btrfs subvolume create subv1
- run_check $SUDO_HELPER $TOP/btrfs subvolume snapshot -r subv1 subv1-snap
+ run_check $SUDO_HELPER "$TOP/btrfs" subvolume create subv1
+ run_check $SUDO_HELPER "$TOP/btrfs" subvolume snapshot -r subv1 subv1-snap
truncate -s0 "$str"
chmod a+w "$str"
- run_check $SUDO_HELPER $TOP/btrfs send -f "$str" subv1-snap
+ run_check $SUDO_HELPER "$TOP/btrfs" send -f "$str" subv1-snap
cd "$here" || _fail "cannot chdir back to test directory"
run_check_umount_test_dev
- run_check $TOP/mkfs.btrfs -f $TEST_DEV
+ run_check "$TOP/mkfs.btrfs" -f "$TEST_DEV"
run_check_mount_test_dev
- run_check $SUDO_HELPER $TOP/btrfs receive "$@" -v -f "$str" "$TEST_MNT"
+ run_check $SUDO_HELPER "$TOP/btrfs" receive "$@" -v -f "$str" "$TEST_MNT"
run_check_umount_test_dev
run_check rm -f -- "$str"
@@ -46,28 +46,28 @@ test_full_simple_stream() {
local str
str="$here/stream-full-simple.stream"
- run_check $TOP/mkfs.btrfs -f $TEST_DEV
+ run_check "$TOP/mkfs.btrfs" -f $TEST_DEV
run_check_mount_test_dev
cd "$TEST_MNT" || _fail "cannot chdir to TEST_MNT"
- run_check $SUDO_HELPER $TOP/btrfs subvolume create subv1
+ run_check $SUDO_HELPER "$TOP/btrfs" subvolume create subv1
for i in 1 2 3; do
run_check $SUDO_HELPER dd if=/dev/zero of=subv1/file1_$i bs=1M count=1
done
- run_check $SUDO_HELPER $TOP/btrfs subvolume snapshot -r subv1 subv1-snap
+ run_check $SUDO_HELPER "$TOP/btrfs" subvolume snapshot -r subv1 subv1-snap
truncate -s0 "$str"
chmod a+w "$str"
- run_check $SUDO_HELPER $TOP/btrfs send -f "$str" subv1-snap
+ run_check $SUDO_HELPER "$TOP/btrfs" send -f "$str" subv1-snap
cd "$here" || _fail "cannot chdir back to test directory"
run_check_umount_test_dev
- run_check $TOP/mkfs.btrfs -f $TEST_DEV
+ run_check "$TOP/mkfs.btrfs" -f "$TEST_DEV"
run_check_mount_test_dev
- run_check $SUDO_HELPER $TOP/btrfs receive "$@" -v -f "$str" "$TEST_MNT"
+ run_check $SUDO_HELPER "$TOP/btrfs" receive "$@" -v -f "$str" "$TEST_MNT"
run_check_umount_test_dev
run_check rm -f -- "$str"
@@ -79,27 +79,27 @@ test_incr_empty_stream() {
fstr="$here/stream-full-empty.stream"
istr="$here/stream-incr-empty.stream"
- run_check $TOP/mkfs.btrfs -f $TEST_DEV
+ run_check "$TOP/mkfs.btrfs" -f "$TEST_DEV"
run_check_mount_test_dev
cd "$TEST_MNT" || _fail "cannot chdir to TEST_MNT"
- run_check $SUDO_HELPER $TOP/btrfs subvolume create subv1
- run_check $SUDO_HELPER $TOP/btrfs subvolume snapshot -r subv1 subv1-snap
- run_check $SUDO_HELPER $TOP/btrfs subvolume snapshot -r subv1 subv2-snap
+ run_check $SUDO_HELPER "$TOP/btrfs" subvolume create subv1
+ run_check $SUDO_HELPER "$TOP/btrfs" subvolume snapshot -r subv1 subv1-snap
+ run_check $SUDO_HELPER "$TOP/btrfs" subvolume snapshot -r subv1 subv2-snap
truncate -s0 "$fstr" "$istr"
chmod a+w "$fstr" "$istr"
- run_check $SUDO_HELPER $TOP/btrfs send -f "$fstr" subv1-snap
- run_check $SUDO_HELPER $TOP/btrfs send -p subv1-snap -f "$istr" subv2-snap
+ run_check $SUDO_HELPER "$TOP/btrfs" send -f "$fstr" subv1-snap
+ run_check $SUDO_HELPER "$TOP/btrfs" send -p subv1-snap -f "$istr" subv2-snap
cd "$here" || _fail "cannot chdir back to test directory"
run_check_umount_test_dev
- run_check $TOP/mkfs.btrfs -f $TEST_DEV
+ run_check "$TOP/mkfs.btrfs" -f "$TEST_DEV"
run_check_mount_test_dev
- run_check $SUDO_HELPER $TOP/btrfs receive "$@" -v -f "$fstr" "$TEST_MNT"
- run_check $SUDO_HELPER $TOP/btrfs receive "$@" -v -f "$istr" "$TEST_MNT"
+ run_check $SUDO_HELPER "$TOP/btrfs" receive "$@" -v -f "$fstr" "$TEST_MNT"
+ run_check $SUDO_HELPER "$TOP/btrfs" receive "$@" -v -f "$istr" "$TEST_MNT"
run_check_umount_test_dev
run_check rm -f -- "$fstr" "$istr"
@@ -110,36 +110,36 @@ test_incr_simple_stream() {
fstr="$here/stream-full-simple.stream"
istr="$here/stream-incr-simple.stream"
- run_check $TOP/mkfs.btrfs -f $TEST_DEV
+ run_check "$TOP/mkfs.btrfs" -f "$TEST_DEV"
run_check_mount_test_dev
cd "$TEST_MNT" || _fail "cannot chdir to TEST_MNT"
- run_check $SUDO_HELPER $TOP/btrfs subvolume create subv1
+ run_check $SUDO_HELPER "$TOP/btrfs" subvolume create subv1
for i in 1 2 3; do
run_check $SUDO_HELPER dd if=/dev/zero of=subv1/file1_$i bs=1M count=1
done
- run_check $SUDO_HELPER $TOP/btrfs subvolume snapshot -r subv1 subv1-snap
+ run_check $SUDO_HELPER "$TOP/btrfs" subvolume snapshot -r subv1 subv1-snap
for i in 1 2 3; do
run_check $SUDO_HELPER dd if=/dev/urandom of=subv1/file1_$i bs=1M count=1
done
- run_check $SUDO_HELPER $TOP/btrfs subvolume snapshot -r subv1 subv2-snap
+ run_check $SUDO_HELPER "$TOP/btrfs" subvolume snapshot -r subv1 subv2-snap
truncate -s0 "$fstr" "$istr"
chmod a+w "$fstr" "$istr"
- run_check $SUDO_HELPER $TOP/btrfs send -f "$fstr" subv1-snap
- run_check $SUDO_HELPER $TOP/btrfs send -p subv1-snap -f "$istr" subv2-snap
+ run_check $SUDO_HELPER "$TOP/btrfs" send -f "$fstr" subv1-snap
+ run_check $SUDO_HELPER "$TOP/btrfs" send -p subv1-snap -f "$istr" subv2-snap
cd "$here" || _fail "cannot chdir back to test directory"
run_check_umount_test_dev
- run_check $TOP/mkfs.btrfs -f $TEST_DEV
+ run_check "$TOP/mkfs.btrfs" -f "$TEST_DEV"
run_check_mount_test_dev
- run_check $SUDO_HELPER $TOP/btrfs receive "$@" -v -f "$fstr" "$TEST_MNT"
- run_check $SUDO_HELPER $TOP/btrfs receive "$@" -v -f "$istr" "$TEST_MNT"
+ run_check $SUDO_HELPER "$TOP/btrfs" receive "$@" -v -f "$fstr" "$TEST_MNT"
+ run_check $SUDO_HELPER "$TOP/btrfs" receive "$@" -v -f "$istr" "$TEST_MNT"
run_check_umount_test_dev
run_check rm -f -- "$fstr" "$istr"
@@ -151,7 +151,7 @@ test_incr_empty_stream
test_incr_simple_stream
extra_opt=-e
-test_full_empty_stream $extra_opt
-test_full_simple_stream $extra_opt
-test_incr_empty_stream $extra_opt
-test_incr_simple_stream $extra_opt
+test_full_empty_stream "$extra_opt"
+test_full_simple_stream "$extra_opt"
+test_incr_empty_stream "$extra_opt"
+test_incr_simple_stream "$extra_opt"
diff --git a/tests/misc-tests/019-receive-clones-on-mounted-subvol/test.sh b/tests/misc-tests/019-receive-clones-on-mounted-subvol/test.sh
index 60ec5cf9..6937163a 100755
--- a/tests/misc-tests/019-receive-clones-on-mounted-subvol/test.sh
+++ b/tests/misc-tests/019-receive-clones-on-mounted-subvol/test.sh
@@ -31,9 +31,9 @@ run_check $SUDO_HELPER "$TOP/btrfs" subvolume create "$TEST_MNT/baz"
run_check $SUDO_HELPER "$TOP/btrfs" subvolume create "$TEST_MNT/snap"
tr '\000' 'A' < /dev/null |
- run_check $SUDO_HELPER dd of=$TEST_MNT/foo/file_a bs=$BLOCK_SIZE count=32
+ run_check $SUDO_HELPER dd of="$TEST_MNT/foo/file_a" bs="$BLOCK_SIZE" count=32
tr '\000' 'B' < /dev/null |
- run_check $SUDO_HELPER dd of=$TEST_MNT/bar/file_b bs=$BLOCK_SIZE count=32
+ run_check $SUDO_HELPER dd of="$TEST_MNT/bar/file_b" bs="$BLOCK_SIZE" count=32
run_check $SUDO_HELPER cp --reflink=always "$TEST_MNT/foo/file_a" "$TEST_MNT/baz/file_a"
run_check $SUDO_HELPER cp --reflink=always "$TEST_MNT/bar/file_b" "$TEST_MNT/baz/file_b"
diff --git a/tests/misc-tests/021-image-multi-devices/test.sh b/tests/misc-tests/021-image-multi-devices/test.sh
index d78c44fb..5430847f 100755
--- a/tests/misc-tests/021-image-multi-devices/test.sh
+++ b/tests/misc-tests/021-image-multi-devices/test.sh
@@ -20,31 +20,31 @@ loop2=$(run_check_stdout $SUDO_HELPER losetup --find --show dev2)
# Create the test file system.
-run_check $SUDO_HELPER "$TOP/mkfs.btrfs" -f $loop1 $loop2
-run_check $SUDO_HELPER mount $loop1 "$TEST_MNT"
-run_check $SUDO_HELPER dd bs=1M count=1 if=/dev/zero "of=$TEST_MNT/foobar"
+run_check $SUDO_HELPER "$TOP/mkfs.btrfs" -f "$loop1" "$loop2"
+run_check $SUDO_HELPER mount "$loop1" "$TEST_MNT"
+run_check $SUDO_HELPER dd bs=1M count=1 if=/dev/zero of="$TEST_MNT/foobar"
orig_md5=$(run_check_stdout md5sum "$TEST_MNT/foobar" | cut -d ' ' -f 1)
run_check $SUDO_HELPER umount "$TEST_MNT"
# Create the image to restore later.
-run_check $SUDO_HELPER "$TOP/btrfs-image" $loop1 "$IMAGE"
+run_check $SUDO_HELPER "$TOP/btrfs-image" "$loop1" "$IMAGE"
# Wipe out the filesystem from the devices, restore the image on a single
# device, check everything works and file foobar is there and with 1Mb of
# zeroes.
-run_check $SUDO_HELPER wipefs -a $loop1
-run_check $SUDO_HELPER wipefs -a $loop2
+run_check $SUDO_HELPER wipefs -a "$loop1"
+run_check $SUDO_HELPER wipefs -a "$loop2"
-run_check $SUDO_HELPER $TOP/btrfs-image -r "$IMAGE" $loop1
+run_check $SUDO_HELPER "$TOP/btrfs-image" -r "$IMAGE" "$loop1"
-run_check $SUDO_HELPER mount $loop1 "$TEST_MNT"
+run_check $SUDO_HELPER mount "$loop1" "$TEST_MNT"
new_md5=$(run_check_stdout md5sum "$TEST_MNT/foobar" | cut -d ' ' -f 1)
run_check $SUDO_HELPER umount "$TEST_MNT"
# Cleanup loop devices.
-run_check $SUDO_HELPER losetup -d $loop1
-run_check $SUDO_HELPER losetup -d $loop2
+run_check $SUDO_HELPER losetup -d "$loop1"
+run_check $SUDO_HELPER losetup -d "$loop2"
rm -f dev1 dev2
# Compare the file digests.
-[ $orig_md5 == $new_md5 ] || _fail "File digests do not match"
+[ "$orig_md5" == "$new_md5" ] || _fail "File digests do not match"
diff --git a/tests/misc-tests/023-device-usage-with-missing-device/test.sh b/tests/misc-tests/023-device-usage-with-missing-device/test.sh
index 05894cfe..57b500c9 100755
--- a/tests/misc-tests/023-device-usage-with-missing-device/test.sh
+++ b/tests/misc-tests/023-device-usage-with-missing-device/test.sh
@@ -12,7 +12,7 @@ setup_root_helper
test_run()
{
# empty filesystem, with enough redundancy so degraded mount works
- run_check $SUDO_HELPER "$TOP/mkfs.btrfs" -f -d raid1 -m raid1 $dev1 $dev2
+ run_check $SUDO_HELPER "$TOP/mkfs.btrfs" -f -d raid1 -m raid1 "$dev1" "$dev2"
TEST_DEV="$dev1"
run_check_mount_test_dev
@@ -21,8 +21,8 @@ test_run()
grep -q "slack.*16\\.00EiB" && _fail
run_check_umount_test_dev
- run_mayfail wipefs -a $dev2
- run_check $SUDO_HELPER losetup -d $dev2
+ run_mayfail wipefs -a "$dev2"
+ run_check $SUDO_HELPER losetup -d "$dev2"
unset loopdevs[2]
run_check_mount_test_dev -o degraded,ro
diff --git a/tests/misc-tests/024-inspect-internal-rootid/test.sh b/tests/misc-tests/024-inspect-internal-rootid/test.sh
index 71e19044..ea0c6298 100755
--- a/tests/misc-tests/024-inspect-internal-rootid/test.sh
+++ b/tests/misc-tests/024-inspect-internal-rootid/test.sh
@@ -36,15 +36,15 @@ id6=$(run_check_stdout "$TOP/btrfs" inspect-internal rootid dir/file2) \
id7=$(run_check_stdout "$TOP/btrfs" inspect-internal rootid sub/file3) \
|| { echo $id7; exit 1; }
-if ! ([ $id1 -ne $id2 ] && [ $id1 -ne $id3 ] && [ $id2 -ne $id3 ]); then
+if ! ([ "$id1" -ne "$id2" ] && [ "$id1" -ne "$id3" ] && [ "$id2" -ne "$id3" ]); then
_fail "inspect-internal rootid: each subvolume must have different id"
fi
-if ! ([ $id1 -eq $id4 ] && [ $id1 -eq $id5 ] && [ $id1 -eq $id6 ]); then
+if ! ([ "$id1" -eq "$id4" ] && [ "$id1" -eq "$id5" ] && [ "$id1" -eq "$id6" ]); then
_fail "inspect-internal rootid: rootid mismatch found"
fi
-if ! ([ $id2 -eq $id7 ]); then
+if ! ([ "$id2" -eq "$id7" ]); then
_fail "inspect-internal rootid: rootid mismatch found"
fi
diff --git a/tests/misc-tests/028-superblock-recover/test.sh b/tests/misc-tests/028-superblock-recover/test.sh
index 1175e480..ee117d0f 100755
--- a/tests/misc-tests/028-superblock-recover/test.sh
+++ b/tests/misc-tests/028-superblock-recover/test.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# Test that any superblock is correctly detected and fixed by btrfs rescue
-source "$TOP/tests/common"
+source "$TEST_TOP/common"
check_prereq btrfs
check_prereq mkfs.btrfs
@@ -25,9 +25,9 @@ function check_corruption {
run_check $SUDO_HELPER dd bs=1K count=1 seek=$(($sb_offset + 1)) if=/dev/zero of="$TEST_DEV" conv=notrunc
# if corrupting one of the sb copies, copy it over the initial superblock
- if [ ! -z $source_sb ]; then
+ if [ ! -z "$source_sb" ]; then
local shift_val=$((16 << $source_sb * 12 ))
- run_check $SUDO_HELPER dd bs=1K count=4 seek=64 skip=$shift_val if="$TEST_DEV" of="$TEST_DEV" conv=notrunc
+ run_check $SUDO_HELPER dd bs=1K count=4 seek=64 skip="$shift_val" if="$TEST_DEV" of="$TEST_DEV" conv=notrunc
fi
# we can't use our mount helper, the following works for file image and
diff --git a/tests/misc-tests/029-send-p-different-mountpoints/test.sh b/tests/misc-tests/029-send-p-different-mountpoints/test.sh
new file mode 100755
index 00000000..0b42b772
--- /dev/null
+++ b/tests/misc-tests/029-send-p-different-mountpoints/test.sh
@@ -0,0 +1,51 @@
+#!/bin/bash
+# test that send -p does not corrupt paths when send is using 2 different mount
+# points
+
+source "$TEST_TOP/common"
+
+check_prereq btrfs
+check_prereq mkfs.btrfs
+
+setup_root_helper
+prepare_test_dev
+
+# we need two mount points, cannot nest the subvoolume under TEST_MNT
+SUBVOL_MNT="$TEST_MNT/subvol"
+TOPLEVEL_MNT="$TEST_MNT/toplevel"
+TEST_MNT="$TOPLEVEL_MNT"
+mkdir -p "$TOPLEVEL_MNT" "$SUBVOL_MNT"
+
+run_check $SUDO_HELPER "$TOP/mkfs.btrfs" -f "$TEST_DEV"
+run_check_mount_test_dev
+
+run_check $SUDO_HELPER "$TOP/btrfs" subvolume create "$TOPLEVEL_MNT/subv1"
+run_check $SUDO_HELPER mount -t btrfs -o subvol=subv1 "$TEST_DEV" "$SUBVOL_MNT"
+
+run_check $SUDO_HELPER "$TOP/btrfs" subvolume create "$TOPLEVEL_MNT/test-subvol"
+run_check $SUDO_HELPER "$TOP/btrfs" subvolume snapshot -r \
+ "$TOPLEVEL_MNT/test-subvol" "$SUBVOL_MNT/test-subvol-mnt-subvol"
+run_check $SUDO_HELPER "$TOP/btrfs" subvolume snapshot -r \
+ "$TOPLEVEL_MNT/test-subvol" "$TOPLEVEL_MNT/test-subvol-mnt-root"
+
+run_mustfail_stdout "send -p on 2 mount points" \
+ $SUDO_HELPER "$TOP/btrfs" send -f /dev/null -p \
+ "$SUBVOL_MNT/test-subvol-mnt-subvol" "$TOPLEVEL_MNT/test-subvol-mnt-root" \
+ | _log_stdout \
+ | grep -q "not on mount point.*/toplevel" \
+ || _fail "expected output not found, please check the logs"
+
+# without a fix, this leads to a corrupted path, with something like:
+#
+# ERROR: open st-subvol-mnt-subvol failed. No such file or directory
+# ^^^^^^^^^^^^^^^^^^^^
+# ERROR: could not resolve rootid for .../tests/mnt/subvol/test-subvol-mnt-subvol
+
+# expected output:
+# ERROR: not on mount point: .../tests/mnt/toplevel
+
+run_check_umount_test_dev "$SUBVOL_MNT"
+run_check_umount_test_dev "$TOPLEVEL_MNT"
+
+rmdir "$SUBVOL_MNT"
+rmdir "$TOPLEVEL_MNT"
diff --git a/tests/misc-tests/030-missing-device-image/test.sh b/tests/misc-tests/030-missing-device-image/test.sh
new file mode 100755
index 00000000..a04efe8f
--- /dev/null
+++ b/tests/misc-tests/030-missing-device-image/test.sh
@@ -0,0 +1,58 @@
+#!/bin/bash
+# Test that btrfs-image can dump image correctly for a missing device (RAID1)
+#
+# At least for RAID1, btrfs-image should be able to handle one missing device
+# without any problem
+
+source "$TEST_TOP/common"
+
+check_prereq btrfs-image
+check_prereq mkfs.btrfs
+check_prereq btrfs
+
+setup_root_helper
+setup_loopdevs 2
+prepare_loopdevs
+dev1=${loopdevs[1]}
+dev2=${loopdevs[2]}
+
+# $1: device number to remove (either 1 or 2)
+test_missing()
+{
+ local bad_num
+ local bad_dev
+ local good_num
+ local good_dev
+
+ bad_num=$1
+ bad_dev=${loopdevs[$bad_num]}
+ good_num=$((3 - $bad_num))
+ good_dev=${loopdevs[$good_num]}
+
+ run_check $SUDO_HELPER "$TOP/mkfs.btrfs" -f -d raid1 -m raid1 "$dev1" "$dev2"
+
+ # fill the fs with some data, we could create space cache
+ run_check $SUDO_HELPER mount "$dev1" "$TEST_MNT"
+ run_check $SUDO_HELPER dd if=/dev/zero of="$TEST_MNT/a" bs=1M count=10
+ run_check $SUDO_HELPER dd if=/dev/zero of="$TEST_MNT/b" bs=4k count=1000 conv=sync
+ run_check $SUDO_HELPER umount "$TEST_MNT"
+
+ # make sure we have space cache
+ if ! run_check_stdout "$TOP/btrfs" inspect dump-tree -t root "$dev1" |
+ grep -q "EXTENT_DATA"; then
+ # Normally the above operation should create the space cache.
+ # If not, it may mean we have migrated to v2 cache by default
+ _not_run "unable to create v1 space cache"
+ fi
+
+ # now wipe the device
+ run_check wipefs -fa "$bad_dev"
+
+ # we don't care about the image but btrfs-image must not fail
+ run_check "$TOP/btrfs-image" "$good_dev" /dev/null
+}
+
+# Test with either device missing, so we're ensured to hit missing device
+test_missing 1
+test_missing 2
+cleanup_loopdevs
diff --git a/tests/mkfs-tests/001-basic-profiles/test.sh b/tests/mkfs-tests/001-basic-profiles/test.sh
index b84016f7..6e295274 100755
--- a/tests/mkfs-tests/001-basic-profiles/test.sh
+++ b/tests/mkfs-tests/001-basic-profiles/test.sh
@@ -11,28 +11,27 @@ setup_root_helper
test_get_info()
{
- run_check $SUDO_HELPER $TOP/btrfs inspect-internal dump-super $dev1
- run_check $SUDO_HELPER $TOP/btrfs check $dev1
- run_check $SUDO_HELPER mount $dev1 $TEST_MNT
- run_check $TOP/btrfs filesystem df $TEST_MNT
- run_check $SUDO_HELPER $TOP/btrfs filesystem usage $TEST_MNT
- run_check $SUDO_HELPER $TOP/btrfs device usage $TEST_MNT
+ run_check $SUDO_HELPER "$TOP/btrfs" inspect-internal dump-super "$dev1"
+ run_check $SUDO_HELPER "$TOP/btrfs" check "$dev1"
+ run_check $SUDO_HELPER mount "$dev1" "$TEST_MNT"
+ run_check "$TOP/btrfs" filesystem df "$TEST_MNT"
+ run_check $SUDO_HELPER "$TOP/btrfs" filesystem usage "$TEST_MNT"
+ run_check $SUDO_HELPER "$TOP/btrfs" device usage "$TEST_MNT"
run_check $SUDO_HELPER umount "$TEST_MNT"
}
test_do_mkfs()
{
- run_check $SUDO_HELPER $TOP/mkfs.btrfs -f \
- $@
+ run_check $SUDO_HELPER "$TOP/mkfs.btrfs" -f "$@"
}
test_mkfs_single()
{
- test_do_mkfs $@ $dev1
+ test_do_mkfs "$@" "$dev1"
test_get_info
}
test_mkfs_multi()
{
- test_do_mkfs $@ ${loopdevs[@]}
+ test_do_mkfs "$@" ${loopdevs[@]}
test_get_info
}
diff --git a/tests/mkfs-tests/004-rootdir-keeps-size/test.sh b/tests/mkfs-tests/004-rootdir-keeps-size/test.sh
index 4a84e6db..635a5137 100755
--- a/tests/mkfs-tests/004-rootdir-keeps-size/test.sh
+++ b/tests/mkfs-tests/004-rootdir-keeps-size/test.sh
@@ -13,12 +13,12 @@ test_mkfs_with_size() {
local tmp
size="$1"
- run_check truncate -s$size $TEST_DEV
- imgsize=$(run_check_stdout stat --format=%s $TEST_DEV)
- run_check $SUDO_HELPER $TOP/mkfs.btrfs -f \
- --rootdir $INTERNAL_BIN/Documentation \
- $TEST_DEV
- tmp=$(run_check_stdout stat --format=%s $TEST_DEV)
+ run_check truncate -s"$size" "$TEST_DEV"
+ imgsize=$(run_check_stdout stat --format=%s "$TEST_DEV")
+ run_check $SUDO_HELPER "$TOP/mkfs.btrfs" -f \
+ --rootdir "$INTERNAL_BIN/Documentation" \
+ "$TEST_DEV"
+ tmp=$(run_check_stdout stat --format=%s "$TEST_DEV")
if ! [ "$imgsize" = "$tmp" ]; then
_fail "image size changed from $imgsize to $tmp"
fi
diff --git a/tests/mkfs-tests/005-long-device-name-for-ssd/test.sh b/tests/mkfs-tests/005-long-device-name-for-ssd/test.sh
index 55ce676e..b7c76b18 100755
--- a/tests/mkfs-tests/005-long-device-name-for-ssd/test.sh
+++ b/tests/mkfs-tests/005-long-device-name-for-ssd/test.sh
@@ -11,31 +11,31 @@ prepare_test_dev
# prep device
dmname=\
btrfs-test-with-very-long-name-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-dmdev=/dev/mapper/$dmname
+dmdev="/dev/mapper/$dmname"
run_check truncate -s0 img
chmod a+w img
run_check truncate -s2g img
loopdev=`run_check_stdout $SUDO_HELPER losetup --find --show img`
-run_check $SUDO_HELPER dmsetup create $dmname --table "0 1048576 linear $loopdev 0"
+run_check $SUDO_HELPER dmsetup create "$dmname" --table "0 1048576 linear $loopdev 0"
-dmbase=`readlink -f $dmdev`
+dmbase=`readlink -f "$dmdev"`
base=`basename "$dmbase"`
-rot=/sys/class/block/$base/queue/rotational
+rot="/sys/class/block/$base/queue/rotational"
# switch rotational
run_check cat $rot
-echo 0 | run_check $SUDO_HELPER tee $rot
-run_check cat $rot
+echo 0 | run_check $SUDO_HELPER tee "$rot"
+run_check cat "$rot"
# test
-run_check_stdout $SUDO_HELPER $TOP/mkfs.btrfs -f $@ $dmdev |
+run_check_stdout $SUDO_HELPER "$TOP/mkfs.btrfs" -f "$@" "$dmdev" |
grep -q 'SSD detected:.*yes' || _fail 'SSD not detected'
-run_check $SUDO_HELPER $TOP/btrfs inspect-internal dump-super $dmdev
+run_check $SUDO_HELPER "$TOP/btrfs" inspect-internal dump-super "$dmdev"
# cleanup
-run_check $SUDO_HELPER dmsetup remove $dmname
-run_mayfail $SUDO_HELPER losetup -d $loopdev
+run_check $SUDO_HELPER dmsetup remove "$dmname"
+run_mayfail $SUDO_HELPER losetup -d "$loopdev"
run_check truncate -s0 img
rm img
diff --git a/tests/mkfs-tests/006-partitioned-loopdev/test.sh b/tests/mkfs-tests/006-partitioned-loopdev/test.sh
index 06c254fd..5d972a78 100755
--- a/tests/mkfs-tests/006-partitioned-loopdev/test.sh
+++ b/tests/mkfs-tests/006-partitioned-loopdev/test.sh
@@ -18,15 +18,15 @@ cp partition-1g-1g img
run_check truncate -s2g img
loopdev=$(run_check_stdout $SUDO_HELPER losetup --partscan --find --show img)
-base=$(basename $loopdev)
+base=$(basename "$loopdev")
# expect partitions named like loop0p1 etc
-for looppart in $(ls /dev/$base?*); do
- run_check $SUDO_HELPER $TOP/mkfs.btrfs -f $looppart
- run_check $SUDO_HELPER $TOP/btrfs inspect-internal dump-super $looppart
+for looppart in $(ls /dev/"$base"?*); do
+ run_check $SUDO_HELPER "$TOP/mkfs.btrfs" -f "$looppart"
+ run_check $SUDO_HELPER "$TOP/btrfs" inspect-internal dump-super "$looppart"
done
# cleanup
-run_check $SUDO_HELPER losetup -d $loopdev
+run_check $SUDO_HELPER losetup -d "$loopdev"
run_check truncate -s0 img
rm img
diff --git a/tests/mkfs-tests/007-mix-nodesize-sectorsize/test.sh b/tests/mkfs-tests/007-mix-nodesize-sectorsize/test.sh
index f7e88c9a..31f44f33 100755
--- a/tests/mkfs-tests/007-mix-nodesize-sectorsize/test.sh
+++ b/tests/mkfs-tests/007-mix-nodesize-sectorsize/test.sh
@@ -11,9 +11,9 @@ prepare_test_dev
test_mkfs_single()
{
- run_check $SUDO_HELPER $TOP/mkfs.btrfs -f "$@" $TEST_DEV
- run_check $SUDO_HELPER $TOP/btrfs inspect-internal dump-super $TEST_DEV
- run_check $SUDO_HELPER $TOP/btrfs check $TEST_DEV
+ run_check $SUDO_HELPER "$TOP/mkfs.btrfs" -f "$@" "$TEST_DEV"
+ run_check $SUDO_HELPER "$TOP/btrfs" inspect-internal dump-super "$TEST_DEV"
+ run_check $SUDO_HELPER "$TOP/btrfs" check "$TEST_DEV"
}
# default
@@ -22,14 +22,14 @@ test_mkfs_single
# nodesize >= sectorsize
for nodesize in 4096 8192 16384 32768 65536; do
for sectorsize in 4096 8192 16384 32768 65536; do
- [ $nodesize -lt $sectorsize ] && continue
- test_mkfs_single -n $nodesize -s $sectorsize -d single -m single
- test_mkfs_single -n $nodesize -s $sectorsize -d single -m dup
+ [ "$nodesize" -lt "$sectorsize" ] && continue
+ test_mkfs_single -n "$nodesize" -s "$sectorsize" -d single -m single
+ test_mkfs_single -n "$nodesize" -s "$sectorsize" -d single -m dup
done
done
# nodesize, mixed mode
for nodesize in 4k 8k 16k 32k 64k; do
- test_mkfs_single -n $nodesize -s $nodesize -d single -m single --mixed
- test_mkfs_single -n $nodesize -s $nodesize -d dup -m dup --mixed
+ test_mkfs_single -n "$nodesize" -s "$nodesize" -d single -m single --mixed
+ test_mkfs_single -n "$nodesize" -s "$nodesize" -d dup -m dup --mixed
done
diff --git a/tests/mkfs-tests/008-sectorsize-nodesize-combination/test.sh b/tests/mkfs-tests/008-sectorsize-nodesize-combination/test.sh
index 9cc2f9e0..345d81de 100755
--- a/tests/mkfs-tests/008-sectorsize-nodesize-combination/test.sh
+++ b/tests/mkfs-tests/008-sectorsize-nodesize-combination/test.sh
@@ -19,13 +19,13 @@ do_test()
{
sectorsize=$1
nodesize=$2
- run_mayfail $TOP/mkfs.btrfs -f -O $features -n $nodesize -s $sectorsize \
- $TEST_DEV
+ run_mayfail "$TOP/mkfs.btrfs" -f -O "$features" -n "$nodesize" -s "$sectorsize" \
+ "$TEST_DEV"
ret=$?
- if [ $ret == 0 ]; then
- run_check $TOP/btrfs check $TEST_DEV
+ if [ "$ret" == 0 ]; then
+ run_check "$TOP/btrfs" check "$TEST_DEV"
fi
- return $ret
+ return "$ret"
}
# Invalid: Unaligned sectorsize and nodesize
diff --git a/tests/mkfs-tests/010-minimal-size/test.sh b/tests/mkfs-tests/010-minimal-size/test.sh
index 62f8e16a..0ebe0995 100755
--- a/tests/mkfs-tests/010-minimal-size/test.sh
+++ b/tests/mkfs-tests/010-minimal-size/test.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# test if the reported minimal size of mkfs.btrfs is valid
-source "$TOP/tests/common"
+source "$TEST_TOP/common"
check_prereq mkfs.btrfs
check_prereq btrfs
@@ -14,12 +14,12 @@ do_test()
# the minimal device size for the given option combination
prepare_test_dev 1M
output=$(run_mustfail_stdout "mkfs.btrfs for small image" \
- "$TOP/mkfs.btrfs" -f $@ "$TEST_DEV")
+ "$TOP/mkfs.btrfs" -f "$@" "$TEST_DEV")
good_size=$(echo "$output" | grep -oP "(?<=is )\d+")
prepare_test_dev "$good_size"
echo "Minimal device size is $good_size" >> "$RESULTS"
- run_check $TOP/mkfs.btrfs -f $@ "$TEST_DEV"
+ run_check $TOP/mkfs.btrfs -f "$@" "$TEST_DEV"
run_check_mount_test_dev
run_check_umount_test_dev
}
diff --git a/tests/mkfs-tests/011-rootdir-create-file/test.sh b/tests/mkfs-tests/011-rootdir-create-file/test.sh
index c04f711d..20f7c4ce 100755
--- a/tests/mkfs-tests/011-rootdir-create-file/test.sh
+++ b/tests/mkfs-tests/011-rootdir-create-file/test.sh
@@ -3,7 +3,7 @@
# Expected behavior: it should create a new file if destination doesn't exist
# Regression 460e93f25754 ("btrfs-progs: mkfs: check the status of file at mkfs")
-source "$TOP/tests/common"
+source "$TEST_TOP/common"
check_prereq mkfs.btrfs
diff --git a/tests/mkfs-tests/012-rootdir-no-shrink/test.sh b/tests/mkfs-tests/012-rootdir-no-shrink/test.sh
index c1cb04f5..765f8cdd 100755
--- a/tests/mkfs-tests/012-rootdir-no-shrink/test.sh
+++ b/tests/mkfs-tests/012-rootdir-no-shrink/test.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# Test if mkfs.btrfs --rootdir will skip shrinking correctly
-source "$TOP/tests/common"
+source "$TEST_TOP/common"
check_prereq mkfs.btrfs
@@ -11,7 +11,7 @@ fs_size=$((512 * 1024 * 1024))
bs=$((1024 * 1024))
tmp=$(mktemp -d --tmpdir btrfs-progs-mkfs.rootdirXXXXXXX)
-prepare_test_dev $fs_size
+prepare_test_dev "$fs_size"
# No shrink case
@@ -20,7 +20,7 @@ run_check_mount_test_dev
# We should be able to write at least half of the fs size data since the fs is
# not shrunk
-run_check $SUDO_HELPER dd if=/dev/zero bs=$bs count=$(($fs_size / $bs / 2)) \
+run_check $SUDO_HELPER dd if=/dev/zero bs="$bs" count=$(($fs_size / $bs / 2)) \
of="$TEST_MNT/file"
run_check_umount_test_dev
@@ -31,7 +31,7 @@ run_check "$TOP/mkfs.btrfs" -f --rootdir "$tmp" --shrink "$TEST_DEV"
run_check_mount_test_dev
run_mustfail "mkfs.btrfs for shrink rootdir" \
- $SUDO_HELPER dd if=/dev/zero bs=$bs count=$(($fs_size / $bs / 2)) \
+ $SUDO_HELPER dd if=/dev/zero bs="$bs" count=$(($fs_size / $bs / 2)) \
of="$TEST_MNT/file"
run_check_umount_test_dev
diff --git a/tests/mkfs-tests/013-reserved-1M-for-single/test.sh b/tests/mkfs-tests/013-reserved-1M-for-single/test.sh
index 1490df2c..1944ad93 100755
--- a/tests/mkfs-tests/013-reserved-1M-for-single/test.sh
+++ b/tests/mkfs-tests/013-reserved-1M-for-single/test.sh
@@ -6,7 +6,7 @@
# using btrfs_alloc_chunk() which won't use the 0~1M range, so other profiles
# are safe, but we test them nevertheless.
-source "$TOP/tests/common"
+source "$TEST_TOP/common"
check_prereq mkfs.btrfs
check_prereq btrfs
@@ -22,14 +22,14 @@ do_one_test ()
dump-tree -t device "$TEST_DEV" | \
grep -oP '(?<=DEV_EXTENT )[[:digit:]]*' | head -n1)
- if [ -z $first_dev_extent ]; then
+ if [ -z "$first_dev_extent" ]; then
_fail "failed to get first device extent"
fi
echo "first dev extent starts at $first_dev_extent" >> "$RESULTS"
echo "reserved range is [0, $(( 1024 * 1024)))" >> "$RESULTS"
# First device extent should not start below 1M
- if [ $first_dev_extent -lt $(( 1024 * 1024 )) ]; then
+ if [ "$first_dev_extent" -lt $(( 1024 * 1024 )) ]; then
_fail "first device extent occupies reserved 0~1M range"
fi
}
diff --git a/tests/mkfs-tests/014-rootdir-inline-extent/test.sh b/tests/mkfs-tests/014-rootdir-inline-extent/test.sh
new file mode 100755
index 00000000..09a96004
--- /dev/null
+++ b/tests/mkfs-tests/014-rootdir-inline-extent/test.sh
@@ -0,0 +1,46 @@
+#!/bin/bash
+# Regression test for mkfs.btrfs --rootdir with inline file extents
+# For any large inline file extent, btrfs check could already report it
+
+source "$TEST_TOP/common"
+
+check_prereq mkfs.btrfs
+
+prepare_test_dev
+
+tmp=$(mktemp -d --tmpdir btrfs-progs-mkfs.rootdirXXXXXXX)
+
+pagesize=$(getconf PAGESIZE)
+create_file()
+{
+ local size=$1
+ # Reuse size as filename
+ eval printf "%0.sx" {1..$size} > "$tmp/$size"
+}
+
+test_mkfs_rootdir()
+{
+ nodesize=$1
+ run_check "$TOP/mkfs.btrfs" --nodesize "$nodesize" -f --rootdir "$tmp" \
+ "$TEST_DEV"
+ run_check $SUDO_HELPER "$TOP/btrfs" check "$TEST_DEV"
+}
+
+# Use power of 2 from 512 to 64K (maximum node size) as base file size
+for i in 512 1024 2048 4096 8192 16384 32768; do
+ create_file $(($i - 102))
+ # 101 is the overhead size for max inline extent
+ create_file $(($i - 101))
+ create_file $(($i - 100))
+
+ create_file $(($i - 1))
+ create_file $i
+ create_file $(($i + 1))
+done
+
+for nodesize in 4096 8192 16384 32768 65536; do
+ if [ "$nodesize" -ge "$pagesize" ]; then
+ test_mkfs_rootdir "$nodesize"
+ fi
+done
+rm -rf -- "$tmp"
diff --git a/tests/mkfs-tests/015-fstree-uuid-otime/test.sh b/tests/mkfs-tests/015-fstree-uuid-otime/test.sh
new file mode 100755
index 00000000..a2e04a3f
--- /dev/null
+++ b/tests/mkfs-tests/015-fstree-uuid-otime/test.sh
@@ -0,0 +1,35 @@
+#!/bin/bash
+# verify that mkfs fills the uuid and otime for FS_TREE
+
+source "$TEST_TOP/common"
+
+check_prereq mkfs.btrfs
+check_prereq btrfs
+
+setup_root_helper
+prepare_test_dev
+
+# item 3 key (FS_TREE ROOT_ITEM 0) itemoff 14949 itemsize 439
+# generation 4 root_dirid 256 bytenr 30408704 level 0 refs 1
+# lastsnap 0 byte_limit 0 bytes_used 16384 flags 0x0(none)
+# uuid 322826f3-817a-4111-89ff-5481bfd516e2
+# ctime 1521656113.0 (2018-03-21 19:15:13)
+# otime 1521656113.0 (2018-03-21 19:15:13)
+# drop key (0 UNKNOWN.0 0) level 0
+
+run_check $SUDO_HELPER "$TOP/mkfs.btrfs" -f "$@" "$TEST_DEV"
+# match not-all-zeros in the first part
+uuid=$(run_check_stdout $SUDO_HELPER "$TOP/btrfs" inspect-internal dump-tree -t root "$TEST_DEV" | \
+ grep -A 3 "FS_TREE ROOT_ITEM 0" | grep 'uuid ')
+
+if [ $? != 0 ]; then
+ _fail "uuid for FS_TREE not found"
+fi
+
+if [ "$uuid" = '00000000-0000-0000-0000-000000000000' ]; then
+ _fail "uuid for FS_TREE is null"
+fi
+
+run_check_stdout $SUDO_HELPER "$TOP/btrfs" inspect-internal dump-tree -t root "$TEST_DEV" | \
+ grep -A 5 "FS_TREE ROOT_ITEM 0" | grep -q 'otime ' || \
+ _fail "otime for FS_TREE not found"
diff --git a/tests/mkfs-tests/016-rootdir-bad-symbolic-link/test.sh b/tests/mkfs-tests/016-rootdir-bad-symbolic-link/test.sh
new file mode 100755
index 00000000..39387ec7
--- /dev/null
+++ b/tests/mkfs-tests/016-rootdir-bad-symbolic-link/test.sh
@@ -0,0 +1,26 @@
+#!/bin/bash
+# Regression test for mkfs.btrfs --rootdir with dangling symlink (points to
+# non-existing location)
+#
+# Since mkfs.btrfs --rootdir will just create symbolic link rather than
+# follow it, we shouldn't hit any problem
+
+source "$TEST_TOP/common"
+
+check_prereq mkfs.btrfs
+prepare_test_dev
+
+tmp=$(mktemp -d --tmpdir btrfs-progs-mkfs.rootdirXXXXXXX)
+
+non_existing="/no/such/file$RANDOM$RANDOM"
+
+if [ -f "$non_existing" ]; then
+ _not_run "Some one created $non_existing, which is not expect to exist"
+fi
+
+run_check ln -sf "$non_existing" "$tmp/foobar"
+
+run_check "$TOP/mkfs.btrfs" -f --rootdir "$tmp" "$TEST_DEV"
+run_check "$TOP/btrfs" check "$TEST_DEV"
+
+rm -rf -- "$tmp"