Idea #21698
openResearch FUSE passthrough or splicing for FUSE v2
Updated by Peter Amstutz 6 months ago
From what I've been able to determine (documentation is limited) the way this works is that when a file open request happens, the FUSE daemon can say "this file is actually this other file over here" and return a file descriptor to the other file. Then the kernel essentially substitutes read/write operations on the FUSE file with operations on the real file.
https://github.com/libfuse/libfuse/pull/919
This doesn't really work for us except for situations where one block corresponds to one file.
Updated by Peter Amstutz 6 months ago
- Subject changed from Research FUSE passthrough for FUSE v2 to Research FUSE passthrough or splicing for FUSE v2
http://libfuse.github.io/doxygen/fuse__lowlevel_8h.html#a1242694fe0fb6e253a88b57795987302
Zero copy data transfer ("splicing") is possible when we write blocks to disk and read them back.
It isn't supported by python-llfuse, but is something to examine for "arv-client mount" -- this tells the kernel to go get the content to be returned by read() from a file descriptor instead of returning a buffer that has to be copied.