From: Amir Goldstein <amir73il@gmail.com>
To: Miklos Szeredi <miklos@szeredi.hu>
Cc: Bernd Schubert <bernd.schubert@fastmail.fm>,
linux-fsdevel@vger.kernel.org
Subject: [PATCH v15 0/9] FUSE passthrough for file io
Date: Tue, 6 Feb 2024 16:24:44 +0200 [thread overview]
Message-ID: <20240206142453.1906268-1-amir73il@gmail.com> (raw)
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
next reply other threads:[~2024-02-06 14:25 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-02-06 14:24 Amir Goldstein [this message]
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
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240206142453.1906268-1-amir73il@gmail.com \
--to=amir73il@gmail.com \
--cc=bernd.schubert@fastmail.fm \
--cc=linux-fsdevel@vger.kernel.org \
--cc=miklos@szeredi.hu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).