summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@linux.dev>2025-05-25 14:19:29 -0400
committerKent Overstreet <kent.overstreet@linux.dev>2025-05-25 14:26:59 -0400
commit47d1f2a04d79bc4cbc843f81e71eb7d821fb8384 (patch)
treec395d82d8b3341b34a98dab80f8bfd096fc87aa1
parentb8e11c7c0427c389288d5f152f17c990ef8cfdaf (diff)
bcachefs: test_casefold_overlayfs
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
-rwxr-xr-xtests/fs/bcachefs/single_device.ktest35
1 files changed, 35 insertions, 0 deletions
diff --git a/tests/fs/bcachefs/single_device.ktest b/tests/fs/bcachefs/single_device.ktest
index 975d621..5a57e59 100755
--- a/tests/fs/bcachefs/single_device.ktest
+++ b/tests/fs/bcachefs/single_device.ktest
@@ -1930,4 +1930,39 @@ test_single_device()
umount /mnt
}
+require-kernel-config OVERLAY_FS
+
+test_casefold_overlayfs()
+{
+ run_quiet "" bcachefs format -f ${ktest_scratch_dev[0]}
+ mount ${ktest_scratch_dev[0]} /mnt
+
+ mkdir -p /mnt/dir/casefold
+ bcachefs set-file-option --casefold /mnt/dir/casefold
+
+ echo foo > /mnt/dir/casefold/foo
+ cat /mnt/dir/casefold/FOO
+
+ mkdir /mnt/lower
+ mkdir /mnt/upper
+ mkdir /mnt/work
+ mkdir /mnt/merged
+
+ echo "Testing an overlayfs on a casefold fs with non-casefolded dirs"
+ mount -t overlay -o lowerdir=/mnt/lower,upperdir=/mnt/upper,workdir=/mnt/work overlay /mnt/merged
+ umount /mnt/merged
+
+ echo "Test using casefolded dir - should fail"
+ ! mount -t overlay -o lowerdir=/mnt/lower,upperdir=/mnt/upper,workdir=/mnt/work overlay /mnt/merged
+ ! mount -t overlay -o lowerdir=/mnt/casefold,upperdir=/mnt/casefold,workdir=/mnt/work overlay /mnt/merged
+
+ echo "Test using a dir with a casefold subdir - should mount"
+ mount -t overlay -o lowerdir=/mnt/dir,upperdir=/mnt/upper,workdir=/mnt/work overlay /mnt/merged
+ ! ls /mnt/merged/dir/casefold
+ umount /mnt/merged
+
+ umount /mnt
+ bcachefs fsck -ny ${ktest_scratch_dev[0]}
+}
+
main "$@"