Re: Splicing to/from a tty

From: Willy Tarreau
Date: Thu Jan 21 2021 - 01:07:29 EST


On Wed, Jan 20, 2021 at 07:38:38PM -0800, Linus Torvalds wrote:
> On Wed, Jan 20, 2021 at 5:45 PM Al Viro <viro@xxxxxxxxxxxxxxxxxx> wrote:
> >
> > splice() triggers an error for seekable destination with O_APPEND and
> > with NULL off_out.
>
> Ok, that's just broken.
>
> > Same for splice() to socket with
> > fcntl(sock_fd, F_SETFL, O_APPEND);
> > done first.
>
> Same.
>
> As long as you don't pass a position pointer, I think both should just work.
>
> Not that I imagine it matters for a lot of people..

I think that most users of splice() on sockets got used to falling back
to recv/send on splice failure due to various cases not being supported
historically (UNIX family sockets immediately come to my mind but I seem
to remember other combinations). Thus I guess that most users of splice()
detect that it doesn't work either due to lower than expected performance
or while running strace.

Willy