title: Does Linux have zero-copy? splice or sendfile?
body: <p>When splice was introduced it was discussed on the kernel list that sendfile was re-implemented based off of splice. The documentation for splice SLICE_F_MOVE states:</p>
  
  <blockquote>
    <p>Attempt to move pages instead of copying.  This is
        only a hint to the kernel: pages may still be
        copied if the kernel cannot move the pages from
        the pipe, or if the pipe buffers don't refer to
        full pages.  The initial implementation of this
        flag was buggy: therefore starting in Linux 2.6.21
        it is a no-op (but is still permitted in a
        splice() call); in the future, a correct
        implementation may be restored.</p>
  </blockquote>
  
  <p>So does that mean Linux has no zero-copy method for writing to sockets? Or was this fixed at some point and nobody updated the documentation for years? Does either of sendfile or splice have a zero copy implementation in any of the latest 3.x kernel versions?</p>
  
  <p>Since Google has no answer to this query, I'm creating a stackoverflow question for the next poor schmuck who wants to know if there's any benefit to using vmsplice and splice or sendfile over plain old write.</p>