linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v15 0/9] FUSE passthrough for file io
@ 2024-02-06 14:24 Amir Goldstein
  2024-02-06 14:24 ` [PATCH v15 1/9] fuse: factor out helper for FUSE_DEV_IOC_CLONE Amir Goldstein
                   ` (8 more replies)
  0 siblings, 9 replies; 27+ messages in thread
From: Amir Goldstein @ 2024-02-06 14:24 UTC (permalink / raw)
  To: Miklos Szeredi; +Cc: Bernd Schubert, linux-fsdevel

Miklos,

The fuse passthrough code of v14 patches [1] was failing some tests
that did mmaped write and failed due to stale attribute cache.

To resolve that issue and to clarify semantics, I worked together with
Bernd to implement inode io modes [2].

When a FUSE inode is open in passthrough mode, it cannot be opened
in caching mode and that inode has an associated backing file, which
is like an O_PATH file to hold a reference to the backing inode.

That backing inode is used by the last patch to auto-invalidate inode
attributes in passthrough mode to fix the failing tests.
In theory, the backing inode could be used to copy the attributes to
FUSE inode (overlayfs style), but the code leaves GETATTR in the hands
of the server, in case backing inode and FUSE inode attributes differ.

These patches are based on my latest fuse_io_mode branch [3], where
I have addressed your comments on my patch in Bernd's v2 patches,
including all requested cleanups.

I was going to wait for Bernd to test and re-post the io mode patches,
but since you said that you really hope we can get fuse-backing-fd [4]
into shape for the next merge window, I decided to post the patches.

Thanks,
Amir.

Changes since v14:
- backing_file helpers already merged
- Remove readdir passthrough
- Associate backing file to inode
- Use io modes to prevent open of inode in conflicting modes
- Prevent open of inodes with conflicting backing files
- Auto-invalidate inode attributes in passthrough mode

[1] https://lore.kernel.org/linux-fsdevel/20231016160902.2316986-1-amir73il@gmail.com/
[2] https://lore.kernel.org/linux-fsdevel/20240131230827.207552-1-bschubert@ddn.com/
[3] https://github.com/amir73il/linux/commits/fuse_io_mode-060224
[4] https://github.com/amir73il/linux/commits/fuse-backing-fd-v15

Amir Goldstein (9):
  fuse: factor out helper for FUSE_DEV_IOC_CLONE
  fuse: introduce FUSE_PASSTHROUGH capability
  fuse: implement ioctls to manage backing files
  fuse: prepare for opening file in passthrough mode
  fuse: implement open in passthrough mode
  fuse: implement read/write passthrough
  fuse: implement splice read/write passthrough
  fuse: implement passthrough for mmap
  fuse: auto-invalidate inode attributes in passthrough mode

 fs/fuse/Kconfig           |  11 +
 fs/fuse/Makefile          |   1 +
 fs/fuse/dev.c             |  98 ++++++---
 fs/fuse/dir.c             |  16 +-
 fs/fuse/file.c            |  99 ++++++---
 fs/fuse/fuse_i.h          | 118 ++++++++++-
 fs/fuse/inode.c           |  35 ++++
 fs/fuse/iomode.c          | 105 ++++++++--
 fs/fuse/passthrough.c     | 410 ++++++++++++++++++++++++++++++++++++++
 include/uapi/linux/fuse.h |  23 ++-
 10 files changed, 838 insertions(+), 78 deletions(-)
 create mode 100644 fs/fuse/passthrough.c

-- 
2.34.1


^ permalink raw reply	[flat|nested] 27+ messages in thread

end of thread, other threads:[~2024-05-09 14:32 UTC | newest]

Thread overview: 27+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-02-06 14:24 [PATCH v15 0/9] FUSE passthrough for file io Amir Goldstein
2024-02-06 14:24 ` [PATCH v15 1/9] fuse: factor out helper for FUSE_DEV_IOC_CLONE Amir Goldstein
2024-02-06 14:24 ` [PATCH v15 2/9] fuse: introduce FUSE_PASSTHROUGH capability Amir Goldstein
2024-02-06 14:24 ` [PATCH v15 3/9] fuse: implement ioctls to manage backing files Amir Goldstein
2024-02-28 10:50   ` Jingbo Xu
2024-02-28 11:07     ` Amir Goldstein
2024-02-28 11:14       ` Miklos Szeredi
2024-02-28 11:28         ` Amir Goldstein
2024-02-28 14:32           ` Jens Axboe
2024-02-28 15:01             ` Miklos Szeredi
2024-02-28 15:05               ` Jens Axboe
2024-02-28 16:21               ` Amir Goldstein
2024-02-29 10:15               ` Christian Brauner
2024-02-29 10:17                 ` Christian Brauner
2024-03-05 10:57                   ` Miklos Szeredi
2024-02-28 13:22         ` Bernd Schubert
2024-02-06 14:24 ` [PATCH v15 4/9] fuse: prepare for opening file in passthrough mode Amir Goldstein
2024-02-06 14:24 ` [PATCH v15 5/9] fuse: implement open " Amir Goldstein
2024-02-06 14:24 ` [PATCH v15 6/9] fuse: implement read/write passthrough Amir Goldstein
2024-02-06 14:24 ` [PATCH v15 7/9] fuse: implement splice " Amir Goldstein
2024-02-06 14:24 ` [PATCH v15 8/9] fuse: implement passthrough for mmap Amir Goldstein
2024-02-06 14:24 ` [PATCH v15 9/9] fuse: auto-invalidate inode attributes in passthrough mode Amir Goldstein
2024-04-02 20:13   ` Sweet Tea Dorminy
2024-04-02 21:18     ` Bernd Schubert
2024-04-03  8:18       ` Amir Goldstein
2024-04-04 14:07         ` Sweet Tea Dorminy
2024-05-09 14:32           ` Amir Goldstein

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).