Re: [PATCH v6 9/9] ovl: Support mounting case-insensitive enabled layers

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





Em 26/08/2025 04:31, Amir Goldstein escreveu:
On Mon, Aug 25, 2025 at 3:31 PM André Almeida <andrealmeid@xxxxxxxxxx> wrote:

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.

Is this how it looks with your v6 or after fixing the bug:
https://lore.kernel.org/linux-unionfs/68a8c4d7.050a0220.37038e.005c.GAE@xxxxxxxxxx/

Because for me this skipping started after fixing this bug
Maybe we fixed the bug incorrectly, but I did not see what the problem
was from a quick look.

Can you test with my branch:
https://github.com/amir73il/linux/commits/ovl_casefold/


Right, our branches have a different base, mine is older and based on the tag vfs/vfs-6.18.mount.

I have now tested with your branch, and indeed the test fails with "overlayfs does not support casefold enabled". I did some debugging and the missing commit from my branch that is making this difference here is e8bd877fb76bb9f3 ("ovl: fix possible double unlink"). After reverting it on top of your branch, the test works. I'm not sure yet why this prevents the mount, but this is the call trace when the error happens:

TID/PID 860/860 (mount/mount):

                    entry_SYSCALL_64_after_hwframe+0x77
                    do_syscall_64+0xa2
                    x64_sys_call+0x1bc3
                    __x64_sys_fsconfig+0x46c
                    vfs_cmd_create+0x60
                    vfs_get_tree+0x2e
                    ovl_get_tree+0x19
                    get_tree_nodev+0x70
                    ovl_fill_super+0x53b
!    0us [-EINVAL]  ovl_parent_lock

And for the ovl_parent_lock() arguments, *parent="work", *child="#7". So right now I'm trying to figure out why the dentry for #7 is not hashed.


[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!

I assume you are testing with ext4 layers?

If we are both testing the same code and same test and getting different
results I would like to get to the bottom of this, so please share as much
information on your test setup as you can.

Thanks,
Amir.





[Index of Archives]     [Linux Filesystems Devel]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux