Invalidating cached FUSE directory entries

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On a recent kernel with readdir caching and FUSE_NO_OPENDIR_SUPPORT
(and this follow-on patch:
https://patchwork.kernel.org/patch/10785105/ ), I benchmarked our
source control FUSE filesystem. With hot caches and zero requests
being made to userspace, I could do a full directory crawl of a major
subset of our repository in under 3 seconds. When I ran the same test
against ext4 and btrfs, it took between 3 and 6 seconds. Awesome!

However, though we were correctly sending FUSE_NOTIFY_INVAL_ENTRY
whenever changing a directory inode's entry, this did not flush the
readdir pagecache. It looks to me like FUSE_NOTIFY_INVAL_ENTRY only
invalidates the readdir cache if the dcache has an entry with the
given name. Whether that's true is entirely out of userspace's hands.

We worked around it by also explicitly sending FUSE_NOTIFY_INVAL_INODE
once per inode if we ever sent FUSE_NOTIFY_INVAL_ENTRY. But this
increases our invalidation traffic and seems unnecessary.

What do you think about having FUSE_NOTIFY_INVAL_ENTRY also
unconditionally invalidate the readdir cache?






[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [Samba]     [Device Mapper]     [CEPH Development]

  Powered by Linux