Instead of invalidating negative dentries during case-insensitive
lookups, mark them as such and let them be added to the dcache.
d_ci_revalidate is able to properly filter them out if necessary based
on the dentry casefold flag.

Signed-off-by: Gabriel Krisman Bertazi <kris...@collabora.com>
---
 fs/f2fs/namei.c | 23 ++---------------------
 1 file changed, 2 insertions(+), 21 deletions(-)

diff --git a/fs/f2fs/namei.c b/fs/f2fs/namei.c
index c549acb52ac4..20c3391bb209 100644
--- a/fs/f2fs/namei.c
+++ b/fs/f2fs/namei.c
@@ -566,17 +566,8 @@ static struct dentry *f2fs_lookup(struct inode *dir, 
struct dentry *dentry,
                goto out_iput;
        }
 out_splice:
-#if IS_ENABLED(CONFIG_UNICODE)
-       if (!inode && IS_CASEFOLDED(dir)) {
-               /* Eventually we want to call d_add_ci(dentry, NULL)
-                * for negative dentries in the encoding case as
-                * well.  For now, prevent the negative dentry
-                * from being cached.
-                */
-               trace_f2fs_lookup_end(dir, dentry, ino, err);
-               return NULL;
-       }
-#endif
+       if (IS_ENABLED(CONFIG_UNICODE) && IS_CASEFOLDED(dir))
+               d_set_casefold_lookup(dentry);
        new = d_splice_alias(inode, dentry);
        err = PTR_ERR_OR_ZERO(new);
        trace_f2fs_lookup_end(dir, dentry, ino, !new ? -ENOENT : err);
@@ -627,16 +618,6 @@ static int f2fs_unlink(struct inode *dir, struct dentry 
*dentry)
                goto fail;
        }
        f2fs_delete_entry(de, page, dir, inode);
-#if IS_ENABLED(CONFIG_UNICODE)
-       /* VFS negative dentries are incompatible with Encoding and
-        * Case-insensitiveness. Eventually we'll want avoid
-        * invalidating the dentries here, alongside with returning the
-        * negative dentries at f2fs_lookup(), when it is better
-        * supported by the VFS for the CI case.
-        */
-       if (IS_CASEFOLDED(dir))
-               d_invalidate(dentry);
-#endif
        f2fs_unlock_op(sbi);
 
        if (IS_DIRSYNC(dir))
-- 
2.36.1



_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to