mirror of
https://github.com/versity/scoutfs.git
synced 2026-09-01 13:47:11 +00:00
c8f8feb7f8bf103088c9a4139158ab91236cce86
Today we use unconditional dentry revalidation to provide directory entry consistency. Any time the vfs tries to use a cached dentry we tell it to drop it and perform a lookup. This hits our item cache which is kept consistent by the locks. This would just be a waste of cpu if it weren't for how heavy weight the vfs revalidation->lookup path is here. It doesn't just invalidate the entry it uses shrink_dcache_parent() to drop all the cached entries in the subtree rooted at the cached entry. We saw 22 second long cpu livelocks in this shrink_dcache_parent() when creating and archiving empty files. Instead lets let the vfs use dcache entries. We only invalidate them as we're dropping the lock that covers them. (Today coarse inode locks cover all the entries in batches of inodes.) We can use d_drop() to remove entries from the cache to stop them from satisfying lookup without trying to free all the dentries under them. Signed-off-by: Zach Brown <zab@versity.com>
Description
No description provided
7.7 MiB
Languages
C
86.4%
Shell
10%
Roff
2.5%
TeX
0.8%
Makefile
0.3%