[$] Rethinking splice()

Post Syndicated from original https://lwn.net/Articles/923237/

The splice()
system call
is built on an appealing idea: connect two file descriptors
together so that data can be moved from one to the other without passing
through user space and, preferably, without being copied in the kernel.
splice() has enabled some significant performance optimizations
over the years, but it has also proved difficult to work with and
occasionally surprising. A recent linux-kernel discussion showed how
splice() can cause trouble, to the point that some developers now
wonder if adding it was a good idea.