Branch: refs/heads/dont-spin-enetunreach
Home: https://github.com/kronosnet/kronosnet
Commit: d2a30ac0135c15eebce25a89f943e9062e1b3f6c
https://github.com/kronosnet/kronosnet/commit/d2a30ac0135c15eebce25a89f943e…
Author: Christine Caulfield <ccaulfie(a)redhat.com>
Date: 2020-01-24 (Fri, 24 Jan 2020)
Changed paths:
M libknet/transport_udp.c
Log Message:
-----------
[udp] don't make socket spin if a network I/F is down
UDP treats ENETUNREACH as a temporary error and just retries,
but this causes the TX thread to spin just doing sendto() therefore
blocking all other traffic.
(To reproduce this try starting corosync with 2 links configured in
corosync.conf but only one of them configured to the 'right' address
- it will spin in a tight loop and need to be killed with -9)
SCTP does not seem to suffer from this.
Branch: refs/heads/dont-spin-enetunreach
Home: https://github.com/kronosnet/kronosnet
Commit: 5a11955f722dc950ab5fffaf074c8942d13bf86d
https://github.com/kronosnet/kronosnet/commit/5a11955f722dc950ab5fffaf074c8…
Author: Christine Caulfield <ccaulfie(a)redhat.com>
Date: 2020-01-24 (Fri, 24 Jan 2020)
Changed paths:
M libknet/transport_udp.c
Log Message:
-----------
[udp] don't make socket spin if a network I/F is down
UDP treats ENETUNREACH as a temporary error and just retries,
but this causes the TX thread to spin just doing sendto() therefore
blocking all other traffic.
(To reproduce this try starting corosync with 2 links configured in
corosync.conf but only one of them configured to the 'right' address
- it will spin in a tight loop and need to be killed with -9)
SCTP does not seem to suffer from this.
Branch: refs/heads/dont-spin-enetunreach
Home: https://github.com/kronosnet/kronosnet
Commit: e961b6bed9f3f2e3fee9720a984eb795d2bc31bb
https://github.com/kronosnet/kronosnet/commit/e961b6bed9f3f2e3fee9720a984eb…
Author: Christine Caulfield <ccaulfie(a)redhat.com>
Date: 2020-01-24 (Fri, 24 Jan 2020)
Changed paths:
M libknet/transport_udp.c
Log Message:
-----------
[udp] don't make socket spin if a network I/F is down
UDP treats ENETUNREACH as a temporary error and just retries,
but this causes the TX thread to spin just down sendto() therefore
blocking all other traffic.
(To reproduce this try starting corosync with 2 links configured in
corosync/conf but only one of them configured to the 'right' address
- it will spin in a tight loop and need to be killed with -9)
SCTP does not seem to suffer from this.
Branch: refs/heads/sctp-fixes
Home: https://github.com/kronosnet/kronosnet
Commit: 6108120eb3a646b7d504f58ed43dd8ecf3513baa
https://github.com/kronosnet/kronosnet/commit/6108120eb3a646b7d504f58ed43dd…
Author: Christine Caulfield <ccaulfie(a)redhat.com>
Date: 2020-01-24 (Fri, 24 Jan 2020)
Changed paths:
M libknet/transport_common.c
M libknet/transport_sctp.c
Log Message:
-----------
[rx] Don't return 512 EOF messages from _recvmmsg
If recvmsg() returns 0 for EOF then it's going to do so
until the error is rectified or read with getsockopt(). But
the _recvmmsg() wrapper keeps reading until the vector is full
thus returning a block of 512 EOF messages all of which the caller
has to plough through.
This patch causes _recvmmsg() to return as soon as it has got
the first EOF so the the caller can deal with it in good time
and not spin looking at the same thing over and over again.
I've also fixed a couple of typos in related comments
Commit: d2064731e8b778a9508fddaa1693ac22fec39ef8
https://github.com/kronosnet/kronosnet/commit/d2064731e8b778a9508fddaa1693a…
Author: Christine Caulfield <ccaulfie(a)redhat.com>
Date: 2020-01-24 (Fri, 24 Jan 2020)
Changed paths:
M libknet/transport_common.c
Log Message:
-----------
[tx] Don't Clear out msghdr for all transports.
When sending a message to multiple links, if one of those links
is not connection-oriented then msg_name & msg_namelen would be cleared,
thus breaking the send to any subsequent non-connection-oriented links.
So now, if we need to clear out msg_name & msg_namelen, we take a copy of the
msghdr and edit that instead,
Commit: 72156af66f90daf6e44010dd001fd561f49054e6
https://github.com/kronosnet/kronosnet/commit/72156af66f90daf6e44010dd001fd…
Author: Fabio M. Di Nitto <fdinitto(a)redhat.com>
Date: 2020-01-24 (Fri, 24 Jan 2020)
Changed paths:
M libknet/threads_rx.c
M libknet/transport_udp.c
M libknet/transports.h
Log Message:
-----------
[rx] use defines to determine RX data types vs random numbers
also extend a bit to make ready for SCTP extra return codes
Signed-off-by: Fabio M. Di Nitto <fdinitto(a)redhat.com>
Commit: 142f6fb4c758e99219cce5842e31eca327742c5d
https://github.com/kronosnet/kronosnet/commit/142f6fb4c758e99219cce5842e31e…
Author: Fabio M. Di Nitto <fdinitto(a)redhat.com>
Date: 2020-01-24 (Fri, 24 Jan 2020)
Changed paths:
M libknet/transport_sctp.c
Log Message:
-----------
[sctp] major surgery to use only SCTP events to determine socket status
- drop concept of on_connected_epoll to determine if socket is ready or not
- provide much better debugging output at all levels
- incorporate fix from Xin Long <lxin(a)redhat.com> to gather socket status
at the right time
- deal with a recent kernel change on SCTP socket that broke knet (from rhel7):
[net] sctp: allow delivering notifications after receiving SHUTDOWN
Signed-off-by: Fabio M. Di Nitto <fdinitto(a)redhat.com>
Compare: https://github.com/kronosnet/kronosnet/compare/60121cbf6cb5...142f6fb4c758