This is the FUSIfication of the famfs-fuse patchset. - extent maps are assigned to a backing ID
- 64 bit backing ID's managed by server - maps can be linear or cyclic (striped) - API supports nesting, but not implemented yet (i.e. multiple striped extents per inode, a-la famfs) libfuse/famfs trees for testing: https://github.com/szmi/libfuse.git#extent-map-v3 https://github.com/szmi/famfs.git#extent-map-v3 This patchset: git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse.git#extent-map-v4 Passes famfs smoke test on emulated dax device. Comments are welcome. Thanks, Miklos --- Changes since v3: - redid the first patch (prompted by sashiko: passing dev_t is racy) - more fixes (John, Amir Sashiko) Changes since v2: - add a trivial prep patch modifying drivers/dax/super.c - reserve zero value for 64 bit backing ID (Amir) - add Originally-by: tag to acknowledge John's work - more fixes and cleanups (Amir, Sashiko) Changes since v1: - moved 3 prep patches to fuse.git#for-next - introduce FUSE_PASSTHROUGH_V2 (Amir) - lots of small fixes and cleanups (Amir, Sashiko) --- John Groves (1): dax: add fsdev_dax_from_file() Miklos Szeredi (8): dax: use READ_ONCE() in dax_holder() fuse: add helpers for EIO return value with kernel message fuse: support 64 bit, server allocated backing ID fuse: support opening 64 bit backing ID fuse: add support for opening dax device as backing fuse: add extent map data structure fuse: add extent map I/O support fuse: add support for striped backing drivers/dax/fsdev.c | 24 +++ drivers/dax/super.c | 5 +- fs/file.c | 1 + fs/fuse/Makefile | 2 +- fs/fuse/backing.c | 303 +++++++++++++++++++++++++++++------- fs/fuse/dev.c | 54 +++++-- fs/fuse/dev.h | 3 + fs/fuse/dir.c | 3 +- fs/fuse/ext_map.c | 319 ++++++++++++++++++++++++++++++++++++++ fs/fuse/file.c | 25 ++- fs/fuse/fuse_i.h | 75 +++++++-- fs/fuse/inode.c | 25 ++- fs/fuse/iomode.c | 116 ++++++++------ fs/fuse/notify.c | 75 +++++++++ fs/fuse/passthrough.c | 63 ++++---- include/linux/dax.h | 3 +- include/uapi/linux/fuse.h | 53 ++++++- 17 files changed, 971 insertions(+), 178 deletions(-) create mode 100644 fs/fuse/ext_map.c -- 2.54.0
