All of lore.kernel.org
 help / color / mirror / Atom feed
From: Gabriel Krisman Bertazi <gabriel@krisman.be>
To: "André Almeida" <andrealmeid@igalia.com>
Cc: Miklos Szeredi <miklos@szeredi.hu>,
	 Amir Goldstein <amir73il@gmail.com>,
	 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 3/9] ovl: Prepare for mounting case-insensitive enabled layers
Date: Mon, 25 Aug 2025 06:42:51 -0400	[thread overview]
Message-ID: <87a53n65sk.fsf@mailhost.krisman.be> (raw)
In-Reply-To: <20250822-tonyk-overlayfs-v6-3-8b6e9e604fa2@igalia.com> ("André Almeida"'s message of "Fri, 22 Aug 2025 11:17:06 -0300")

André Almeida <andrealmeid@igalia.com> writes:

> Prepare for mounting layers with case-insensitive dentries in order to
> supporting such layers in overlayfs, while enforcing uniform casefold
> layers.
>
> Reviewed-by: Amir Goldstein <amir73il@gmail.com>
> Signed-off-by: André Almeida <andrealmeid@igalia.com>


Reviewed-by: Gabriel Krisman Bertazi <gabriel@krisman.be>

> ---
>  fs/overlayfs/ovl_entry.h |  1 +
>  fs/overlayfs/params.c    | 15 ++++++++++++---
>  fs/overlayfs/params.h    |  1 +
>  3 files changed, 14 insertions(+), 3 deletions(-)
>
> diff --git a/fs/overlayfs/ovl_entry.h b/fs/overlayfs/ovl_entry.h
> index 4c1bae935ced274f93a0d23fe10d34455e226ec4..1d4828dbcf7ac4ba9657221e601bbf79d970d225 100644
> --- a/fs/overlayfs/ovl_entry.h
> +++ b/fs/overlayfs/ovl_entry.h
> @@ -91,6 +91,7 @@ struct ovl_fs {
>  	struct mutex whiteout_lock;
>  	/* r/o snapshot of upperdir sb's only taken on volatile mounts */
>  	errseq_t errseq;
> +	bool casefold;
>  };
>  
>  /* Number of lower layers, not including data-only layers */
> diff --git a/fs/overlayfs/params.c b/fs/overlayfs/params.c
> index f4e7fff909ac49e2f8c58a76273426c1158a7472..63b7346c5ee1c127a9c33b12c3704aa035ff88cf 100644
> --- a/fs/overlayfs/params.c
> +++ b/fs/overlayfs/params.c
> @@ -276,17 +276,26 @@ static int ovl_mount_dir(const char *name, struct path *path)
>  static int ovl_mount_dir_check(struct fs_context *fc, const struct path *path,
>  			       enum ovl_opt layer, const char *name, bool upper)
>  {
> +	bool is_casefolded = ovl_dentry_casefolded(path->dentry);
>  	struct ovl_fs_context *ctx = fc->fs_private;
> +	struct ovl_fs *ofs = fc->s_fs_info;
>  
>  	if (!d_is_dir(path->dentry))
>  		return invalfc(fc, "%s is not a directory", name);
>  
>  	/*
>  	 * Allow filesystems that are case-folding capable but deny composing
> -	 * ovl stack from case-folded directories.
> +	 * ovl stack from inconsistent case-folded directories.
>  	 */
> -	if (ovl_dentry_casefolded(path->dentry))
> -		return invalfc(fc, "case-insensitive directory on %s not supported", name);
> +	if (!ctx->casefold_set) {
> +		ofs->casefold = is_casefolded;
> +		ctx->casefold_set = true;
> +	}
> +
> +	if (ofs->casefold != is_casefolded) {
> +		return invalfc(fc, "case-%ssensitive directory on %s is inconsistent",
> +			       is_casefolded ? "in" : "", name);
> +	}
>  
>  	if (ovl_dentry_weird(path->dentry))
>  		return invalfc(fc, "filesystem on %s not supported", name);
> diff --git a/fs/overlayfs/params.h b/fs/overlayfs/params.h
> index c96d939820211ddc63e265670a2aff60d95eec49..ffd53cdd84827cce827e8852f2de545f966ce60d 100644
> --- a/fs/overlayfs/params.h
> +++ b/fs/overlayfs/params.h
> @@ -33,6 +33,7 @@ struct ovl_fs_context {
>  	struct ovl_opt_set set;
>  	struct ovl_fs_context_layer *lower;
>  	char *lowerdir_all; /* user provided lowerdir string */
> +	bool casefold_set;
>  };
>  
>  int ovl_init_fs_context(struct fs_context *fc);

-- 
Gabriel Krisman Bertazi

  reply	other threads:[~2025-08-25 10:43 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 [this message]
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
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=87a53n65sk.fsf@mailhost.krisman.be \
    --to=gabriel@krisman.be \
    --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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.