linux-unionfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Amir Goldstein <amir73il@gmail.com>
To: Gabriel Krisman Bertazi <gabriel@krisman.be>
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 5/9] ovl: Ensure that all layers have the same encoding
Date: Mon, 25 Aug 2025 17:32:06 +0200	[thread overview]
Message-ID: <CAOQ4uxjexmFyfGuzuVsCmheqM_2drVsLUm3Fifv1we5u39WveA@mail.gmail.com> (raw)
In-Reply-To: <871poz647l.fsf@mailhost.krisman.be>

On Mon, Aug 25, 2025 at 1:17 PM Gabriel Krisman Bertazi
<gabriel@krisman.be> wrote:
>
> André Almeida <andrealmeid@igalia.com> writes:
>
> > When merging layers from different filesystems with casefold enabled,
> > all layers should use the same encoding version and have the same flags
> > to avoid any kind of incompatibility issues.
> >
> > Also, set the encoding and the encoding flags for the ovl super block as
> > the same as used by the first valid layer.
> >
> > Reviewed-by: Amir Goldstein <amir73il@gmail.com>
> > Signed-off-by: André Almeida <andrealmeid@igalia.com>
> > ---
> >  fs/overlayfs/super.c | 25 +++++++++++++++++++++++++
> >  1 file changed, 25 insertions(+)
> >
> > diff --git a/fs/overlayfs/super.c b/fs/overlayfs/super.c
> > index df85a76597e910d00323018f1d2cd720c5db921d..b1dbd3c79961094d00c7f99cc622e515d544d22f 100644
> > --- a/fs/overlayfs/super.c
> > +++ b/fs/overlayfs/super.c
> > @@ -991,6 +991,18 @@ static int ovl_get_data_fsid(struct ovl_fs *ofs)
> >       return ofs->numfs;
> >  }
> >
> > +/*
> > + * Set the ovl sb encoding as the same one used by the first layer
> > + */
> > +static void ovl_set_encoding(struct super_block *sb, struct super_block *fs_sb)
> > +{
> > +#if IS_ENABLED(CONFIG_UNICODE)
> > +     if (sb_has_encoding(fs_sb)) {
> > +             sb->s_encoding = fs_sb->s_encoding;
> > +             sb->s_encoding_flags = fs_sb->s_encoding_flags;
> > +     }
> > +#endif
> > +}
> >
> >  static int ovl_get_layers(struct super_block *sb, struct ovl_fs *ofs,
> >                         struct ovl_fs_context *ctx, struct ovl_layer *layers)
> > @@ -1024,6 +1036,9 @@ static int ovl_get_layers(struct super_block *sb, struct ovl_fs *ofs,
> >       if (ovl_upper_mnt(ofs)) {
> >               ofs->fs[0].sb = ovl_upper_mnt(ofs)->mnt_sb;
> >               ofs->fs[0].is_lower = false;
> > +
> > +             if (ofs->casefold)
> > +                     ovl_set_encoding(sb, ofs->fs[0].sb);
> >       }
> >
> >       nr_merged_lower = ctx->nr - ctx->nr_data;
> > @@ -1083,6 +1098,16 @@ static int ovl_get_layers(struct super_block *sb, struct ovl_fs *ofs,
> >               l->name = NULL;
> >               ofs->numlayer++;
> >               ofs->fs[fsid].is_lower = true;
> > +
> > +             if (ofs->casefold) {
> > +                     if (!ovl_upper_mnt(ofs) && !sb_has_encoding(sb))
> > +                             ovl_set_encoding(sb, ofs->fs[fsid].sb);
> > +
> > +                     if (!sb_has_encoding(sb) || !sb_same_encoding(sb, mnt->mnt_sb)) {
>
> Minor nit, but isn't the sb_has_encoding()  check redundant here?  sb_same_encoding
> will check the sb->encoding matches the mnt_sb already.

Maybe we did something wrong but the intention was:
If all layers root are casefold disabled (or not supported) then
a mix of layers with fs of different encoding (and fs with no encoding support)
is allowed because we take care that all directories are always
casefold disabled.

Thanks,
Amir.

  reply	other threads:[~2025-08-25 15:32 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 [this message]
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=CAOQ4uxjexmFyfGuzuVsCmheqM_2drVsLUm3Fifv1we5u39WveA@mail.gmail.com \
    --to=amir73il@gmail.com \
    --cc=andrealmeid@igalia.com \
    --cc=brauner@kernel.org \
    --cc=gabriel@krisman.be \
    --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).