btrfs-progs: tests: add case for send vs subvolume deletion
Subvolumes that are part of send must not be deleted, we can check that only by the error code EPERM, otherwise it's also in the system log. Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
74f45db76c
commit
f1b428ea3b
|
@ -0,0 +1,42 @@
|
|||
#!/bin/bash
|
||||
# Detect if subvolume deletion fails when it's part of send
|
||||
|
||||
source "$TEST_TOP/common"
|
||||
|
||||
check_prereq mkfs.btrfs
|
||||
check_prereq btrfs
|
||||
|
||||
prepare_test_dev 4G
|
||||
|
||||
run_check_mkfs_test_dev
|
||||
run_check_mount_test_dev
|
||||
|
||||
run_check $SUDO_HELPER "$TOP/btrfs" subvolume create "$TEST_MNT/subv1"
|
||||
# Generate 2.7G of data to send, should be slow enough to let the subvolume
|
||||
# deletion catch send in progress
|
||||
for i in `seq 10`; do
|
||||
run_check $SUDO_HELPER dd if=/dev/zero of="$TEST_MNT/subv1/file$i" bs=50M count="$i"
|
||||
done
|
||||
run_check $SUDO_HELPER "$TOP/btrfs" subvolume snapshot -r "$TEST_MNT/subv1" "$TEST_MNT/snap1"
|
||||
|
||||
stream="stream$RANDOM.out"
|
||||
rm -f -- "$stream"
|
||||
touch -- "$stream"
|
||||
chmod a+rw -- "$stream"
|
||||
run_check "$TOP/btrfs" filesystem sync "$TEST_MNT"
|
||||
# Output to file must be slow
|
||||
run_check $SUDO_HELPER "$TOP/btrfs" send -f "$stream" "$TEST_MNT/snap1" &
|
||||
# Give send time to start
|
||||
run_check sleep 2
|
||||
# If this fails, send was fast
|
||||
ps faux | run_check grep "btrfs send -f $stream"
|
||||
|
||||
# Fail if send is still in progress, may not work on a really fast device
|
||||
run_mustfail "deleting default subvolume by path succeeded" \
|
||||
$SUDO_HELPER "$TOP/btrfs" subvolume delete "$TEST_MNT/snap1"
|
||||
|
||||
# Wait for send
|
||||
wait
|
||||
rm -f -- "$stream"
|
||||
|
||||
run_check_umount_test_dev
|
Loading…
Reference in New Issue