diff options
author | Kent Overstreet <kent.overstreet@linux.dev> | 2025-06-25 13:40:07 -0400 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2025-06-25 13:40:09 -0400 |
commit | 7e905482ccc906c4ceb4b00604fceeae74b374ce (patch) | |
tree | 939b0bca86cff6411e61db5d3cb1da8409490641 | |
parent | a632994d58b0745bc2b3e9c4f7aff4b86f7f98d3 (diff) |
tests/fs/bcachefs: kill_btree_root_autofix
Test killing a btree root that we should be able to automatically repair
node (extents, when tree depth > 0).
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
-rwxr-xr-x | tests/fs/bcachefs/single_device.ktest | 41 |
1 files changed, 39 insertions, 2 deletions
diff --git a/tests/fs/bcachefs/single_device.ktest b/tests/fs/bcachefs/single_device.ktest index 772f3b1..5d17942 100755 --- a/tests/fs/bcachefs/single_device.ktest +++ b/tests/fs/bcachefs/single_device.ktest @@ -1777,7 +1777,7 @@ test_kill_btree_node() bcachefs_test_end_checks ${ktest_scratch_dev[0]} } -test_kill_btree_root() +test_kill_btree_root_autofix() { set_watchdog 240 run_quiet "" bcachefs format -f --btree_node_size=64k ${ktest_scratch_dev[0]} @@ -1791,11 +1791,48 @@ test_kill_btree_root() umount /mnt bcachefs list -m nodes ${ktest_scratch_dev[0]} > /root/nodes_before - bcachefs kill_btree_node -nsnapshots -nsnapshot_trees -nsubvolumes ${ktest_scratch_dev[0]} + bcachefs kill_btree_node -nextents:1 ${ktest_scratch_dev[0]} echo "Running fsck" # How to assert exit status equals something specific with -o errexit? + mount -t bcachefs ${ktest_scratch_dev[0]} /mnt + + cat /sys/kernel/debug/bcachefs/*/btrees/extents/keys > /root/extents_after + + umount /mnt + bcachefs list -m nodes ${ktest_scratch_dev[0]} > /root/nodes_after + #bcachefs fsck -y ${ktest_scratch_dev[0]} || true + + echo + echo "Running fsck again; should be clean" + + bcachefs fsck -yk ${ktest_scratch_dev[0]} || true mount -t bcachefs -o fsck,fix_errors,verbose ${ktest_scratch_dev[0]} /mnt + diff -rq /usr/bin /mnt/bin + umount /mnt + + bcachefs_test_end_checks ${ktest_scratch_dev[0]} +} + +test_kill_btree_root() +{ + set_watchdog 240 + run_quiet "" bcachefs format -f --btree_node_size=64k ${ktest_scratch_dev[0]} + + mount -t bcachefs ${ktest_scratch_dev[0]} /mnt + cp -rL /usr/bin /mnt + sync + + cat /sys/kernel/debug/bcachefs/*/btrees/extents/keys > /root/extents_before + + umount /mnt + bcachefs list -m nodes ${ktest_scratch_dev[0]} > /root/nodes_before + + bcachefs kill_btree_node -nextents:1 -nsnapshots -nsnapshot_trees -nsubvolumes ${ktest_scratch_dev[0]} + + echo "Running fsck" + # How to assert exit status equals something specific with -o errexit? + mount -t bcachefs -o fsck,fix_errors ${ktest_scratch_dev[0]} /mnt cat /sys/kernel/debug/bcachefs/*/btrees/extents/keys > /root/extents_after |