Commits
Alexey Kuznetsov authored and Konstantin Khorenko committed 72dcce0c8d2
fs/fuse: enhanced splice support Unfortunately, existing support of splice in fuse is completely useless, it has many flaws, each of them is fatal, even taken separately. - it passes only single splice, which requires of user space to prepare one more splice to merge header. - ... and does not allow to use splices coming from TCP as they can be huge and do not fit to single pipe buffer. - it uses kvmalloc(!!!) for temp buffer, which is very expensive Nevertheless, using splices to transfer date from network is the only our chance to get some reasonable throughput. F.e. without splice we cannot saturate even single 100G ethernet. So, the following approach suggested, which is the simplest and the cleanest for FUSE_READ. Extend existing fuse reply messages, allowing it to carry metadata instead of data. Metadata is a list of pipe file descriptors, which can be processed one by one, sucking pages from them. Extensions are possible, though as it is now, only FUSE_READ needs this. One day we probably will want to use it with FUSE_IOCTL, other request types do not carry any significant data. With this patch we are finally able to saturate 100G ethernet, higher speeds are still not tested. https://pmc.acronis.work/browse/VSTOR-79527 Signed-off-by: Alexey Kuznetsov <kuznet@acronis.com> Feature: fuse: enhanced splice support