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).
Showing the changes to include/uapi/linux (1 of 4 files). Show all
Unified · Split
| @@ -121,6 +121,7 @@ · 120 unmodified lines | |||
| 121 | * - add FUSE_COPY_FILE_RANGE | 121 | * - add FUSE_COPY_FILE_RANGE |
| 122 | * - add FOPEN_CACHE_DIR | 122 | * - add FOPEN_CACHE_DIR |
| 123 | * - add FUSE_MAX_PAGES, add max_pages to init_out | 123 | * - add FUSE_MAX_PAGES, add max_pages to init_out |
| 124 | * - add FUSE_CACHE_SYMLINKS | ||
| 124 | */ | 125 | */ |
| 125 | 126 | ||
| 126 | #ifndef _LINUX_FUSE_H | 127 | #ifndef _LINUX_FUSE_H |
| @@ -257,6 +258,7 @@ struct fuse_file_lock { · 130 unmodified lines | |||
| 257 | * FUSE_POSIX_ACL: filesystem supports posix acls | 258 | * FUSE_POSIX_ACL: filesystem supports posix acls |
| 258 | * FUSE_ABORT_ERROR: reading the device after abort returns ECONNABORTED | 259 | * FUSE_ABORT_ERROR: reading the device after abort returns ECONNABORTED |
| 259 | * FUSE_MAX_PAGES: init_out.max_pages contains the max number of req pages | 260 | * FUSE_MAX_PAGES: init_out.max_pages contains the max number of req pages |
| 261 | * FUSE_CACHE_SYMLINKS: cache READLINK responses | ||
| 260 | */ | 262 | */ |
| 261 | #define FUSE_ASYNC_READ (1 << 0) | 263 | #define FUSE_ASYNC_READ (1 << 0) |
| 262 | #define FUSE_POSIX_LOCKS (1 << 1) | 264 | #define FUSE_POSIX_LOCKS (1 << 1) |
| @@ -281,6 +283,7 @@ struct fuse_file_lock { · 18 unmodified lines | |||
| 281 | #define FUSE_POSIX_ACL (1 << 20) | 283 | #define FUSE_POSIX_ACL (1 << 20) |
| 282 | #define FUSE_ABORT_ERROR (1 << 21) | 284 | #define FUSE_ABORT_ERROR (1 << 21) |
| 283 | #define FUSE_MAX_PAGES (1 << 22) | 285 | #define FUSE_MAX_PAGES (1 << 22) |
| 286 | #define FUSE_CACHE_SYMLINKS (1 << 23) | ||
| 284 | 287 | ||
| 285 | /** | 288 | /** |
| 286 | * CUSE INIT request/reply flags | 289 | * CUSE INIT request/reply flags |