From nobody Mon Feb 9 08:45:53 2026 Received: from fanzine2.igalia.com (fanzine.igalia.com [178.60.130.6]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CE70A266B56; Wed, 9 Apr 2025 15:00:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=178.60.130.6 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744210861; cv=none; b=lAzIBqZlsw6iey0E1jBTJHXx6ou4ENljmVPrnthParADIOrNhixsHJ9+NbibUXjJSWYdayPVp3C6m2bDhXO2ZQlZ32kCsX1M7GYL2llZ8sUo85oVl4Qbuh/9BFzmNm5gl0JB+nmRqNpavYw3sCPhGkkBsZZPEndPWX84Y4Fsuv4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744210861; c=relaxed/simple; bh=c0N6Fza0g9HjjjobGuVNSq/z9YsYE454v/mgmkIlmvg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ZKfUSS4WXyztX4d1Uvj371TFpG3KXkIvAlwN8spagMuhjKU4V7/M7P1cBt69WGc+B/+LKQkVnoCz4tdAXFqly/KZNWSn8QHgkKAle0TSqizcqkb5hUM6SfleD96CCZ9B7brCJE17IcPmUAT4+MZ+e7ULuOeiPUY+mey7YN6Brcc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=igalia.com; spf=pass smtp.mailfrom=igalia.com; dkim=pass (2048-bit key) header.d=igalia.com header.i=@igalia.com header.b=kho+6j4Y; arc=none smtp.client-ip=178.60.130.6 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=igalia.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=igalia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=igalia.com header.i=@igalia.com header.b="kho+6j4Y" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=igalia.com; s=20170329; h=Cc:To:In-Reply-To:References:Message-Id: Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date:From:Sender: Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender :Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=0kPV6Tj4EuIgJXikf2OOLqOU4d8vMhpT68L7Cbr79NM=; b=kho+6j4Ye5KDTWD9hmZAleaf0h OyKh98TkbISHF2M4PIm/0M1ZQmDQpaS52b7sA6WDKAxEp4KkELgFnRzch1XHnVJkWfrtfR5YxMOTi tA5AF5r+apGbnph/p+9THcHj00M29u21eYCV7uT7h3pzaLX+EgiGAImVRLYvwkhmm+bEpGGzC/niC 4f5LWxc+xmNPrWVOHUqyTcRMe/tB6iENkDACyqt2BJu/SfRVvFtKZI6AB+jRdt0HP/rAufnK5FMLL mzeLPjgE7sixMdmIEzj6We/7GWAAVjOuZ8SnZ1RT8L+/CEGawQH2L4h0VoqkvVXpNTueFh6F/BWy0 wVswWZ3g==; Received: from [191.204.192.64] (helo=[192.168.15.100]) by fanzine2.igalia.com with esmtpsa (Cipher TLS1.3:ECDHE_X25519__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim) id 1u2Wv4-00EBVR-8P; Wed, 09 Apr 2025 17:00:50 +0200 From: =?utf-8?q?Andr=C3=A9_Almeida?= Date: Wed, 09 Apr 2025 12:00:41 -0300 Subject: [PATCH 1/3] ovl: Make ovl_cache_entry_find support casefold Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250409-tonyk-overlayfs-v1-1-3991616fe9a3@igalia.com> References: <20250409-tonyk-overlayfs-v1-0-3991616fe9a3@igalia.com> In-Reply-To: <20250409-tonyk-overlayfs-v1-0-3991616fe9a3@igalia.com> To: Miklos Szeredi , Amir Goldstein , Theodore Tso , Gabriel Krisman Bertazi Cc: linux-unionfs@vger.kernel.org, linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, Alexander Viro , Christian Brauner , Jan Kara , kernel-dev@igalia.com, =?utf-8?q?Andr=C3=A9_Almeida?= X-Mailer: b4 0.14.2 To add overlayfs support casefold filesystems, make ovl_cache_entry_find() support casefold dentries. For the casefold support, just comparing the strings does not work because we need the dentry enconding, so make this function find the equivalent dentry for a giving directory, if any. Also, if two strings are not equal, strncmp() return value sign can be either positive or negative and this information can be used to optimize the walk in the rb tree. utf8_strncmp(), in the other hand, just return true or false, so replace the rb walk with a normal rb_next() function. Signed-off-by: Andr=C3=A9 Almeida --- fs/overlayfs/ovl_entry.h | 1 + fs/overlayfs/readdir.c | 32 +++++++++++++++++++++----------- 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/fs/overlayfs/ovl_entry.h b/fs/overlayfs/ovl_entry.h index cb449ab310a7a89aafa0ee04ee7ff6c8141dd7d5..2ee52da85ba3e3fd704415a7ee4= e9b7da88bb019 100644 --- a/fs/overlayfs/ovl_entry.h +++ b/fs/overlayfs/ovl_entry.h @@ -90,6 +90,7 @@ struct ovl_fs { bool no_shared_whiteout; /* r/o snapshot of upperdir sb's only taken on volatile mounts */ errseq_t errseq; + bool casefold; }; =20 /* Number of lower layers, not including data-only layers */ diff --git a/fs/overlayfs/readdir.c b/fs/overlayfs/readdir.c index 881ec5592da52dfb27a588496582e7084b2fbd3b..68f4a83713e9beab604fd23319d= 60567ef1feeca 100644 --- a/fs/overlayfs/readdir.c +++ b/fs/overlayfs/readdir.c @@ -92,21 +92,31 @@ static bool ovl_cache_entry_find_link(const char *name,= int len, } =20 static struct ovl_cache_entry *ovl_cache_entry_find(struct rb_root *root, - const char *name, int len) + const char *name, int len, + struct dentry *upper) { + struct ovl_fs *ofs =3D OVL_FS(upper->d_sb); struct rb_node *node =3D root->rb_node; - int cmp; + struct qstr q =3D { .name =3D name, .len =3D len }; =20 while (node) { struct ovl_cache_entry *p =3D ovl_cache_entry_from_node(node); + struct dentry *p_dentry, *real_dentry =3D NULL; + + if (ofs->casefold && upper) { + p_dentry =3D ovl_lookup_upper(ofs, p->name, upper, p->len); + if (!IS_ERR(p_dentry)) { + real_dentry =3D ovl_dentry_real(p_dentry); + if (d_same_name(real_dentry, real_dentry->d_parent, &q)) + return p; + } + } =20 - cmp =3D strncmp(name, p->name, len); - if (cmp > 0) - node =3D p->node.rb_right; - else if (cmp < 0 || len < p->len) - node =3D p->node.rb_left; - else - return p; + if (!real_dentry) + if (!strncmp(name, p->name, len)) + return p; + + node =3D rb_next(&p->node); } =20 return NULL; @@ -204,7 +214,7 @@ static bool ovl_fill_lowest(struct ovl_readdir_data *rd= d, { struct ovl_cache_entry *p; =20 - p =3D ovl_cache_entry_find(rdd->root, name, namelen); + p =3D ovl_cache_entry_find(rdd->root, name, namelen, rdd->dentry); if (p) { list_move_tail(&p->l_node, &rdd->middle); } else { @@ -678,7 +688,7 @@ static bool ovl_fill_real(struct dir_context *ctx, cons= t char *name, } else if (rdt->cache) { struct ovl_cache_entry *p; =20 - p =3D ovl_cache_entry_find(&rdt->cache->root, name, namelen); + p =3D ovl_cache_entry_find(&rdt->cache->root, name, namelen, NULL); if (p) ino =3D p->ino; } else if (rdt->xinobits) { --=20 2.49.0 From nobody Mon Feb 9 08:45:53 2026 Received: from fanzine2.igalia.com (fanzine.igalia.com [178.60.130.6]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A3FE926770E; Wed, 9 Apr 2025 15:01:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=178.60.130.6 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744210863; cv=none; b=c48ZBXEm6zdTbtMesO7U9lbbsv/kArKYvfe1DvDGlvVnC/m4Hxl/kv3T2yv+U1HAptjNH3p1JjIa6r1MBglif9rB/CmYS/0IZoS0QdIUmen7ZwTMlM9uvcADIpN88pX8d/w0onl0DIsqospHe/xILp4gJCWqXCOdsTf3S1mQTKo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744210863; c=relaxed/simple; bh=jVNGTLzeD/GPFS0YZ/FaiOHvvNVvXKoxvsqsmFxbLns=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=tR/CI+FdSr3Zioy/srTSnztNLmFtVRbh321cDnO4OPFhjgptQ/Gj2V1RTsntl/CFQWrM90GZM2cNmKYRYGkL1v7ENE9YzXm0wCwZvwMAdN3LfUG8r58IfD93pxxMU1/mYZ9H+X3rBnA1nV51wpvl1Sbx/logz+/msA6sw0XT2Uo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=igalia.com; spf=pass smtp.mailfrom=igalia.com; dkim=pass (2048-bit key) header.d=igalia.com header.i=@igalia.com header.b=DmCBfR6Q; arc=none smtp.client-ip=178.60.130.6 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=igalia.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=igalia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=igalia.com header.i=@igalia.com header.b="DmCBfR6Q" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=igalia.com; s=20170329; h=Cc:To:In-Reply-To:References:Message-Id: Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date:From:Sender: Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender :Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=1cFw2FZbI8nH+C107hw+pJ1/vEWiDjdnIrrhccQpX9s=; b=DmCBfR6QXnFJa5WkKZ+3YBx3Bd f0rJQ+vdt1UD8GYCoM43X1KCun9EvoVldbJEqHMfblVLynvinpzQQpuYQfQg+pOLrXgw7OJT2i2u4 YetqZvF7lYwbBCizQ1eDowz5UcKjq8tJoYcm3MDr9G91knDTeU7LPTsFa9G1G4hHGmS2u1os5Dg1n LB1H9LzOVjmB/Bb1UEDTGqt4Mgo10lCqkm0edlpIxiQ9fJYawrT0GFcy0baCJ5iETjXomJ2X6vrzU 21izkKdUGzfniZ7518AVeXe7I2Cws0M9xCodjMKO7bL77AW1OSoAC3RKfUXDH+ZJo+H7wYpNHOxZI Ek+VavZA==; Received: from [191.204.192.64] (helo=[192.168.15.100]) by fanzine2.igalia.com with esmtpsa (Cipher TLS1.3:ECDHE_X25519__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim) id 1u2Wv7-00EBVR-HN; Wed, 09 Apr 2025 17:00:53 +0200 From: =?utf-8?q?Andr=C3=A9_Almeida?= Date: Wed, 09 Apr 2025 12:00:42 -0300 Subject: [PATCH 2/3] ovl: Make ovl_dentry_weird() accept casefold dentries Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250409-tonyk-overlayfs-v1-2-3991616fe9a3@igalia.com> References: <20250409-tonyk-overlayfs-v1-0-3991616fe9a3@igalia.com> In-Reply-To: <20250409-tonyk-overlayfs-v1-0-3991616fe9a3@igalia.com> To: Miklos Szeredi , Amir Goldstein , Theodore Tso , Gabriel Krisman Bertazi Cc: linux-unionfs@vger.kernel.org, linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, Alexander Viro , Christian Brauner , Jan Kara , kernel-dev@igalia.com, =?utf-8?q?Andr=C3=A9_Almeida?= X-Mailer: b4 0.14.2 ovl_dentry_weird() is used to avoid problems with filesystems that has their d_hash and d_compare implementations. Create an exception for this function, where only casefold filesystems are eligible to use their own d_hash and d_compare functions, allowing to support casefold filesystems. Signed-off-by: Andr=C3=A9 Almeida --- fs/overlayfs/namei.c | 11 ++++++----- fs/overlayfs/overlayfs.h | 2 +- fs/overlayfs/params.c | 3 ++- fs/overlayfs/util.c | 12 +++++++----- 4 files changed, 16 insertions(+), 12 deletions(-) diff --git a/fs/overlayfs/namei.c b/fs/overlayfs/namei.c index be5c65d6f8484b1fba6b3fee379ba1d034c0df8a..140bc609ffebe00151cbb446720= f5106dbeb2ef2 100644 --- a/fs/overlayfs/namei.c +++ b/fs/overlayfs/namei.c @@ -192,7 +192,7 @@ struct dentry *ovl_decode_real_fh(struct ovl_fs *ofs, s= truct ovl_fh *fh, return real; } =20 - if (ovl_dentry_weird(real)) { + if (ovl_dentry_weird(real, ofs)) { dput(real); return NULL; } @@ -244,7 +244,7 @@ static int ovl_lookup_single(struct dentry *base, struc= t ovl_lookup_data *d, goto out_err; } =20 - if (ovl_dentry_weird(this)) { + if (ovl_dentry_weird(this, ofs)) { /* Don't support traversing automounts and other weirdness */ err =3D -EREMOTE; goto out_err; @@ -365,6 +365,7 @@ static int ovl_lookup_data_layer(struct dentry *dentry,= const char *redirect, struct path *datapath) { int err; + struct ovl_fs *ovl =3D OVL_FS(layer->fs->sb); =20 err =3D vfs_path_lookup(layer->mnt->mnt_root, layer->mnt, redirect, LOOKUP_BENEATH | LOOKUP_NO_SYMLINKS | LOOKUP_NO_XDEV, @@ -376,7 +377,7 @@ static int ovl_lookup_data_layer(struct dentry *dentry,= const char *redirect, return err; =20 err =3D -EREMOTE; - if (ovl_dentry_weird(datapath->dentry)) + if (ovl_dentry_weird(datapath->dentry, ovl)) goto out_path_put; =20 err =3D -ENOENT; @@ -767,7 +768,7 @@ struct dentry *ovl_get_index_fh(struct ovl_fs *ofs, str= uct ovl_fh *fh) =20 if (ovl_is_whiteout(index)) err =3D -ESTALE; - else if (ovl_dentry_weird(index)) + else if (ovl_dentry_weird(index, ofs)) err =3D -EIO; else return index; @@ -815,7 +816,7 @@ struct dentry *ovl_lookup_index(struct ovl_fs *ofs, str= uct dentry *upper, dput(index); index =3D ERR_PTR(-ESTALE); goto out; - } else if (ovl_dentry_weird(index) || ovl_is_whiteout(index) || + } else if (ovl_dentry_weird(index, ofs) || ovl_is_whiteout(index) || inode_wrong_type(inode, d_inode(origin)->i_mode)) { /* * Index should always be of the same file type as origin diff --git a/fs/overlayfs/overlayfs.h b/fs/overlayfs/overlayfs.h index 6f2f8f4cfbbc177fbd5441483395d7ff72efe332..f3de013517598c44c15ca9f950f= 6c2f0a5c2084b 100644 --- a/fs/overlayfs/overlayfs.h +++ b/fs/overlayfs/overlayfs.h @@ -445,7 +445,7 @@ void ovl_dentry_init_reval(struct dentry *dentry, struc= t dentry *upperdentry, struct ovl_entry *oe); void ovl_dentry_init_flags(struct dentry *dentry, struct dentry *upperdent= ry, struct ovl_entry *oe, unsigned int mask); -bool ovl_dentry_weird(struct dentry *dentry); +bool ovl_dentry_weird(struct dentry *dentry, struct ovl_fs *ovl); enum ovl_path_type ovl_path_type(struct dentry *dentry); void ovl_path_upper(struct dentry *dentry, struct path *path); void ovl_path_lower(struct dentry *dentry, struct path *path); diff --git a/fs/overlayfs/params.c b/fs/overlayfs/params.c index 6759f7d040c89d3b3c01572579c854a900411157..459e8bddf1777c12c9fa0bdfc15= 0e2ea22eaafc3 100644 --- a/fs/overlayfs/params.c +++ b/fs/overlayfs/params.c @@ -277,6 +277,7 @@ static int ovl_mount_dir_check(struct fs_context *fc, c= onst struct path *path, enum ovl_opt layer, const char *name, bool upper) { struct ovl_fs_context *ctx =3D fc->fs_private; + struct ovl_fs *ovl =3D fc->s_fs_info; =20 if (!d_is_dir(path->dentry)) return invalfc(fc, "%s is not a directory", name); @@ -290,7 +291,7 @@ static int ovl_mount_dir_check(struct fs_context *fc, c= onst struct path *path, if (sb_has_encoding(path->mnt->mnt_sb)) return invalfc(fc, "case-insensitive capable filesystem on %s not suppor= ted", name); =20 - if (ovl_dentry_weird(path->dentry)) + if (ovl_dentry_weird(path->dentry, ovl)) return invalfc(fc, "filesystem on %s not supported", name); =20 /* diff --git a/fs/overlayfs/util.c b/fs/overlayfs/util.c index 0819c739cc2ffce0dfefa84d3ff8f9f103eec191..4dd523a1a13ab0a6cf51d967d0b= 712873e6d8580 100644 --- a/fs/overlayfs/util.c +++ b/fs/overlayfs/util.c @@ -200,15 +200,17 @@ void ovl_dentry_init_flags(struct dentry *dentry, str= uct dentry *upperdentry, spin_unlock(&dentry->d_lock); } =20 -bool ovl_dentry_weird(struct dentry *dentry) +bool ovl_dentry_weird(struct dentry *dentry, struct ovl_fs *ovl) { + int flags =3D DCACHE_NEED_AUTOMOUNT | DCACHE_MANAGE_TRANSIT; + + if (!ovl->casefold) + flags |=3D DCACHE_OP_HASH | DCACHE_OP_COMPARE; + if (!d_can_lookup(dentry) && !d_is_file(dentry) && !d_is_symlink(dentry)) return true; =20 - return dentry->d_flags & (DCACHE_NEED_AUTOMOUNT | - DCACHE_MANAGE_TRANSIT | - DCACHE_OP_HASH | - DCACHE_OP_COMPARE); + return dentry->d_flags & flags; } =20 enum ovl_path_type ovl_path_type(struct dentry *dentry) --=20 2.49.0 From nobody Mon Feb 9 08:45:53 2026 Received: from fanzine2.igalia.com (fanzine.igalia.com [178.60.130.6]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5762F266EE2; Wed, 9 Apr 2025 15:00:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=178.60.130.6 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744210862; cv=none; b=gqQg53rYN//mhQHbGLBufvc5gQu8E1CmnV3gCiaVqscqywaqSHjyRRY0QHD65db1RSRCdWGkTHFv/v/CgO8zyZqxoLhdVHQzC8qlxOlQSudBW4ytgCknxqMGfMlNCqq4jgSpM/YzoCZkJPUcWC3XeUOPrfxnyWf45E9xnEUZcjc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744210862; c=relaxed/simple; bh=fMDoY8ee2pXnS8Dw18Q0OcUjEYyFmG9NC+Qch2lQWCU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Qythytpzi08P0s0TqRUImVECIsWbcYyEtQdBsVBsskFrVanKYtwUB8u4mKG98zlYjAeoEZsLqtZxtjqw1jsN70B3sxInp73OykdnuCY0qGMNhzfL8s+Bek8jRfTzca3ttQQQe/q3/1gkCWdJ+llIOIUXKKLz8JBq2mSV7CJZI3Q= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=igalia.com; spf=pass smtp.mailfrom=igalia.com; dkim=pass (2048-bit key) header.d=igalia.com header.i=@igalia.com header.b=iy1ZC5Lt; arc=none smtp.client-ip=178.60.130.6 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=igalia.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=igalia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=igalia.com header.i=@igalia.com header.b="iy1ZC5Lt" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=igalia.com; s=20170329; h=Cc:To:In-Reply-To:References:Message-Id: Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date:From:Sender: Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender :Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=gTwuFNmtqnHIRgvVLsZLNjX7p2roYlt+cuvH6TzFv0Y=; b=iy1ZC5LteO2FtEIBZEALLeGi8G tC4TqL/owFmKmTq3psa7w2KadEpzsOo5QsZlxIB41odsB3EwZXTyeYKUkhFu0JQSA1tZlOudQR9za IAAMp1Laoq8C6ogBQIOhVvGmdntuCPSDG3sUbtdIJD1zkHek8nFzhyYfxhJr+ROtaSzLP6OLktG5j DVsDEwyF9ZpJWeVYrK//CqtQJtZ3xhULCQtH8pbMfNrauiK9CRaMkismPTu6+WLDr48Uzga6RW2Cn 4phQdelACspP9jCgTt2kUusbTdL6y25gtcRMjfSlM6kbII46A6do6209XDN/95RcdIOoz6hl82ilC fLLzqXRg==; Received: from [191.204.192.64] (helo=[192.168.15.100]) by fanzine2.igalia.com with esmtpsa (Cipher TLS1.3:ECDHE_X25519__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim) id 1u2WvA-00EBVR-QF; Wed, 09 Apr 2025 17:00:57 +0200 From: =?utf-8?q?Andr=C3=A9_Almeida?= Date: Wed, 09 Apr 2025 12:00:43 -0300 Subject: [PATCH 3/3] ovl: Enable support for casefold filesystems Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250409-tonyk-overlayfs-v1-3-3991616fe9a3@igalia.com> References: <20250409-tonyk-overlayfs-v1-0-3991616fe9a3@igalia.com> In-Reply-To: <20250409-tonyk-overlayfs-v1-0-3991616fe9a3@igalia.com> To: Miklos Szeredi , Amir Goldstein , Theodore Tso , Gabriel Krisman Bertazi Cc: linux-unionfs@vger.kernel.org, linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, Alexander Viro , Christian Brauner , Jan Kara , kernel-dev@igalia.com, =?utf-8?q?Andr=C3=A9_Almeida?= X-Mailer: b4 0.14.2 Enable support for casefold filesystems in overlayfs. Signed-off-by: Andr=C3=A9 Almeida --- fs/overlayfs/params.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/overlayfs/params.c b/fs/overlayfs/params.c index 459e8bddf1777c12c9fa0bdfc150e2ea22eaafc3..28a660f09cff2573c648a00363c= 153be3903aa5b 100644 --- a/fs/overlayfs/params.c +++ b/fs/overlayfs/params.c @@ -289,7 +289,7 @@ static int ovl_mount_dir_check(struct fs_context *fc, c= onst struct path *path, * failures. */ if (sb_has_encoding(path->mnt->mnt_sb)) - return invalfc(fc, "case-insensitive capable filesystem on %s not suppor= ted", name); + ovl->casefold =3D true; =20 if (ovl_dentry_weird(path->dentry, ovl)) return invalfc(fc, "filesystem on %s not supported", name); --=20 2.49.0