From: Gabriel Krisman Bertazi <krisman@suse.de>
To: Amir Goldstein <amir73il@gmail.com>
Cc: "André Almeida" <andrealmeid@igalia.com>,
"Miklos Szeredi" <miklos@szeredi.hu>,
"Theodore Tso" <tytso@mit.edu>,
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 4/9] ovl: Create ovl_casefold() to support casefolded strncmp()
Date: Tue, 26 Aug 2025 11:02:09 -0400 [thread overview]
Message-ID: <87ldn62kjy.fsf@mailhost.krisman.be> (raw)
In-Reply-To: <CAOQ4uxhw26Tf6LMP1fkH=bTD_LXEkUJ1soWwW+BrgoePsuzVww@mail.gmail.com> (Amir Goldstein's message of "Tue, 26 Aug 2025 09:19:32 +0200")
Amir Goldstein <amir73il@gmail.com> writes:
> On Tue, Aug 26, 2025 at 3:34 AM Gabriel Krisman Bertazi <krisman@suse.de> wrote:
>
>>
>> I was thinking again about this and I suspect I misunderstood your
>> question. let me try to answer it again:
>>
>> Ext4, f2fs and tmpfs all allow invalid utf8-encoded strings in a
>> casefolded directory when running on non-strict-mode. They are treated
>> as non-encoded byte-sequences, as if they were seen on a case-Sensitive
>> directory. They can't collide with other filenames because they
>> basically "fold" to themselves.
>>
>> Now I suspect there is another problem with this series: I don't see how
>> it implements the semantics of strict mode. What happens if upper and
>> lower are in strict mode (which is valid, same encoding_flags) but there
>> is an invalid name in the lower? overlayfs should reject the dentry,
>> because any attempt to create it to the upper will fail.
>
> Ok, so IIUC, one issue is that return value from ovl_casefold() should be
> conditional to the sb encoding_flags, which was inherited from the
> layers.
yes, unless you reject mounting strict_mode filesystems, which the best
course of action, in my opinion.
>
> Again, *IF* I understand correctly, then strict mode ext4 will not allow
> creating an invalid-encoded name, but will strict mode ext4 allow
> it as a valid lookup result?
strict mode ext4 will not allow creating an invalid-encoded name. And
even lookups will fail. Because the kernel can't casefold it, it will
assume the dirent is broken and ignore it during lookup.
(I just noticed the dirent is ignored and the error is not propagated in
ext4_match. That needs improvement.).
>>
>> André, did you consider this scenario?
>
> In general, as I have told Andre from v1, please stick to the most common
> configs that people actually need.
>
> We do NOT need to support every possible combination of layers configurations.
>
> This is why we went with supporting all-or-nothing configs for casefolder dirs.
> Because it is simpler for overlayfs semantics and good enough for what
> users need.
>
> So my question is to you both: do users actually use strict mode for
> wine and such?
> Because if they don't I would rather support the default mode only
> (enforced on mount)
> and add support for strict mode later per actual users demand.
I doubt we care. strict mode is a restricted version of casefolding
support with minor advantages. Basically, with it, you can trust that
if you update the unicode version, there won't be any behavior change in
casefolding due to newly assigned code-points. For Wine, that is
irrelevant.
You can very well reject strict mode and be done with it.
>
>> You can test by creating a file
>> with an invalid-encoded name in a casefolded directory of a
>> non-strict-mode filesystem and then flip the strict-mode flag in the
>> superblock. I can give it a try tomorrow too.
>
> Can the sb flags be flipped in runtime? while mounted?
> I suppose you are talking about an offline change that requires
> re-mount of overlayfs and re-validate the same encoding flags on all layers?
No, it is set at mkfs-time. The scenario I'm describing is a
filesystem corruption, where a filename has invalid characters but the
disk is in strict mode. What I proposed is a way to test this by
crafting an image.
--
Gabriel Krisman Bertazi
next prev parent reply other threads:[~2025-08-26 15:02 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 [this message]
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
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=87ldn62kjy.fsf@mailhost.krisman.be \
--to=krisman@suse.de \
--cc=amir73il@gmail.com \
--cc=andrealmeid@igalia.com \
--cc=brauner@kernel.org \
--cc=jack@suse.cz \
--cc=kernel-dev@igalia.com \
--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).