Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ece35848 authored by Dongmao Zhang's avatar Dongmao Zhang Committed by David Teigland
Browse files

dlm: set zero linger time on sctp socket



The recovery time for a failed node was taking a long
time because the failed node could not perform the full
shutdown process.  Removing the linger time speeds this
up.  The dlm does not care what happens to messages to
or from the failed node.

Signed-off-by: default avatarDongmao Zhang <dmzhang@suse.com>
Signed-off-by: default avatarDavid Teigland <teigland@redhat.com>
parent 374b1057
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -649,6 +649,7 @@ static void process_sctp_notification(struct connection *con,
				      struct msghdr *msg, char *buf)
{
	union sctp_notification *sn = (union sctp_notification *)buf;
	struct linger linger;

	switch (sn->sn_header.sn_type) {
	case SCTP_SEND_FAILED:
@@ -727,6 +728,13 @@ static void process_sctp_notification(struct connection *con,
			}
			add_sock(new_con->sock, new_con);

			linger.l_onoff = 1;
			linger.l_linger = 0;
			ret = kernel_setsockopt(new_con->sock, SOL_SOCKET, SO_LINGER,
						(char *)&linger, sizeof(linger));
			if (ret < 0)
				log_print("set socket option SO_LINGER failed");

			log_print("connecting to %d sctp association %d",
				 nodeid, (int)sn->sn_assoc_change.sac_assoc_id);