FAILED: patch "[PATCH] selftests: mptcp: make sendfile selftest work" failed to apply to 5.15-stable tree
Subsystems (4)
[email protected]
maintainerThe patch below does not apply to the 5.15-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From df9e03aec3b14970df05b72d54f8ac9da3ab29e1 Mon Sep 17 00:00:00 2001
From: Florian Westphal <[email protected]>
Date: Thu, 4 Aug 2022 17:21:27 -0700
Subject: [PATCH] selftests: mptcp: make sendfile selftest work
When the selftest got added, sendfile() on mptcp sockets returned -EOPNOTSUPP, so running 'mptcp_connect.sh -m sendfile' failed immediately.
This is no longer the case, but the script fails anyway due to timeout. Let the receiver know once the sender has sent all data, just like with '-m mmap' mode.
v2: need to respect cfg_wait too, as pm_userspace.sh relied on -m sendfile to keep the connection open (Mat Martineau)
tools/testing/selftests/net/mptcp/mptcp_connect.c +17 -9
@@ -553,6 +553,18 @@ static void set_nonblock(int fd, bool nonblock)fcntl (fd,F_SETFL , flags & ~O_NONBLOCK ); } +static void shut_wr (int fd) +{ +/* Close our write side, ev. give some time +* for address notification and/or checking +* the current status +*/ +if (cfg_wait) +usleep (cfg_wait); + +shutdown (fd,SHUT_WR ); +} +static int copyfd_io_poll (int infd,int peerfd,int outfd,bool *in_closed_after_out) {struct pollfd fds = {
@@ -630,14 +642,7 @@ static int copyfd_io_poll(int infd, int peerfd, int outfd, bool *in_closed_after/* ... and peer also closed already */ break ; -/* ... but we still receive. -* Close our write side, ev. give some time -* for address notification and/or checking -* the current status -*/ -if (cfg_wait) -usleep (cfg_wait); -shutdown (peerfd,SHUT_WR ); +shut_wr (peerfd); }else {if (errno ==EINTR )continue ;
@@ -767,7 +772,7 @@ static int copyfd_io_mmap(int infd, int peerfd, int outfd,if (err)return err; -shutdown (peerfd,SHUT_WR ); +shut_wr (peerfd); err =do_recvfile (peerfd, outfd); *in_closed_after_out = true;
@@ -791,6 +796,9 @@ static int copyfd_io_sendfile(int infd, int peerfd, int outfd, err =do_sendfile (infd, peerfd, size);if (err)return err; + +shut_wr (peerfd); + err =do_recvfile (peerfd, outfd); *in_closed_after_out = true; }