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-v3 Passes famfs smoke test on emulated dax device. Comments are welcome. Thanks, Miklos --- 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: replace exported dax_dev_get() with non-allocating dax_dev_find() 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/super.c | 40 ++++- fs/fuse/Makefile | 2 +- fs/fuse/backing.c | 305 +++++++++++++++++++++++++++++------- fs/fuse/dev.c | 24 +++ fs/fuse/dev.h | 3 + fs/fuse/dir.c | 3 +- fs/fuse/ext_map.c | 316 ++++++++++++++++++++++++++++++++++++++ fs/fuse/file.c | 18 ++- fs/fuse/fuse_i.h | 78 ++++++++-- fs/fuse/inode.c | 26 +++- fs/fuse/iomode.c | 116 ++++++++------ fs/fuse/notify.c | 75 +++++++++ fs/fuse/passthrough.c | 63 ++++---- include/linux/dax.h | 6 +- include/uapi/linux/fuse.h | 53 ++++++- 15 files changed, 965 insertions(+), 163 deletions(-) create mode 100644 fs/fuse/ext_map.c -- 2.54.0
