File tree Expand file tree Collapse file tree 10 files changed +32
-0
lines changed
cli-tests/017-fi-show-missing
fsck-tests/052-init-csum-tree
006-image-on-missing-device
035-receive-common-mount-point-prefix Expand file tree Collapse file tree 10 files changed +32
-0
lines changed Original file line number Diff line number Diff line change @@ -20,6 +20,7 @@ run_check $SUDO_HELPER "$TOP/mkfs.btrfs" -f -d raid1 "${loopdevs[@]}"
20
20
# Move the device, changing its path, simulating the device being missing
21
21
run_check $SUDO_HELPER mv " $dev2 " /dev/loop-non-existent
22
22
23
+ cond_wait_for_loopdevs
23
24
run_check $SUDO_HELPER mount -o degraded $dev1 $TEST_MNT
24
25
25
26
if ! run_check_stdout $SUDO_HELPER " $TOP /btrfs" filesystem show " $TEST_MNT " | \
Original file line number Diff line number Diff line change @@ -648,6 +648,9 @@ run_check_mount_test_dev()
648
648
_fail " Invalid \$ TEST_MNT: $TEST_MNT "
649
649
}
650
650
651
+ # Wait for loopdevs before mount as this could fail in the CI for some reason
652
+ cond_wait_for_loopdevs
653
+
651
654
run_check $SUDO_HELPER mount -t btrfs $loop_opt " $@ " " $TEST_DEV " " $TEST_MNT "
652
655
}
653
656
@@ -834,6 +837,7 @@ prepare_loopdevs()
834
837
chmod a+rw " $loopdev_prefix$i "
835
838
truncate -s0 " $loopdev_prefix$i "
836
839
truncate -s2g " $loopdev_prefix$i "
840
+ run_check sync " $loopdev_prefix$i "
837
841
loopdevs[$i ]=` run_check_stdout $SUDO_HELPER losetup --find --show " $loopdev_prefix$i " `
838
842
done
839
843
}
@@ -851,6 +855,22 @@ cleanup_loopdevs()
851
855
run_check $SUDO_HELPER losetup --all
852
856
}
853
857
858
+ # Loop devices may not be ready for mount after mkfs (observed in the CI), wait
859
+ # for them explicitly. Errors are reported but tolerated, the mount could succeed
860
+ # eventually or the whole test will fail anyway.
861
+ wait_for_loopdevs ()
862
+ {
863
+ for dev in ${loopdevs[@]} ; do
864
+ run_mayfail $SUDO_HELPER " $TOP /btrfs" device ready " $dev "
865
+ done
866
+ }
867
+
868
+ cond_wait_for_loopdevs () {
869
+ if [ -n " ${loopdevs[1]} " ]; then
870
+ wait_for_loopdevs
871
+ fi
872
+ }
873
+
854
874
init_env ()
855
875
{
856
876
TEST_MNT=" ${TEST_MNT:- $TEST_TOP / mnt} "
Original file line number Diff line number Diff line change @@ -21,6 +21,7 @@ run_check $SUDO_HELPER dd if=/dev/urandom of="$TEST_MNT/nodatasum_file" \
21
21
bs=16k count=1 status=noxfer > /dev/null 2>&1
22
22
23
23
# Revert to default datasum
24
+ cond_wait_for_loopdevs
24
25
run_check $SUDO_HELPER mount -o remount,datasum " $TEST_MNT "
25
26
26
27
# Then create an inode with datasum, but all preallocated extents
Original file line number Diff line number Diff line change @@ -24,6 +24,7 @@ test_run()
24
24
run_check $SUDO_HELPER " $TOP /mkfs.btrfs" -f -d raid1 -m raid1 " $dev1 " " $dev2 "
25
25
26
26
# we need extents to trigger reading from all devices
27
+ cond_wait_for_loopdevs
27
28
run_check $SUDO_HELPER mount " $dev1 " " $TEST_MNT "
28
29
run_check $SUDO_HELPER dd if=/dev/zero of=" $TEST_MNT /a" bs=1M count=10
29
30
run_check $SUDO_HELPER dd if=/dev/zero of=" $TEST_MNT /b" bs=4k count=1000 conv=sync
Original file line number Diff line number Diff line change @@ -19,6 +19,7 @@ loop3=${loopdevs[3]}
19
19
# Create the test file system.
20
20
21
21
run_check $SUDO_HELPER " $TOP /mkfs.btrfs" -f " $loop1 " " $loop2 "
22
+ cond_wait_for_loopdevs
22
23
run_check $SUDO_HELPER mount " $loop1 " " $TEST_MNT "
23
24
run_check $SUDO_HELPER dd bs=1M count=1 if=/dev/zero of=" $TEST_MNT /foobar"
24
25
orig_md5=$( run_check_stdout stat " $TEST_MNT /foobar" | md5sum | cut -d ' ' -f 1)
@@ -38,6 +39,7 @@ run_check $SUDO_HELPER "$TOP/btrfs-image" -r "$IMAGE" "$loop3"
38
39
# Run check to make sure there is nothing wrong for the recovered image
39
40
run_check $SUDO_HELPER " $TOP /btrfs" check " $loop3 "
40
41
42
+ cond_wait_for_loopdevs
41
43
run_check $SUDO_HELPER mount " $loop3 " " $TEST_MNT "
42
44
new_md5=$( run_check_stdout stat " $TEST_MNT /foobar" | md5sum | cut -d ' ' -f 1)
43
45
run_check $SUDO_HELPER umount " $TEST_MNT "
Original file line number Diff line number Diff line change @@ -32,6 +32,7 @@ test_missing()
32
32
run_check $SUDO_HELPER " $TOP /mkfs.btrfs" -f -d raid1 -m raid1 " $dev1 " " $dev2 "
33
33
34
34
# fill the fs with some data, we could create space cache
35
+ cond_wait_for_loopdevs
35
36
run_check $SUDO_HELPER mount " $dev1 " " $TEST_MNT "
36
37
run_check $SUDO_HELPER dd if=/dev/zero of=" $TEST_MNT /a" bs=1M count=10
37
38
run_check $SUDO_HELPER dd if=/dev/zero of=" $TEST_MNT /b" bs=4k count=1000 conv=sync
Original file line number Diff line number Diff line change @@ -23,9 +23,11 @@ loop2=$(run_check_stdout $SUDO_HELPER losetup --find --show dev2)
23
23
run_check $SUDO_HELPER " $TOP /mkfs.btrfs" -f " $loop1 "
24
24
run_check $SUDO_HELPER " $TOP /mkfs.btrfs" -f " $loop2 "
25
25
26
+ cond_wait_for_loopdevs
26
27
run_check $SUDO_HELPER mount " $loop1 " " $TEST_MNT "
27
28
run_check $SUDO_HELPER mkdir " $TEST_MNT /ddis"
28
29
run_check $SUDO_HELPER mkdir " $TEST_MNT /ddis-not-a-mount"
30
+ cond_wait_for_loopdevs
29
31
run_check $SUDO_HELPER mount " $loop2 " " $TEST_MNT /ddis"
30
32
31
33
echo " some data" | $SUDO_HELPER tee " $TEST_MNT /ddis/file" > /dev/null
Original file line number Diff line number Diff line change @@ -47,6 +47,7 @@ nextdevice() {
47
47
run_check $SUDO_HELPER " $TOP /btrfs" device add ${loopdevs[$nextdev]} " $TEST_MNT "
48
48
# Although seed sprout would make the fs RW, explicitly remount it RW
49
49
# just in case of future behavior change.
50
+ cond_wait_for_loopdevs
50
51
run_check $SUDO_HELPER mount -o remount,rw " $TEST_MNT "
51
52
# Rewrite the file
52
53
md5sum=$( run_check_stdout md5sum " $TEST_MNT /file$nextdev " | awk ' {print $1}' )
Original file line number Diff line number Diff line change @@ -24,6 +24,7 @@ test_get_info()
24
24
# device RAID0 as the same.
25
25
# Thus kernel may create new SINGLE chunks, causing extra warning
26
26
# when testing single device RAID0.
27
+ cond_wait_for_loopdevs
27
28
run_check $SUDO_HELPER mount -o ro " $dev1 " " $TEST_MNT "
28
29
run_check_stdout " $TOP /btrfs" filesystem df " $TEST_MNT " > " $tmp_out "
29
30
if grep -q " Multiple block group profiles detected" " $tmp_out " ; then
Original file line number Diff line number Diff line change @@ -25,6 +25,7 @@ check_global_prereq getfattr
25
25
# doesn't support xattr.
26
26
# Instead we go $TEST_TOP/btrfs-progs-mkfs-tests-027.XXXXXX/ instead.
27
27
run_check $SUDO_HELPER " $TOP /mkfs.btrfs" -f " $tmp_dev "
28
+ cond_wait_for_loopdevs
28
29
run_check $SUDO_HELPER mount -t btrfs " $tmp_dev " " $TEST_MNT "
29
30
30
31
run_check $SUDO_HELPER mkdir " $TEST_MNT /source_dir/"
@@ -39,6 +40,7 @@ run_check $SUDO_HELPER setfattr -n user.foobar "$TEST_MNT/source_dir/foobar"
39
40
run_check $SUDO_HELPER " $TOP /mkfs.btrfs" --rootdir " $TEST_MNT /source_dir" -f " $real_dev "
40
41
run_check $SUDO_HELPER umount " $TEST_MNT "
41
42
43
+ cond_wait_for_loopdevs
42
44
run_check $SUDO_HELPER mount -t btrfs " $real_dev " " $TEST_MNT "
43
45
44
46
new_mode=$( run_check_stdout $SUDO_HELPER stat " $TEST_MNT /" | grep " Uid:" )
You can’t perform that action at this time.
0 commit comments