Suppress negative dentry
From: | Chengguang Xu <cgxu519-AT-mykernel.net> | |
To: | miklos-AT-szeredi.hu, viro-AT-zeniv.linux.org.uk, amir73il-AT-gmail.com | |
Subject: | [RFC PATCH v3 0/9] Suppress negative dentry | |
Date: | Fri, 15 May 2020 15:20:38 +0800 | |
Message-ID: | <20200515072047.31454-1-cgxu519@mykernel.net> | |
Cc: | linux-fsdevel-AT-vger.kernel.org, linux-unionfs-AT-vger.kernel.org, Chengguang Xu <cgxu519-AT-mykernel.net> | |
Archive-link: | Article |
This series adds a new lookup flag LOOKUP_DONTCACHE_NEGATIVE to indicate to drop negative dentry in slow path of lookup. In overlayfs, negative dentries in upper/lower layers are useless after construction of overlayfs' own dentry, so in order to effectively reclaim those dentries, specify LOOKUP_DONTCACHE_NEGATIVE flag when doing lookup in upper/lower layers. Patch 1 adds flag LOOKUP_DONTCACHE_NEGATIVE and related logic in vfs layer. Patch 2 does lookup optimazation for overlayfs. Patch 3-9 just adjusts function argument when calling lookup_positive_unlocked() and lookup_one_len_unlocked(). v1->v2: - Only drop negative dentry in slow path of lookup. v2->v3: - Drop negative dentry in vfs layer. - Rebase on latest linus-tree(5.7.0-rc5). Chengguang Xu (9): fs/dcache: Introduce a new lookup flag LOOKUP_DONTCACHE_NEGATIVE ovl: Suppress negative dentry in lookup cifs: Adjust argument for lookup_positive_unlocked() debugfs: Adjust argument for lookup_positive_unlocked() ecryptfs: Adjust argument for lookup_one_len_unlocked() exportfs: Adjust argument for lookup_one_len_unlocked() kernfs: Adjust argument for lookup_positive_unlocked() nfsd: Adjust argument for lookup_positive_unlocked() quota: Adjust argument for lookup_positive_unlocked() fs/cifs/cifsfs.c | 2 +- fs/debugfs/inode.c | 2 +- fs/ecryptfs/inode.c | 2 +- fs/exportfs/expfs.c | 2 +- fs/kernfs/mount.c | 2 +- fs/namei.c | 14 ++++++++++---- fs/nfsd/nfs3xdr.c | 2 +- fs/nfsd/nfs4xdr.c | 3 ++- fs/overlayfs/namei.c | 9 +++++---- fs/quota/dquot.c | 3 ++- include/linux/namei.h | 9 +++++++-- 11 files changed, 32 insertions(+), 18 deletions(-) -- 2.20.1