fuse: fuse: add time_gran to INIT_OUT
Allow userspace fs to specify time granularity. This is needed because with writeback_cache mode the kernel is responsible for generating mtime and ctime, but if the underlying filesystem doesn't support nanosecond granularity then the cache will contain a different value from the one stored on the filesystem resulting in a change of times after a cache flush. Make the default granularity 1s. Signed-off-by: Miklos Szeredi <mszeredi@suse.cz>
This commit is contained in:
parent
1e18bda86e
commit
e27c9d3877
@ -891,6 +891,11 @@ static void process_init_reply(struct fuse_conn *fc, struct fuse_req *req)
|
|||||||
fc->async_dio = 1;
|
fc->async_dio = 1;
|
||||||
if (arg->flags & FUSE_WRITEBACK_CACHE)
|
if (arg->flags & FUSE_WRITEBACK_CACHE)
|
||||||
fc->writeback_cache = 1;
|
fc->writeback_cache = 1;
|
||||||
|
if (arg->time_gran && arg->time_gran <= 1000000000)
|
||||||
|
fc->sb->s_time_gran = arg->time_gran;
|
||||||
|
else
|
||||||
|
fc->sb->s_time_gran = 1000000000;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
ra_pages = fc->max_read / PAGE_CACHE_SIZE;
|
ra_pages = fc->max_read / PAGE_CACHE_SIZE;
|
||||||
fc->no_lock = 1;
|
fc->no_lock = 1;
|
||||||
|
@ -96,6 +96,8 @@
|
|||||||
*
|
*
|
||||||
* 7.23
|
* 7.23
|
||||||
* - add FUSE_WRITEBACK_CACHE
|
* - add FUSE_WRITEBACK_CACHE
|
||||||
|
* - add time_gran to fuse_init_out
|
||||||
|
* - add reserved space to fuse_init_out
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _LINUX_FUSE_H
|
#ifndef _LINUX_FUSE_H
|
||||||
@ -559,6 +561,9 @@ struct fuse_init_in {
|
|||||||
uint32_t flags;
|
uint32_t flags;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define FUSE_COMPAT_INIT_OUT_SIZE 8
|
||||||
|
#define FUSE_COMPAT_22_INIT_OUT_SIZE 24
|
||||||
|
|
||||||
struct fuse_init_out {
|
struct fuse_init_out {
|
||||||
uint32_t major;
|
uint32_t major;
|
||||||
uint32_t minor;
|
uint32_t minor;
|
||||||
@ -567,6 +572,8 @@ struct fuse_init_out {
|
|||||||
uint16_t max_background;
|
uint16_t max_background;
|
||||||
uint16_t congestion_threshold;
|
uint16_t congestion_threshold;
|
||||||
uint32_t max_write;
|
uint32_t max_write;
|
||||||
|
uint32_t time_gran;
|
||||||
|
uint32_t unused[9];
|
||||||
};
|
};
|
||||||
|
|
||||||
#define CUSE_INIT_INFO_MAX 4096
|
#define CUSE_INIT_INFO_MAX 4096
|
||||||
|
Loading…
Reference in New Issue
Block a user