Commit 8a463114 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'dlm-4.18' of git://git.kernel.org/pub/scm/linux/kernel/git/teigland/linux-dlm

Pull dlm updates from David Teigland:
 "These three commits fix and clean up the flags dlm was using on its
  SCTP sockets. This improves performance and fixes some bad connection
  delays"

* tag 'dlm-4.18' of git://git.kernel.org/pub/scm/linux/kernel/git/teigland/linux-dlm:
  dlm: remove O_NONBLOCK flag in sctp_connect_to_sock
  dlm: make sctp_connect_to_sock() return in specified time
  dlm: fix a clerical error when set SCTP_NODELAY
parents 70499656 da3627c3
...@@ -1037,6 +1037,7 @@ static void sctp_connect_to_sock(struct connection *con) ...@@ -1037,6 +1037,7 @@ static void sctp_connect_to_sock(struct connection *con)
int result; int result;
int addr_len; int addr_len;
struct socket *sock; struct socket *sock;
struct timeval tv = { .tv_sec = 5, .tv_usec = 0 };
if (con->nodeid == 0) { if (con->nodeid == 0) {
log_print("attempt to connect sock 0 foiled"); log_print("attempt to connect sock 0 foiled");
...@@ -1080,11 +1081,22 @@ static void sctp_connect_to_sock(struct connection *con) ...@@ -1080,11 +1081,22 @@ static void sctp_connect_to_sock(struct connection *con)
log_print("connecting to %d", con->nodeid); log_print("connecting to %d", con->nodeid);
/* Turn off Nagle's algorithm */ /* Turn off Nagle's algorithm */
kernel_setsockopt(sock, SOL_TCP, TCP_NODELAY, (char *)&one, kernel_setsockopt(sock, SOL_SCTP, SCTP_NODELAY, (char *)&one,
sizeof(one)); sizeof(one));
/*
* Make sock->ops->connect() function return in specified time,
* since O_NONBLOCK argument in connect() function does not work here,
* then, we should restore the default value of this attribute.
*/
kernel_setsockopt(sock, SOL_SOCKET, SO_SNDTIMEO, (char *)&tv,
sizeof(tv));
result = sock->ops->connect(sock, (struct sockaddr *)&daddr, addr_len, result = sock->ops->connect(sock, (struct sockaddr *)&daddr, addr_len,
O_NONBLOCK); 0);
memset(&tv, 0, sizeof(tv));
kernel_setsockopt(sock, SOL_SOCKET, SO_SNDTIMEO, (char *)&tv,
sizeof(tv));
if (result == -EINPROGRESS) if (result == -EINPROGRESS)
result = 0; result = 0;
if (result == 0) if (result == 0)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment