summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@linux.dev>2024-09-06 18:28:06 -0400
committerKent Overstreet <kent.overstreet@linux.dev>2024-09-06 18:28:06 -0400
commite3db9b12f236db16c307656e4250814cb7a54f5d (patch)
treeb9079a0b6f7f31d15d857e17ec2b1cb38ce7bc6d
parent342f6a902d9708c0ff05d21b9a505df7635e5883 (diff)
tests/bcaches/ec: test_device_failed
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
-rwxr-xr-xtests/fs/bcachefs/ec.ktest33
1 files changed, 33 insertions, 0 deletions
diff --git a/tests/fs/bcachefs/ec.ktest b/tests/fs/bcachefs/ec.ktest
index 6e60a75..dadf16a 100755
--- a/tests/fs/bcachefs/ec.ktest
+++ b/tests/fs/bcachefs/ec.ktest
@@ -287,4 +287,37 @@ test_device_evacuate_online()
do_remove_test 0 1
}
+test_device_failed()
+{
+ set_watchdog 60
+
+ run_quiet "" bcachefs format -f --errors=panic \
+ --erasure_code \
+ --replicas=2 \
+ "${ktest_scratch_dev[@]}"
+
+ mount -t bcachefs "$(join_by : "${ktest_scratch_dev[@]}")" /mnt
+
+ local fioout="$ktest_out/fio-out"
+ run_fio_randrw >"$fioout" 2>&1 &
+ local fiopid=$!
+
+ sleep 1
+
+ bcachefs device set-state -f failed ${ktest_scratch_dev[0]}
+
+ if ! wait $fiopid; then
+ cat "$fioout"
+ return 1
+ fi
+
+ umount /mnt
+
+ mount -t bcachefs "$(join_by : "${ktest_scratch_dev[@]}")" /mnt
+ umount /mnt
+
+ bcachefs fsck -ny "${ktest_scratch_dev[@]}"
+ check_counters ${ktest_scratch_dev[0]}
+}
+
main "$@"