
V2: Set CONFIG_FUSE_PASSTHROUGH=y in openeuler_defconfig. Amir Goldstein (57): fs: rename __mnt_{want,drop}_write*() helpers fs: export mnt_{get,put}_write_access() to modules 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 ovl: use simpler function to convert iocb to rw flags ovl: propagate IOCB_APPEND flag on writes to realfile ovl: punt write aio completion to workqueue ovl: protect copying of realinode attributes to ovl inode fs: get mnt_writers count for an open backing file's real path fs: create helper file_user_path() for user displayed mapped file path fs: store real path instead of fake path in backing file f_path ovl: add helper ovl_file_modified() ovl: split ovl_want_write() into two helpers ovl: reorder ovl_want_write() after ovl_inode_lock() ovl: do not open/llseek lower file with upper sb_writers held ovl: do not encode lower fh with upper sb_writers held ovl: add permission hooks outside of do_splice_direct() splice: remove permission hook from do_splice_direct() splice: move permission hook out of splice_direct_to_actor() splice: move permission hook out of splice_file_to_pipe() splice: remove permission hook from iter_file_splice_write() remap_range: move permission hooks out of do_clone_file_range() remap_range: move file_start_write() to after permission hook btrfs: move file_start_write() to after permission hook coda: change locking order in coda_file_write_iter() fs: move file_start_write() into vfs_iter_write() fs: move permission hook out of do_iter_write() fs: move permission hook out of do_iter_read() fs: move kiocb_start_write() into vfs_iocb_iter_write() fs: create __sb_write_started() helper fs: create file_write_started() helper fs: create {sb,file}_write_not_started() helpers fs: prepare for stackable filesystems backing file helpers fs: factor out backing_file_{read,write}_iter() helpers fs: factor out backing_file_splice_{read,write}() helpers fs: factor out backing_file_mmap() helper 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: fix wrong ff->iomode state changes from parallel dio write fuse: fix parallel dio write on file open in passthrough mode fuse: verify zero padding in fuse_backing_map fuse: respect FOPEN_KEEP_CACHE on opendir ovl: fix dentry reference leak after changes to underlying layers ovl: relax WARN_ON in ovl_verify_area() remap_range: merge do_clone_file_range() into vfs_clone_file_range() fs: pass offset and result to backing_file end_write() callback fuse: update inode size after extending passthrough write Bernd Schubert (3): fuse: create helper function if DIO write needs exclusive lock fuse: add fuse_dio_lock/unlock helper functions fuse: disable the combination of passthrough and writeback cache Ed Tsai (1): backing-file: convert to using fops->splice_write Vegard Nossum (1): fs: fix __sb_write_started() kerneldoc formatting yangyun (1): fuse: use exclusive lock when FUSE_I_CACHE_IO_MODE is set fs/fuse/fuse_i.h | 151 +++++++++++-- fs/internal.h | 21 +- fs/overlayfs/overlayfs.h | 38 +++- include/linux/backing-file.h | 42 ++++ include/linux/fs.h | 89 ++++++-- include/linux/fsnotify.h | 3 +- include/linux/mount.h | 4 +- include/uapi/linux/fuse.h | 23 +- arch/arc/kernel/troubleshoot.c | 6 +- drivers/block/loop.c | 2 - drivers/target/target_core_file.c | 10 +- fs/backing-file.c | 339 ++++++++++++++++++++++++++++ fs/btrfs/ioctl.c | 12 +- fs/cachefiles/io.c | 5 +- fs/coda/file.c | 2 - fs/file_table.c | 12 +- fs/fuse/dev.c | 98 +++++--- fs/fuse/dir.c | 49 +++- fs/fuse/file.c | 362 ++++++++++++++++++++---------- fs/fuse/inode.c | 37 +++ fs/fuse/iomode.c | 276 +++++++++++++++++++++++ fs/fuse/passthrough.c | 355 +++++++++++++++++++++++++++++ fs/inode.c | 8 +- fs/namespace.c | 36 +-- fs/nfsd/vfs.c | 7 +- fs/open.c | 70 +++--- fs/overlayfs/copy_up.c | 168 +++++++++----- fs/overlayfs/dir.c | 60 +++-- fs/overlayfs/export.c | 7 +- fs/overlayfs/file.c | 230 ++++--------------- fs/overlayfs/inode.c | 57 +++-- fs/overlayfs/namei.c | 37 ++- fs/overlayfs/super.c | 47 ++-- fs/overlayfs/util.c | 75 ++++++- fs/proc/base.c | 2 +- fs/proc/nommu.c | 2 +- fs/proc/task_mmu.c | 4 +- fs/proc/task_nommu.c | 2 +- fs/read_write.c | 156 ++++++++----- fs/remap_range.c | 44 ++-- fs/splice.c | 82 ++++--- fs/super.c | 1 + kernel/acct.c | 4 +- kernel/trace/trace_output.c | 2 +- MAINTAINERS | 9 + fs/Kconfig | 4 + fs/Makefile | 1 + fs/fuse/Kconfig | 11 + fs/fuse/Makefile | 2 + fs/overlayfs/Kconfig | 1 + 50 files changed, 2290 insertions(+), 775 deletions(-) create mode 100644 include/linux/backing-file.h create mode 100644 fs/backing-file.c create mode 100644 fs/fuse/iomode.c create mode 100644 fs/fuse/passthrough.c -- 2.39.2