btrfs-progs/tests/cli-tests/024-scrub-limit/test.sh

53 lines
1.3 KiB
Bash
Executable File

#!/bin/bash
# Read and set scrub limits on a filesystem
source "$TEST_TOP/common" || exit
setup_root_helper
setup_loopdevs 4
prepare_loopdevs
TEST_DEV=${loopdevs[1]}
support=true
fsid="13411a59-ccea-4296-a6f8-1446ccf8c9be"
sysfs="/sys/fs/btrfs/13411a59-ccea-4296-a6f8-1446ccf8c9be"
run_check $SUDO_HELPER "$TOP/mkfs.btrfs" -f --uuid "$fsid" -d raid1 -m raid1 "${loopdevs[@]}"
run_check_mount_test_dev
# Set the limits directly
for i in "$sysfs"/devinfo/*/scrub_speed_max; do
if ! [ -f "$i" ]; then
_log "sysfs file scrub_speed_max not available, skip setting limits"
support=false
break;
fi
run_check cat "$i"
echo "10m" | run_check $SUDO_HELPER tee "$i" >/dev/null
done
# This works even if scrub_speed_max files don't exist, this is equivalent to unlimited
run_check "$TOP/btrfs" scrub limit "$TEST_MNT"
# The rest of the test would fail
if ! $support; then
run_check_umount_test_dev
cleanup_loopdevs
fi
# Set the limits by command
here=`pwd`
cd "$sysfs/devinfo"
for i in *; do
run_check $SUDO_HELPER "$TOP/btrfs" scrub limit -d "$i" -l 20m "$TEST_MNT"
done
cd "$here"
run_check "$TOP/btrfs" scrub limit "$TEST_MNT"
# Set limits for all devices
run_check $SUDO_HELPER "$TOP/btrfs" scrub limit -a -l 30m "$TEST_MNT"
run_check "$TOP/btrfs" scrub limit "$TEST_MNT"
run_check_umount_test_dev
cleanup_loopdevs