mbox series

[v3,0/9] fuse: inode IO modes and mmap + parallel dio

Message ID 20240208170603.2078871-1-amir73il@gmail.com (mailing list archive)
Headers show
Series fuse: inode IO modes and mmap + parallel dio | expand

Message

Amir Goldstein Feb. 8, 2024, 5:05 p.m. UTC
Miklos,

FUSE passthrough patches v15 [1] are based on this series, so I am
posting it to the list for completion.

This v3 addresses most of your review comments on v2 posted by Bernd [2].
I added all the cleanup patches that you requested and addressed the
review comments related to my io modes patch.

I've also split it up the io modes infrastructure patch from Bernd's
change to wait for parallel dio in mmap and caching open.

The one thing I did not address is that I left the FOPEN_CACHE_IO flag
as an internal flag as a way to signal "this dio file holds an iocachectr
refcount". I wasn't sure that you are ok with it, but I wanted you to
consider how the entire work looks after adding FOPEN_PASSTHROUGH.

Bernd did not have much review comments to address so he has tested
my branch and asked me to post it.

Thanks,
Amir.

Changes since v2:
- Split "wait for parallel dio" from "io modes" patch
- FOPEN_CACHE_IO reserved flag cannot set set by server
- O_DIRECT without FOPEN_DIRECT_IO opens in caching mode
  in anticipation for O_DIRECT flag change via fcntl()
- FOPEN_PARALLEL_DIRECT_WRITES requires FOPEN_DIRECT_IO
- Moved io mode helpers to iomode.c
- Change return type of fuse_inode_*_io_cache() helpers
- Separate fuse_dir_open() to not take the io open route at all
- Remove the need for isdir arg to fuse_file_put()
- Avoid post truncate attribute handling after atomic_open()

[1] https://lore.kernel.org/linux-fsdevel/20240206142453.1906268-1-amir73il@gmail.com/
[2] https://lore.kernel.org/linux-fsdevel/20240131230827.207552-1-bschubert@ddn.com/

Amir Goldstein (6):
  fuse: factor out helper fuse_truncate_update_attr()
  fuse: allocate ff->release_args only if release is needed
  fuse: break up fuse_open_common()
  fuse: prepare for failing open response
  fuse: introduce inode io modes
  fuse: allow parallel dio writes with FUSE_DIRECT_IO_ALLOW_MMAP

Bernd Schubert (3):
  fuse: Fix VM_MAYSHARE and direct_io_allow_mmap
  fuse: Create helper function if DIO write needs exclusive lock
  fuse: Add fuse_dio_lock/unlock helper functions

 fs/fuse/Makefile          |   1 +
 fs/fuse/dir.c             |  36 ++++-
 fs/fuse/file.c            | 280 ++++++++++++++++++++++++--------------
 fs/fuse/fuse_i.h          |  30 +++-
 fs/fuse/iomode.c          | 245 +++++++++++++++++++++++++++++++++
 include/uapi/linux/fuse.h |   2 +
 6 files changed, 482 insertions(+), 112 deletions(-)
 create mode 100644 fs/fuse/iomode.c