Searched hist:"802 dc0497be2b538ca4300704b45b59bffe29585" (Results 1 – 1 of 1) sorted by relevance
/openbmc/linux/fs/fuse/ |
H A D | dir.c | diff 802dc0497be2b538ca4300704b45b59bffe29585 Mon Oct 15 08:43:06 CDT 2018 Miklos Szeredi <mszeredi@redhat.com> fuse: don't need GETATTR after every READ
If 'auto_inval_data' mode is active, then fuse_file_read_iter() will call fuse_update_attributes(), which will check the attribute validity and send a GETATTR request if some of the attributes are no longer valid. The page cache is then invalidated if the size or mtime have changed.
Then, if a READ request was sent and reply received (which is the case if the data wasn't cached yet, or if the file is opened for O_DIRECT), the atime attribute is invalidated.
This will result in the next read() also triggering a GETATTR, ...
This can be fixed by only sending GETATTR if the mode or size are invalid, we don't need to do a refresh if only atime is invalid.
More generally, none of the callers of fuse_update_attributes() need an up-to-date atime value, so for now just remove STATX_ATIME from the request mask when attributes are updated for internal use.
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
|