From: Gabriel Krisman Bertazi <krisman@suse.de>
To: viro@zeniv.linux.org.uk, ebiggers@kernel.org, jaegeuk@kernel.org,
tytso@mit.edu
Cc: linux-f2fs-devel@lists.sourceforge.net,
linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org,
Gabriel Krisman Bertazi <krisman@suse.de>
Subject: [PATCH v2 6/8] f2fs: Set the case-insensitive dentry operations through ->s_d_op
Date: Fri, 15 Dec 2023 16:16:06 -0500 [thread overview]
Message-ID: <20231215211608.6449-7-krisman@suse.de> (raw)
In-Reply-To: <20231215211608.6449-1-krisman@suse.de>
All dentries in a case-insensitive filesystem have the same set of
dentry operations. Therefore, we should let VFS propagate them from
sb->s_d_op d_alloc instead of setting at lookup time.
This was already the case before commit bb9cd9106b22 ("fscrypt: Have
filesystems handle their d_ops"), but it was changed to set at
lookup-time to facilitate the integration with fscrypt. But it's a
problem because dentries that don't get created through ->lookup() won't
have any visibility of the operations. Let's revert to the previous
implementation.
Suggested-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Gabriel Krisman Bertazi <krisman@suse.de>
---
changes since v1:
- Fix CONFIG_UNICODE=n build (lkp)
---
fs/f2fs/namei.c | 6 +++++-
fs/f2fs/super.c | 5 +++++
2 files changed, 10 insertions(+), 1 deletion(-)
diff --git a/fs/f2fs/namei.c b/fs/f2fs/namei.c
index d0053b0284d8..6aec21f0b5d6 100644
--- a/fs/f2fs/namei.c
+++ b/fs/f2fs/namei.c
@@ -532,7 +532,11 @@ static struct dentry *f2fs_lookup(struct inode *dir, struct dentry *dentry,
}
err = f2fs_prepare_lookup(dir, dentry, &fname);
- generic_set_encrypted_ci_d_ops(dentry);
+
+ /* Case-insensitive volumes set dentry ops through sb->s_d_op. */
+ if (!dir->i_sb->s_d_op)
+ generic_set_encrypted_ci_d_ops(dentry);
+
if (err == -ENOENT)
goto out_splice;
if (err)
diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c
index 033af907c3b1..8d1abd7f3a6f 100644
--- a/fs/f2fs/super.c
+++ b/fs/f2fs/super.c
@@ -4663,6 +4663,11 @@ static int f2fs_fill_super(struct super_block *sb, void *data, int silent)
goto free_node_inode;
}
+#if IS_ENABLED(CONFIG_UNICODE)
+ if (sb->s_encoding)
+ sb->s_d_op = &generic_ci_dentry_ops;
+#endif
+
sb->s_root = d_make_root(root); /* allocate root dentry */
if (!sb->s_root) {
err = -ENOMEM;
--
2.43.0
WARNING: multiple messages have this Message-ID (diff)
From: Gabriel Krisman Bertazi <krisman@suse.de>
To: viro@zeniv.linux.org.uk, ebiggers@kernel.org, jaegeuk@kernel.org,
tytso@mit.edu
Cc: linux-fsdevel@vger.kernel.org,
Gabriel Krisman Bertazi <krisman@suse.de>,
linux-ext4@vger.kernel.org,
linux-f2fs-devel@lists.sourceforge.net
Subject: [f2fs-dev] [PATCH v2 6/8] f2fs: Set the case-insensitive dentry operations through ->s_d_op
Date: Fri, 15 Dec 2023 16:16:06 -0500 [thread overview]
Message-ID: <20231215211608.6449-7-krisman@suse.de> (raw)
In-Reply-To: <20231215211608.6449-1-krisman@suse.de>
All dentries in a case-insensitive filesystem have the same set of
dentry operations. Therefore, we should let VFS propagate them from
sb->s_d_op d_alloc instead of setting at lookup time.
This was already the case before commit bb9cd9106b22 ("fscrypt: Have
filesystems handle their d_ops"), but it was changed to set at
lookup-time to facilitate the integration with fscrypt. But it's a
problem because dentries that don't get created through ->lookup() won't
have any visibility of the operations. Let's revert to the previous
implementation.
Suggested-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Gabriel Krisman Bertazi <krisman@suse.de>
---
changes since v1:
- Fix CONFIG_UNICODE=n build (lkp)
---
fs/f2fs/namei.c | 6 +++++-
fs/f2fs/super.c | 5 +++++
2 files changed, 10 insertions(+), 1 deletion(-)
diff --git a/fs/f2fs/namei.c b/fs/f2fs/namei.c
index d0053b0284d8..6aec21f0b5d6 100644
--- a/fs/f2fs/namei.c
+++ b/fs/f2fs/namei.c
@@ -532,7 +532,11 @@ static struct dentry *f2fs_lookup(struct inode *dir, struct dentry *dentry,
}
err = f2fs_prepare_lookup(dir, dentry, &fname);
- generic_set_encrypted_ci_d_ops(dentry);
+
+ /* Case-insensitive volumes set dentry ops through sb->s_d_op. */
+ if (!dir->i_sb->s_d_op)
+ generic_set_encrypted_ci_d_ops(dentry);
+
if (err == -ENOENT)
goto out_splice;
if (err)
diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c
index 033af907c3b1..8d1abd7f3a6f 100644
--- a/fs/f2fs/super.c
+++ b/fs/f2fs/super.c
@@ -4663,6 +4663,11 @@ static int f2fs_fill_super(struct super_block *sb, void *data, int silent)
goto free_node_inode;
}
+#if IS_ENABLED(CONFIG_UNICODE)
+ if (sb->s_encoding)
+ sb->s_d_op = &generic_ci_dentry_ops;
+#endif
+
sb->s_root = d_make_root(root); /* allocate root dentry */
if (!sb->s_root) {
err = -ENOMEM;
--
2.43.0
_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
next prev parent reply other threads:[~2023-12-15 21:16 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-12-15 21:16 [PATCH v2 0/8] Revert setting casefolding dentry operations through s_d_op Gabriel Krisman Bertazi
2023-12-15 21:16 ` [f2fs-dev] " Gabriel Krisman Bertazi
2023-12-15 21:16 ` [PATCH v2 1/8] dcache: Add helper to disable d_revalidate for a specific dentry Gabriel Krisman Bertazi
2023-12-15 21:16 ` [f2fs-dev] " Gabriel Krisman Bertazi
2023-12-15 21:16 ` [PATCH v2 2/8] fscrypt: Drop d_revalidate if key is available Gabriel Krisman Bertazi
2023-12-15 21:16 ` [f2fs-dev] " Gabriel Krisman Bertazi
2023-12-19 23:00 ` Eric Biggers
2023-12-19 23:00 ` [f2fs-dev] " Eric Biggers
2023-12-21 7:14 ` Al Viro
2023-12-21 7:14 ` [f2fs-dev] " Al Viro
2023-12-21 7:19 ` Al Viro
2023-12-21 7:19 ` [f2fs-dev] " Al Viro
2023-12-15 21:16 ` [PATCH v2 3/8] libfs: Merge encrypted_ci_dentry_ops and ci_dentry_ops Gabriel Krisman Bertazi
2023-12-15 21:16 ` [f2fs-dev] " Gabriel Krisman Bertazi
2023-12-19 22:55 ` Eric Biggers
2023-12-19 22:55 ` [f2fs-dev] " Eric Biggers
2023-12-15 21:16 ` [PATCH v2 4/8] libfs: Expose generic_ci_dentry_ops outside of libfs Gabriel Krisman Bertazi
2023-12-15 21:16 ` [f2fs-dev] " Gabriel Krisman Bertazi
2023-12-19 22:56 ` Eric Biggers
2023-12-19 22:56 ` [f2fs-dev] " Eric Biggers
2023-12-15 21:16 ` [PATCH v2 5/8] ext4: Set the case-insensitive dentry operations through ->s_d_op Gabriel Krisman Bertazi
2023-12-15 21:16 ` [f2fs-dev] " Gabriel Krisman Bertazi
2023-12-15 21:16 ` Gabriel Krisman Bertazi [this message]
2023-12-15 21:16 ` [f2fs-dev] [PATCH v2 6/8] f2fs: " Gabriel Krisman Bertazi
2023-12-15 21:16 ` [PATCH v2 7/8] libfs: Don't support setting casefold operations during lookup Gabriel Krisman Bertazi
2023-12-15 21:16 ` [f2fs-dev] " Gabriel Krisman Bertazi
2023-12-15 21:16 ` [PATCH v2 8/8] fscrypt: Move d_revalidate configuration back into fscrypt Gabriel Krisman Bertazi
2023-12-15 21:16 ` [f2fs-dev] " Gabriel Krisman Bertazi
2023-12-19 23:03 ` Eric Biggers
2023-12-19 23:03 ` [f2fs-dev] " Eric Biggers
2023-12-21 7:39 ` Al Viro
2023-12-21 7:39 ` [f2fs-dev] " Al Viro
2023-12-22 5:58 ` Eric Biggers
2023-12-22 5:58 ` [f2fs-dev] " Eric Biggers
2023-12-19 23:12 ` [PATCH v2 0/8] Revert setting casefolding dentry operations through s_d_op Eric Biggers
2023-12-19 23:12 ` [f2fs-dev] " Eric Biggers
2023-12-23 4:23 ` [PATCH] ovl: Reject mounting case-insensitive filesystems Gabriel Krisman Bertazi
2023-12-23 4:23 ` [f2fs-dev] " Gabriel Krisman Bertazi
2023-12-23 6:20 ` Amir Goldstein
2023-12-23 6:20 ` [f2fs-dev] " Amir Goldstein
2023-12-23 6:22 ` Amir Goldstein
2023-12-23 6:22 ` [f2fs-dev] " Amir Goldstein
2023-12-23 12:46 ` Gabriel Krisman Bertazi
2023-12-23 12:46 ` [f2fs-dev] " Gabriel Krisman Bertazi
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=20231215211608.6449-7-krisman@suse.de \
--to=krisman@suse.de \
--cc=ebiggers@kernel.org \
--cc=jaegeuk@kernel.org \
--cc=linux-ext4@vger.kernel.org \
--cc=linux-f2fs-devel@lists.sourceforge.net \
--cc=linux-fsdevel@vger.kernel.org \
--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.