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/jagalactic/famfs.git#master This patchset: git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse.git#for-next Passes famfs smoke test on emulated dax device. Comments are welcome. Thanks, Miklos --- Changes since v4: - extent array (John) - error out on truncate/hole punch on a dax backed file (Sashiko) - small fix (Sashiko) 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 (2): dax: add fsdev_dax_from_file() fuse: resolve extent maps in O(1) when possible 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 | 23 +++ drivers/dax/super.c | 5 +- fs/file.c | 1 + fs/fuse/Makefile | 2 +- fs/fuse/backing.c | 302 ++++++++++++++++++++++++------ fs/fuse/dev.c | 54 ++++-- fs/fuse/dev.h | 3 + fs/fuse/dir.c | 6 +- fs/fuse/ext_map.c | 376 ++++++++++++++++++++++++++++++++++++++ fs/fuse/file.c | 33 +++- fs/fuse/fuse_i.h | 79 +++++++- fs/fuse/inode.c | 25 ++- fs/fuse/iomode.c | 116 ++++++------ fs/fuse/notify.c | 75 ++++++++ fs/fuse/passthrough.c | 66 +++---- include/linux/dax.h | 3 +- include/uapi/linux/fuse.h | 53 +++++- 17 files changed, 1044 insertions(+), 178 deletions(-) create mode 100644 fs/fuse/ext_map.c -- 2.54.0
