Re: [PATCH v2] fuse: enable caching of symlinks

From: Miklos Szeredi
Date: Mon Oct 15 2018 - 10:50:12 EST


On Thu, Oct 11, 2018 at 5:17 PM, Dan Schatzberg <dschatzberg@xxxxxx> wrote:
> 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).

Pushed a modified version to for-next in the fuse tree.

One important change is to zero-terminate the link (do not rely on
i_size to provide the proper zero termination for fear of a trivial
information leak vector). Other changes are: use of
inode_nohighmem(), which seems to be the idiomatic way of preventing
highmem, and merging the non-cached and cached code paths as much as
possible.

Thanks,
Miklos