Hi Amir,
Em 22/08/2025 16:17, Amir Goldstein escreveu:
[...]
/*
- * Allow filesystems that are case-folding capable but deny composing
- * ovl stack from case-folded directories.
+ * Exceptionally for layers with casefold, we accept that they have
+ * their own hash and compare operations
*/
- if (sb_has_encoding(dentry->d_sb))
- return IS_CASEFOLDED(d_inode(dentry));
+ if (ofs->casefold)
+ return false;
I think this is better as:
if (sb_has_encoding(dentry->d_sb))
return false;
And this still fails the test "Casefold enabled" for me.
Maybe you are confused because this does not look like
a test failure. It looks like this:
generic/999 5s ... [19:10:21][ 150.667994] overlayfs: failed lookup
in lower (ovl-lower/casefold, name='subdir', err=-116): parent wrong
casefold
[ 150.669741] overlayfs: failed lookup in lower (ovl-lower/casefold,
name='subdir', err=-116): parent wrong casefold
[ 150.760644] overlayfs: failed lookup in lower (/ovl-lower,
name='casefold', err=-66): child wrong casefold
[19:10:24] [not run]
generic/999 -- overlayfs does not support casefold enabled layers
Ran: generic/999
Not run: generic/999
Passed all 1 tests
This is how the test output looks before my changes[1] to the test:
$ ./run.sh
FSTYP -- ext4
PLATFORM -- Linux/x86_64 archlinux 6.17.0-rc1+ #1174 SMP
PREEMPT_DYNAMIC Mon Aug 25 10:18:09 -03 2025
MKFS_OPTIONS -- -F /dev/vdc
MOUNT_OPTIONS -- -o acl,user_xattr /dev/vdc /tmp/dir2
generic/999 1s ... [not run] overlayfs does not support casefold enabled
layers
Ran: generic/999
Not run: generic/999
Passed all 1 tests
And this is how it looks after my changes[1] to the test:
$ ./run.sh
FSTYP -- ext4
PLATFORM -- Linux/x86_64 archlinux 6.17.0-rc1+ #1174 SMP
PREEMPT_DYNAMIC Mon Aug 25 10:18:09 -03 2025
MKFS_OPTIONS -- -F /dev/vdc
MOUNT_OPTIONS -- -o acl,user_xattr /dev/vdc /tmp/dir2
generic/999 1s
Ran: generic/999
Passed all 1 tests
So, as far as I can tell, the casefold enabled is not being skipped
after the fix to the test.
[1]
https://lore.kernel.org/lkml/5da6b0f4-2730-4783-9c57-c46c2d13e848@xxxxxxxxxx/
I'm not sure I will keep the test this way. This is not very standard nor
good practice, to run half of the test and then skip it.
I would probably split it into two tests.
The first one as it is now will run to completion on kenrels >= v6.17
and the Casefold enable test will run on kernels >= v6.18.
In any case, please make sure that the test is not skipped when testing
Casefold enabled layers
And then continue with the missing test cases.
When you have a test that passes please send the test itself or
a fstest branch for me to test.
Ok!
Thanks,
Amir.