[RFC PATCH v2 48/48] sock: Remove ->sendpage*() in favour of sendmsg(MSG_SPLICE_PAGES)

Hannes Reinecke hare at suse.de
Wed Mar 29 07:23:51 PDT 2023


On 3/29/23 16:13, David Howells wrote:
> [!] Note: This is a work in progress.  At the moment, some things won't
>      build if this patch is applied.  nvme, kcm, smc, tls.
> 
> Remove ->sendpage() and ->sendpage_locked().  sendmsg() with
> MSG_SPLICE_PAGES should be used instead.  This allows multiple pages and
> multipage folios to be passed through.
> 
> Signed-off-by: David Howells <dhowells at redhat.com>
> Acked-by: Marc Kleine-Budde <mkl at pengutronix.de> # for net/can
> cc: "David S. Miller" <davem at davemloft.net>
> cc: Eric Dumazet <edumazet at google.com>
> cc: Jakub Kicinski <kuba at kernel.org>
> cc: Paolo Abeni <pabeni at redhat.com>
> cc: Jens Axboe <axboe at kernel.dk>
> cc: Matthew Wilcox <willy at infradead.org>
> cc: bpf at vger.kernel.org
> cc: dccp at vger.kernel.org
> cc: linux-afs at lists.infradead.org
> cc: linux-arm-msm at vger.kernel.org
> cc: linux-can at vger.kernel.org
> cc: linux-crypto at vger.kernel.org
> cc: linux-doc at vger.kernel.org
> cc: linux-hams at vger.kernel.org
> cc: linux-kernel at vger.kernel.org
> cc: linux-rdma at vger.kernel.org
> cc: linux-sctp at vger.kernel.org
> cc: linux-wpan at vger.kernel.org
> cc: linux-x25 at vger.kernel.org
> cc: mptcp at lists.linux.dev
> cc: netdev at vger.kernel.org
> cc: rds-devel at oss.oracle.com
> cc: tipc-discussion at lists.sourceforge.net
> cc: virtualization at lists.linux-foundation.org
> ---
>   Documentation/networking/scaling.rst |   4 +-
>   crypto/af_alg.c                      |  29 ------
>   crypto/algif_aead.c                  |  22 +----
>   crypto/algif_rng.c                   |   2 -
>   crypto/algif_skcipher.c              |  14 ---
>   include/linux/net.h                  |   8 --
>   include/net/inet_common.h            |   2 -
>   include/net/sock.h                   |   6 --
>   net/appletalk/ddp.c                  |   1 -
>   net/atm/pvc.c                        |   1 -
>   net/atm/svc.c                        |   1 -
>   net/ax25/af_ax25.c                   |   1 -
>   net/caif/caif_socket.c               |   2 -
>   net/can/bcm.c                        |   1 -
>   net/can/isotp.c                      |   1 -
>   net/can/j1939/socket.c               |   1 -
>   net/can/raw.c                        |   1 -
>   net/core/sock.c                      |  35 +------
>   net/dccp/ipv4.c                      |   1 -
>   net/dccp/ipv6.c                      |   1 -
>   net/ieee802154/socket.c              |   2 -
>   net/ipv4/af_inet.c                   |  21 ----
>   net/ipv4/tcp.c                       |  34 -------
>   net/ipv4/tcp_bpf.c                   |  21 +---
>   net/ipv4/tcp_ipv4.c                  |   1 -
>   net/ipv4/udp.c                       |  22 -----
>   net/ipv4/udp_impl.h                  |   2 -
>   net/ipv4/udplite.c                   |   1 -
>   net/ipv6/af_inet6.c                  |   3 -
>   net/ipv6/raw.c                       |   1 -
>   net/ipv6/tcp_ipv6.c                  |   1 -
>   net/key/af_key.c                     |   1 -
>   net/l2tp/l2tp_ip.c                   |   1 -
>   net/l2tp/l2tp_ip6.c                  |   1 -
>   net/llc/af_llc.c                     |   1 -
>   net/mctp/af_mctp.c                   |   1 -
>   net/mptcp/protocol.c                 |   2 -
>   net/netlink/af_netlink.c             |   1 -
>   net/netrom/af_netrom.c               |   1 -
>   net/packet/af_packet.c               |   2 -
>   net/phonet/socket.c                  |   2 -
>   net/qrtr/af_qrtr.c                   |   1 -
>   net/rds/af_rds.c                     |   1 -
>   net/rose/af_rose.c                   |   1 -
>   net/rxrpc/af_rxrpc.c                 |   1 -
>   net/sctp/protocol.c                  |   1 -
>   net/socket.c                         |  48 ---------
>   net/tipc/socket.c                    |   3 -
>   net/unix/af_unix.c                   | 139 ---------------------------
>   net/vmw_vsock/af_vsock.c             |   3 -
>   net/x25/af_x25.c                     |   1 -
>   net/xdp/xsk.c                        |   1 -
>   52 files changed, 9 insertions(+), 447 deletions(-)
> 
Weelll ... what happens to consumers of kernel_sendpage()?
(Let's call them nvme ...)
Should they be moved over, too?

Or what is the general consensus here?

(And what do we do with TLS? It does have a ->sendpage() version, too ...)

Cheers,

Hannes




More information about the linux-afs mailing list