[PATCH v2 0/5] fuse: inode IO modes and mmap

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This series is mostly about mmap, direct-IO and inode IO modes.
(new in this series is FOPEN_CACHE_IO).
It brings back the shared lock for FOPEN_DIRECT_IO when
FUSE_DIRECT_IO_ALLOW_MMAP is set and is also preparation
work for Amirs work on fuse-passthrough and also for
shared lock O_DIRECT and direct-IO code consolidation I have
patches for.

Patch 1/5 was already posted before
https://patchwork.kernel.org/project/linux-fsdevel/patch/20231213150703.6262-1-bschubert@xxxxxxx/
but is included here again, as especially patch 5/5 has a
dependency on it. Amir has also spotted a typo in the commit message
of the initial patch, which is corrected here.

Patches 2/5 and 3/5 add helper functions, which are needed by the
main patch (5/5) in this series and are be also needed by another
fuse direct-IO series. That series needs the helper functions in
fuse_cache_write_iter, thus, these new helpers are above that
function.

Patch 4/5 allows to fail fuse_finish_open and is a preparation
to handle conflicting IO modes from the server side and will also be
needed for fuse passthrough.

Patch 5/5 is the main patch in the series, which adds inode
IO modes, which is needed to re-enable shared DIO writes locks
when FUSE_DIRECT_IO_ALLOW_MMAP is set. Furthermore, these IO modes
are also needed by Amirs WIP fuse passthrough work.

The conflict of FUSE_DIRECT_IO_ALLOW_MMAP and
FOPEN_PARALLEL_DIRECT_WRITES was detected by xfstest generic/095.
This patch series was tested by running a loop of that test
and also by multiple runs of the complete xfstest suite.
For testing with libfuse a version is needed that includes this
pull request
https://github.com/libfuse/libfuse/pull/870

To: Miklos Szeredi <miklos@xxxxxxxxxx>
Cc: linux-fsdevel@xxxxxxxxxxxxxxx
Cc: Amir Goldstein <amir73il@xxxxxxxxx>
Cc: Bernd Schubert <bernd.schubert@xxxxxxxxxxx>

---
Changes in v2:
Amir:
- Added one more patch (4/5) "fuse: prepare for failing open response"
- Updated the 5/5 (previously 4/4) fuse: introduce inode io modes
    - Fix FOPEN_CACHE_IO release, release could have happened
      without being actually taken (error cases, directory, dax-inode)
    - fuse_file_io_open does not implicitly set FOPEN_DIRECT_IO anymore,
      but waits until concurrent shared-locked direct-io is done or
      switched an exclusive lock).

Amir Goldstein (2):
  fuse: prepare for failing open response
  fuse: introduce inode io modes

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/dir.c             |   8 +-
 fs/fuse/file.c            | 339 ++++++++++++++++++++++++++++++++------
 fs/fuse/fuse_i.h          |  81 ++++++++-
 include/uapi/linux/fuse.h |   2 +
 4 files changed, 375 insertions(+), 55 deletions(-)

-- 
2.40.1





[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [NTFS 3]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [NTFS 3]     [Samba]     [Device Mapper]     [CEPH Development]

  Powered by Linux