mirror of
https://github.com/kdave/btrfs-progs
synced 2025-04-18 13:05:20 +00:00
btrfs-progs: tests: add coverage for multiple profiles warning
Several commands now warn about multiple profiles as it is considered a potentially problematic filesystem state that might need user attention. - device delete - device add - balance pause - balance cancel - filesystem usage WARNING: Multiple profiles detected. See 'man btrfs(5)'. WARNING: data -> [raid1, single] Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
a7c19b1532
commit
33fc7a13ff
90
tests/cli-tests/014-multiple-profiles-warning/test.sh
Executable file
90
tests/cli-tests/014-multiple-profiles-warning/test.sh
Executable file
@ -0,0 +1,90 @@
|
||||
#!/bin/bash
|
||||
# Create filesystem with multiple block groups and check commands that are
|
||||
# supposed to warn about that:
|
||||
# - device add
|
||||
# - device delete
|
||||
# - device usage
|
||||
# - balance pause
|
||||
# - balance cancel
|
||||
# - filesystem df
|
||||
#
|
||||
# Tested for separate data/metadata and mixed
|
||||
|
||||
source "$TEST_TOP/common"
|
||||
|
||||
check_prereq mkfs.btrfs
|
||||
check_prereq btrfs
|
||||
|
||||
setup_root_helper
|
||||
|
||||
test_run_commands() {
|
||||
run_check "$TOP/btrfs" filesystem usage "$TEST_MNT"
|
||||
# Report: filesystem df
|
||||
if ! run_check_stdout "$TOP/btrfs" filesystem df "$TEST_MNT" | \
|
||||
grep -q "$msg"; then
|
||||
_fail "filesystem df does not warn"
|
||||
fi
|
||||
# Report: device delete
|
||||
if ! run_check_stdout $SUDO_HELPER "$TOP/btrfs" device delete "${loopdevs[4]}" "$TEST_MNT" | \
|
||||
grep -q "$msg"; then
|
||||
_fail "device delete does not warn"
|
||||
fi
|
||||
# Report: device add
|
||||
if ! run_check_stdout $SUDO_HELPER "$TOP/btrfs" device add -f "${loopdevs[4]}" "$TEST_MNT" | \
|
||||
grep -q "$msg"; then
|
||||
_fail "device add does not warn"
|
||||
fi
|
||||
# Report: device usage
|
||||
if ! run_check_stdout $SUDO_HELPER "$TOP/btrfs" device usage "$TEST_MNT" | \
|
||||
grep -q "$msg"; then
|
||||
_fail "device usage does not warn"
|
||||
fi
|
||||
# Balance status
|
||||
out=$(run_mayfail_stdout $SUDO_HELPER "$TOP/btrfs" balance pause "$TEST_MNT")
|
||||
_log "$out"
|
||||
if ! echo "$out" | grep -q "$msg"; then
|
||||
_fail "balance pause does not warn"
|
||||
fi
|
||||
|
||||
out=$(run_mayfail_stdout $SUDO_HELPER "$TOP/btrfs" balance cancel "$TEST_MNT")
|
||||
_log "$out"
|
||||
if ! echo "$out" | grep -q "$msg"; then
|
||||
_fail "balance cancel does not warn"
|
||||
fi
|
||||
}
|
||||
|
||||
setup_loopdevs 4
|
||||
prepare_loopdevs
|
||||
dev1=${loopdevs[1]}
|
||||
TEST_DEV=$dev1
|
||||
msg="Multiple profiles detected"
|
||||
|
||||
# Data and metadata
|
||||
run_check $SUDO_HELPER "$TOP/mkfs.btrfs" -f -d single -m single "${loopdevs[@]}"
|
||||
run_check_mount_test_dev
|
||||
run_check "$TOP/btrfs" filesystem usage "$TEST_MNT"
|
||||
for i in `seq 10`; do
|
||||
run_check $SUDO_HELPER dd if=/dev/zero of="$TEST_MNT"/file$i bs=100M count=1 status=none
|
||||
done
|
||||
# Create filesystem with single and RAID1 profiles
|
||||
run_check $SUDO_HELPER "$TOP/btrfs" balance start -dconvert=raid1,limit=1 "$TEST_MNT"
|
||||
|
||||
test_run_commands
|
||||
run_check_umount_test_dev
|
||||
|
||||
# The same, with mixed profiles
|
||||
run_check $SUDO_HELPER "$TOP/mkfs.btrfs" -f --mixed -d single -m single "${loopdevs[@]}"
|
||||
run_check_mount_test_dev
|
||||
run_check "$TOP/btrfs" filesystem usage "$TEST_MNT"
|
||||
# Create 1 and a half of 1G chunks
|
||||
for i in `seq 14`; do
|
||||
run_check $SUDO_HELPER dd if=/dev/zero of="$TEST_MNT"/file$i bs=100M count=1 status=none
|
||||
done
|
||||
# Create filesystem with single and RAID1 profiles, the limit=1 trick does not work
|
||||
# so use the usage filter to convert about half of the filesystem
|
||||
run_check $SUDO_HELPER "$TOP/btrfs" balance start -mconvert=raid1,usage=50 -dconvert=raid1,usage=50 "$TEST_MNT"
|
||||
|
||||
test_run_commands
|
||||
run_check_umount_test_dev
|
||||
|
||||
cleanup_loopdevs
|
Loading…
Reference in New Issue
Block a user