Re: [PATCH net-next v5 03/14] splice, net: Use sendmsg(MSG_SPLICE_PAGES) rather than ->sendpage()

From: Jakub Kicinski
Date: Wed Jun 07 2023 - 12:55:52 EST


On Wed, 7 Jun 2023 15:05:48 +0100 David Howells wrote:
> Replace generic_splice_sendpage() + splice_from_pipe + pipe_to_sendpage()
> with a net-specific handler, splice_to_socket(), that calls sendmsg() with
> MSG_SPLICE_PAGES set instead of calling ->sendpage().
>
> MSG_MORE is used to indicate if the sendmsg() is expected to be followed
> with more data.
>
> This allows multiple pipe-buffer pages to be passed in a single call in a
> BVEC iterator, allowing the processing to be pushed down to a loop in the
> protocol driver. This helps pave the way for passing multipage folios down
> too.
>
> Protocols that haven't been converted to handle MSG_SPLICE_PAGES yet should
> just ignore it and do a normal sendmsg() for now - although that may be a
> bit slower as it may copy everything.

Reviewed-by: Jakub Kicinski <kuba@xxxxxxxxxx>