提交 ece35848 编写于 作者: D Dongmao Zhang 提交者: David Teigland

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: NDongmao Zhang <dmzhang@suse.com>
Signed-off-by: NDavid Teigland <teigland@redhat.com>
上级 374b1057
...@@ -649,6 +649,7 @@ static void process_sctp_notification(struct connection *con, ...@@ -649,6 +649,7 @@ static void process_sctp_notification(struct connection *con,
struct msghdr *msg, char *buf) struct msghdr *msg, char *buf)
{ {
union sctp_notification *sn = (union sctp_notification *)buf; union sctp_notification *sn = (union sctp_notification *)buf;
struct linger linger;
switch (sn->sn_header.sn_type) { switch (sn->sn_header.sn_type) {
case SCTP_SEND_FAILED: case SCTP_SEND_FAILED:
...@@ -727,6 +728,13 @@ static void process_sctp_notification(struct connection *con, ...@@ -727,6 +728,13 @@ static void process_sctp_notification(struct connection *con,
} }
add_sock(new_con->sock, new_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", log_print("connecting to %d sctp association %d",
nodeid, (int)sn->sn_assoc_change.sac_assoc_id); nodeid, (int)sn->sn_assoc_change.sac_assoc_id);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册