btrfs-progs/tests/cli-tests/017-fi-show-missing/test.sh

37 lines
886 B
Bash
Executable File

#!/bin/bash
#
# Test that if a device is missing for a mounted filesystem, btrfs fi show will
# show which device exactly is missing.
source "$TEST_TOP/common" || exit
check_prereq mkfs.btrfs
check_prereq btrfs
setup_root_helper
setup_loopdevs 2
prepare_loopdevs
dev1=${loopdevs[1]}
dev2=${loopdevs[2]}
run_check $SUDO_HELPER "$TOP/mkfs.btrfs" -f -d raid1 "${loopdevs[@]}"
# Move the device, changing its path, simulating the device being missing
run_check $SUDO_HELPER mv "$dev2" /dev/loop-non-existent
cond_wait_for_loopdevs
run_check $SUDO_HELPER mount -o degraded $dev1 $TEST_MNT
if ! run_check_stdout $SUDO_HELPER "$TOP/btrfs" filesystem show "$TEST_MNT" | \
grep -q -e "devid[[:space:]]\+2.*MISSING"; then
_fail "didn't find exact missing device"
fi
run_check $SUDO_HELPER mv /dev/loop-non-existent "$dev2"
run_check $SUDO_HELPER umount "$TEST_MNT"
cleanup_loopdevs