diff options
author | Miklos Szeredi <mszeredi@redhat.com> | 2018-09-28 10:43:23 -0400 |
---|---|---|
committer | Miklos Szeredi <mszeredi@redhat.com> | 2018-09-28 10:43:23 -0400 |
commit | 6433b8998a21dc597002731c4ceb4144e856edc4 (patch) | |
tree | 2792ae01ee8dbbed39292d55e1c4b3e3db51272d | |
parent | d123d8e1833c5d854b56f2a7da17cafd0a901df8 (diff) |
fuse: add FOPEN_CACHE_DIR
Add flag returned by OPENDIR request to allow kernel to cache directory
contents in page cache. The effect of FOPEN_CACHE_DIR is twofold:
a) if not already cached, it writes entries into the cache
b) if already cached, it allows reading entries from the cache
The FOPEN_KEEP_CACHE has the same effect as on regular files: unless this
flag is given the cache is cleared upon completion of open.
So FOPEN_KEEP_CACHE and FOPEN_KEEP_CACHE flags should be used together to
make use of the directory caching facility introduced in the following
patches.
The FUSE_AUTO_INVAL_DATA flag returned in INIT reply also has the same
affect on the directory cache as it has on data cache for regular files.
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
-rw-r--r-- | include/uapi/linux/fuse.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/include/uapi/linux/fuse.h b/include/uapi/linux/fuse.h index d27b50a44f74..31a504f1ee60 100644 --- a/include/uapi/linux/fuse.h +++ b/include/uapi/linux/fuse.h | |||
@@ -119,6 +119,7 @@ | |||
119 | * | 119 | * |
120 | * 7.28 | 120 | * 7.28 |
121 | * - add FUSE_COPY_FILE_RANGE | 121 | * - add FUSE_COPY_FILE_RANGE |
122 | * - add FOPEN_CACHE_DIR | ||
122 | */ | 123 | */ |
123 | 124 | ||
124 | #ifndef _LINUX_FUSE_H | 125 | #ifndef _LINUX_FUSE_H |
@@ -222,10 +223,12 @@ struct fuse_file_lock { | |||
222 | * FOPEN_DIRECT_IO: bypass page cache for this open file | 223 | * FOPEN_DIRECT_IO: bypass page cache for this open file |
223 | * FOPEN_KEEP_CACHE: don't invalidate the data cache on open | 224 | * FOPEN_KEEP_CACHE: don't invalidate the data cache on open |
224 | * FOPEN_NONSEEKABLE: the file is not seekable | 225 | * FOPEN_NONSEEKABLE: the file is not seekable |
226 | * FOPEN_CACHE_DIR: allow caching this directory | ||
225 | */ | 227 | */ |
226 | #define FOPEN_DIRECT_IO (1 << 0) | 228 | #define FOPEN_DIRECT_IO (1 << 0) |
227 | #define FOPEN_KEEP_CACHE (1 << 1) | 229 | #define FOPEN_KEEP_CACHE (1 << 1) |
228 | #define FOPEN_NONSEEKABLE (1 << 2) | 230 | #define FOPEN_NONSEEKABLE (1 << 2) |
231 | #define FOPEN_CACHE_DIR (1 << 3) | ||
229 | 232 | ||
230 | /** | 233 | /** |
231 | * INIT request/reply flags | 234 | * INIT request/reply flags |