Messages in this thread | | | Date | Sun, 31 Mar 2013 21:23:54 +0000 | From | Eric Wong <> | Subject | Re: New copyfile system call - discuss before LSF? |
| |
Pavel Machek <pavel@ucw.cz> wrote: > Eric Wong wrote: > > [1] my splice() annoyances: > > * need to create/manage a pipe > > * copy size limited by pipe size > > * doesn't reduce userspace syscalls (just data copy overhead) > > * easy to misuse and starve with blocking sockets + big buffers > > * not many users, so bugs creep in (v3.7.8 was the first usable > > version of the 3.7 series for TCP sockets) > > Could library be created to make it less annoying to use, and harder > to misuse?
Maybe, but getting people to use the library would be the hard, too. And a library would not reduce syscalls in the common case.
We already have current->splice_pipe for sendfile, so maybe splice can be taught to transparently use that when neither FD is a pipe.
I also think a SPLICE_F_DONTWAIT flag might be necessary. It would be a superset of SPLICE_F_NONBLOCK, but also act like MSG_DONTWAIT for the non-pipe socket.
> splice man page does not mention pipe size limit...
It probably should. I think I discovered it by using it many years ago and burned it into my mind.
| |