fuse: enable caching of symlinks

FUSE file reads are cached in the page cache, but symlink reads are
not. This patch enables FUSE READLINK operations to be cached which
can improve performance of some FUSE workloads.

In particular, I'm working on a FUSE filesystem for access to source
code and discovered that about a 10% improvement to build times is
achieved with this patch (there are a lot of symlinks in the source
tree).

Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
This commit is contained in:
Dan Schatzberg
2018-10-11 08:17:00 -07:00
committed by Miklos Szeredi
parent 9a2eb24d1a
commit 5571f1e654
4 changed files with 92 additions and 26 deletions

View File

@@ -613,6 +613,9 @@ struct fuse_conn {
/** handle fs handles killing suid/sgid/cap on write/chown/trunc */
unsigned handle_killpriv:1;
/** cache READLINK responses in page cache */
unsigned cache_symlinks:1;
/*
* The following bitfields are only for optimization purposes
* and hence races in setting them will not cause malfunction