diff options
author | Stijn Tintel <stijn@linux-ipv6.be> | 2025-03-13 00:04:01 +0200 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2025-04-30 16:24:53 -0400 |
commit | 7af1ac41bf4975e639a992d5e32cbe73836c92b7 (patch) | |
tree | c5cc977fa8ecc0fcefcfd50d41dbbc4050bae626 | |
parent | 666586085f82c2cdaad0f70757b596b53871c61b (diff) |
tests/bcachefs: new test for koverstreet/bcachefs#834
Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
m--------- | debootstrap | 0 | ||||
-rwxr-xr-x | tests/fs/bcachefs/tier.ktest | 73 |
2 files changed, 73 insertions, 0 deletions
diff --git a/debootstrap b/debootstrap -Subproject c9bb01c143de62f333b07c9172a2f7a7c092e91 +Subproject ad22fa03ab2fe7e9dca7a361e664c1557b234c7 diff --git a/tests/fs/bcachefs/tier.ktest b/tests/fs/bcachefs/tier.ktest index 4a7959f..faca29d 100755 --- a/tests/fs/bcachefs/tier.ktest +++ b/tests/fs/bcachefs/tier.ktest @@ -340,4 +340,77 @@ test_concurrent_all_device_removal() bcachefs_test_end_checks ${ktest_scratch_dev[0]} } +## reproducer for https://github.com/koverstreet/bcachefs/issues/834 +# v1: works as expected, background target=device 0 +test_metadata_on_wrong_device_after_disk_add_v1() +{ + run_quiet "" bcachefs format -f \ + --background_target=hdd \ + --foreground_target=hdd \ + --promote_target=hdd \ + --metadata_target=ssd \ + --label=hdd \ + ${ktest_scratch_dev[2]} \ + --label=ssd \ + ${ktest_scratch_dev[0]} + + mount -t bcachefs ${ktest_scratch_dev[2]}:${ktest_scratch_dev[0]} /mnt + + for i in $(seq 0 100000); do + echo $i > /mnt/$i + done + + bcachefs fs usage -h /mnt + + run_quiet "" bcachefs device add -f --label=hdd /mnt ${ktest_scratch_dev[3]} + + for i in $(seq 0 100000); do + echo $i > /mnt/a$i + done + + btree_devs=$(bcachefs fs usage -h /mnt/ | grep -c ^btree:) + + test $btree_devs -eq 1 || return 1 + + umount /mnt +} + +# v2: metadata ends up on wrong device, foreground target=device 0 +test_metadata_on_wrong_device_after_disk_add_v2() +{ + run_quiet "" bcachefs format -f \ + --background_target=hdd \ + --foreground_target=hdd \ + --promote_target=hdd \ + --metadata_target=ssd \ + --label=ssd \ + ${ktest_scratch_dev[0]} \ + --label=hdd \ + ${ktest_scratch_dev[2]} + + mount -t bcachefs ${ktest_scratch_dev[0]}:${ktest_scratch_dev[2]} /mnt + + for i in $(seq 0 100000); do + echo $i > /mnt/$i + done + + sync + bcachefs fs usage -h /mnt + + run_quiet "" bcachefs device add -f --label=hdd /mnt ${ktest_scratch_dev[3]} + + for i in $(seq 0 100000); do + echo $i > /mnt/a$i + done + + sync + bcachefs fs usage -h /mnt + + btree_devs=$(bcachefs fs usage -h /mnt/ | grep -c ^btree:) + + test $btree_devs -eq 1 || return 1 + + umount /mnt +} + main $@ |