linux/fs/fuse
Amir Goldstein cb098dd24b fuse: introduce inode io modes
The fuse inode io mode is determined by the mode of its open files/mmaps
and parallel dio opens and expressed in the value of fi->iocachectr:

 > 0 - caching io: files open in caching mode or mmap on direct_io file
 < 0 - parallel dio: direct io mode with parallel dio writes enabled
== 0 - direct io: no files open in caching mode and no files mmaped

Note that iocachectr value of 0 might become positive or negative,
while non-parallel dio is getting processed.

direct_io mmap uses page cache, so first mmap will mark the file as
ff->io_opened and increment fi->iocachectr to enter the caching io mode.

If the server opens the file in caching mode while it is already open
for parallel dio or vice versa the open fails.

This allows executing parallel dio when inode is not in caching mode
and no mmaps have been performed on the inode in question.

Signed-off-by: Bernd Schubert <bschubert@ddn.com>
Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
2024-02-23 17:36:32 +01:00
..
acl.c fs.idmapped.v6.3 2023-02-20 11:53:11 -08:00
control.c fuse: convert to new timestamp accessors 2023-10-18 14:08:21 +02:00
cuse.c driver core: class: remove module * from class_create() 2023-03-17 15:16:33 +01:00
dax.c fuse: dax: set fc->dax to NULL in fuse_dax_conn_free() 2023-12-04 10:16:53 +01:00
dev.c fuse_dev_ioctl(): switch to fdget() 2023-04-20 22:55:35 -04:00
dir.c fuse: prepare for failing open response 2024-02-23 17:36:32 +01:00
file.c fuse: introduce inode io modes 2024-02-23 17:36:32 +01:00
fuse_i.h fuse: introduce inode io modes 2024-02-23 17:36:32 +01:00
inode.c fuse: share lookup state between submount and its parent 2023-12-04 10:16:53 +01:00
ioctl.c fuse: ioctl: translate ENOSYS in outarg 2023-06-21 11:17:36 +02:00
iomode.c fuse: introduce inode io modes 2024-02-23 17:36:32 +01:00
Kconfig dax: remove CONFIG_DAX_DRIVER 2021-12-04 08:58:51 -08:00
Makefile fuse: introduce inode io modes 2024-02-23 17:36:32 +01:00
readdir.c fuse: convert to new timestamp accessors 2023-10-18 14:08:21 +02:00
virtio_fs.c virtiofs: emit uevents on filesystem events 2024-02-23 09:40:26 +01:00
xattr.c fuse: move fuse_xattr_handlers to .rodata 2023-10-09 16:24:18 +02:00