From: "André Almeida" <andrealmeid@igalia.com>
To: Amir Goldstein <amir73il@gmail.com>
Cc: Miklos Szeredi <miklos@szeredi.hu>, Theodore Tso <tytso@mit.edu>,
Gabriel Krisman Bertazi <krisman@kernel.org>,
linux-unionfs@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-fsdevel@vger.kernel.org,
Alexander Viro <viro@zeniv.linux.org.uk>,
Christian Brauner <brauner@kernel.org>, Jan Kara <jack@suse.cz>,
kernel-dev@igalia.com
Subject: Re: [PATCH v6 9/9] ovl: Support mounting case-insensitive enabled layers
Date: Tue, 26 Aug 2025 16:01:13 -0300 [thread overview]
Message-ID: <18704e8c-c734-43f3-bc7c-b8be345e1bf5@igalia.com> (raw)
In-Reply-To: <CAOQ4uxgMdeiPt1v4s07fZkGbs5+3sJw5VgcFu33_zH1dZtrSsg@mail.gmail.com>
Em 26/08/2025 04:31, Amir Goldstein escreveu:
> On Mon, Aug 25, 2025 at 3:31 PM André Almeida <andrealmeid@igalia.com> 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@google.com/
>
> 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@igalia.com/
>>
>>
>>> 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.
next prev parent reply other threads:[~2025-08-26 19:01 UTC|newest]
Thread overview: 53+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-08-22 14:17 [PATCH v6 0/9] ovl: Enable support for casefold layers André Almeida
2025-08-22 14:17 ` [PATCH v6 1/9] fs: Create sb_encoding() helper André Almeida
2025-08-25 9:19 ` Gabriel Krisman Bertazi
2025-08-25 12:38 ` Gabriel Krisman Bertazi
2025-08-25 15:28 ` Amir Goldstein
2025-08-22 14:17 ` [PATCH v6 2/9] fs: Create sb_same_encoding() helper André Almeida
2025-08-23 10:02 ` Amir Goldstein
2025-08-25 9:24 ` Gabriel Krisman Bertazi
2025-08-22 14:17 ` [PATCH v6 3/9] ovl: Prepare for mounting case-insensitive enabled layers André Almeida
2025-08-25 10:42 ` Gabriel Krisman Bertazi
2025-08-22 14:17 ` [PATCH v6 4/9] ovl: Create ovl_casefold() to support casefolded strncmp() André Almeida
2025-08-22 16:53 ` Amir Goldstein
2025-08-25 11:09 ` Gabriel Krisman Bertazi
2025-08-25 15:27 ` Amir Goldstein
2025-08-25 15:45 ` Amir Goldstein
2025-08-25 17:11 ` Gabriel Krisman Bertazi
2025-08-26 1:34 ` Gabriel Krisman Bertazi
2025-08-26 7:19 ` Amir Goldstein
2025-08-26 15:02 ` Gabriel Krisman Bertazi
2025-08-26 19:58 ` André Almeida
2025-08-27 9:28 ` Amir Goldstein
2025-08-26 20:01 ` André Almeida
2025-08-27 20:45 ` André Almeida
2025-08-28 11:09 ` Amir Goldstein
2025-08-22 14:17 ` [PATCH v6 5/9] ovl: Ensure that all layers have the same encoding André Almeida
2025-08-25 11:17 ` Gabriel Krisman Bertazi
2025-08-25 15:32 ` Amir Goldstein
2025-08-26 20:12 ` André Almeida
2025-08-27 9:17 ` Amir Goldstein
2025-08-22 14:17 ` [PATCH v6 6/9] ovl: Set case-insensitive dentry operations for ovl sb André Almeida
2025-08-25 11:24 ` Gabriel Krisman Bertazi
2025-08-25 15:34 ` Amir Goldstein
2025-08-26 20:13 ` André Almeida
2025-08-22 14:17 ` [PATCH v6 7/9] ovl: Add S_CASEFOLD as part of the inode flag to be copied André Almeida
2025-08-22 14:17 ` [PATCH v6 8/9] ovl: Check for casefold consistency when creating new dentries André Almeida
2025-08-22 14:17 ` [PATCH v6 9/9] ovl: Support mounting case-insensitive enabled layers André Almeida
2025-08-22 16:34 ` Amir Goldstein
2025-08-22 16:47 ` André Almeida
2025-08-22 19:17 ` Amir Goldstein
2025-08-25 13:31 ` André Almeida
2025-08-26 7:31 ` Amir Goldstein
2025-08-26 19:01 ` André Almeida [this message]
2025-08-27 18:06 ` Amir Goldstein
2025-08-27 20:37 ` André Almeida
2025-08-27 23:58 ` NeilBrown
2025-08-28 3:15 ` Gabriel Krisman Bertazi
2025-08-28 7:25 ` Amir Goldstein
2025-08-28 16:44 ` Amir Goldstein
2025-08-29 1:27 ` NeilBrown
2025-08-29 1:25 ` NeilBrown
2025-08-29 9:31 ` Amir Goldstein
2025-09-01 22:02 ` NeilBrown
2025-08-22 19:28 ` [syzbot ci] Re: ovl: Enable support for casefold layers syzbot ci
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=18704e8c-c734-43f3-bc7c-b8be345e1bf5@igalia.com \
--to=andrealmeid@igalia.com \
--cc=amir73il@gmail.com \
--cc=brauner@kernel.org \
--cc=jack@suse.cz \
--cc=kernel-dev@igalia.com \
--cc=krisman@kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-unionfs@vger.kernel.org \
--cc=miklos@szeredi.hu \
--cc=tytso@mit.edu \
--cc=viro@zeniv.linux.org.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).