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@xxxxxxxxx/ [2] https://lore.kernel.org/linux-fsdevel/20240131230827.207552-1-bschubert@xxxxxxx/ [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