diff options
author | Amir Goldstein <amir73il@gmail.com> | 2021-10-24 14:01:23 +0300 |
---|---|---|
committer | Amir Goldstein <amir73il@gmail.com> | 2022-01-03 14:55:34 +0200 |
commit | 1b498ac9b341e086562f54cc49bf035e19a94e1d (patch) | |
tree | 51745ff21733bd4a3dc3328df272f57404b60f4b /include | |
parent | 48ae2e72b39b6a31cb2194f6f11786b7ca06aac6 (diff) | |
download | libfuse-1b498ac9b341e086562f54cc49bf035e19a94e1d.tar.gz |
Add support for FOPEN_NOFLUSH flag
Allow requesting from kernel to avoid flush on close at file open
time. If kernel does not support FOPEN_NOFLUSH flag, the request
will be ignored.
For passthrough_hp example, request to avoid flush on close when
writeback cache is disabled and file is opened O_RDONLY.
Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/fuse_common.h | 6 | ||||
-rw-r--r-- | include/fuse_kernel.h | 2 |
2 files changed, 7 insertions, 1 deletions
diff --git a/include/fuse_common.h b/include/fuse_common.h index ea4bdb0..d7481be 100644 --- a/include/fuse_common.h +++ b/include/fuse_common.h @@ -83,8 +83,12 @@ struct fuse_file_info { nothing when set by open()). */ unsigned int cache_readdir : 1; + /** Can be filled in by open, to indicate that flush is not needed + on close. */ + unsigned int noflush : 1; + /** Padding. Reserved for future use*/ - unsigned int padding : 25; + unsigned int padding : 24; unsigned int padding2 : 32; /** File handle id. May be filled in by filesystem in create, diff --git a/include/fuse_kernel.h b/include/fuse_kernel.h index 018a00a..48f2000 100644 --- a/include/fuse_kernel.h +++ b/include/fuse_kernel.h @@ -238,12 +238,14 @@ struct fuse_file_lock { * FOPEN_NONSEEKABLE: the file is not seekable * FOPEN_CACHE_DIR: allow caching this directory * FOPEN_STREAM: the file is stream-like (no file position at all) + * FOPEN_NOFLUSH: don't flush data cache on close (unless FUSE_WRITEBACK_CACHE) */ #define FOPEN_DIRECT_IO (1 << 0) #define FOPEN_KEEP_CACHE (1 << 1) #define FOPEN_NONSEEKABLE (1 << 2) #define FOPEN_CACHE_DIR (1 << 3) #define FOPEN_STREAM (1 << 4) +#define FOPEN_NOFLUSH (1 << 5) /** * INIT request/reply flags |