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

Commit 8a463114 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
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
Loading
Loading
Loading
Loading
+14 −2
Original line number Diff line number Diff line
@@ -1037,6 +1037,7 @@ static void sctp_connect_to_sock(struct connection *con)
	int result;
	int addr_len;
	struct socket *sock;
	struct timeval tv = { .tv_sec = 5, .tv_usec = 0 };

	if (con->nodeid == 0) {
		log_print("attempt to connect sock 0 foiled");
@@ -1080,11 +1081,22 @@ static void sctp_connect_to_sock(struct connection *con)
	log_print("connecting to %d", con->nodeid);

	/* 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));

	/*
	 * 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,
				   O_NONBLOCK);
				   0);
	memset(&tv, 0, sizeof(tv));
	kernel_setsockopt(sock, SOL_SOCKET, SO_SNDTIMEO, (char *)&tv,
			  sizeof(tv));

	if (result == -EINPROGRESS)
		result = 0;
	if (result == 0)