summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStijn Tintel <stijn@linux-ipv6.be>2025-03-13 00:04:01 +0200
committerKent Overstreet <kent.overstreet@linux.dev>2025-04-30 16:24:53 -0400
commit7af1ac41bf4975e639a992d5e32cbe73836c92b7 (patch)
treec5cc977fa8ecc0fcefcfd50d41dbbc4050bae626
parent666586085f82c2cdaad0f70757b596b53871c61b (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---------debootstrap0
-rwxr-xr-xtests/fs/bcachefs/tier.ktest73
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 $@