diff options
author | Kent Overstreet <kent.overstreet@linux.dev> | 2024-09-06 18:28:06 -0400 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2024-09-06 18:28:06 -0400 |
commit | e3db9b12f236db16c307656e4250814cb7a54f5d (patch) | |
tree | b9079a0b6f7f31d15d857e17ec2b1cb38ce7bc6d | |
parent | 342f6a902d9708c0ff05d21b9a505df7635e5883 (diff) |
tests/bcaches/ec: test_device_failed
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
-rwxr-xr-x | tests/fs/bcachefs/ec.ktest | 33 |
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 "$@" |