rsplice would serve a similar purpose as splice, but in the other direction. I.e. instead of operating on buffers filled with data, it would operate on empty buffers to be filled with data. rsplice is to splice as read is to write. data source -> splice -> data destination data destination -> rsplice -> data source One use case would be zero-copy read in fuse. Zero-copy writes work with plain splice: page cache pages or userspace buffers are passed through to the userspace filesystem server as pipe buffers and they can be directed wherever the filesystem wants. The reverse doesn't work. There's code to attempt stealing pages and inserting into the fuse page cache, but this is far from being as generic as the write path. What do people think? Is this crazy? Are there major roadblocks for implementation? Would this have any other use cases? To me it looks like this is pretty symmetrical with normal splice, the big difference being that uninitialized buffers would be passed around. Obviously must make sure those buffers are write only, i.e. the previous contents are inaccessible. Thanks, Miklos