From 8ba2c0159fa0a97a5422fda71ec2b1c3963dcd7b Mon Sep 17 00:00:00 2001 From: Sudheer Mogilappagari Date: Thu, 6 Feb 2020 05:52:21 -0800 Subject: [PATCH] sock/posix: Set sendbuf and recvbuf before connect call For client side connections, SO_RCVBUF needs to set before connect call() so this patch moves those calls accordingly. Signed-off-by: Sudheer Mogilappagari Change-Id: Ifa8373145b3699e697e34e93132b5c006e7fbf83 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/757 Reviewed-by: Aleksey Marchuk Reviewed-by: Ziye Yang Reviewed-by: Shuhei Matsumoto Tested-by: SPDK CI Jenkins --- module/sock/posix/posix.c | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/module/sock/posix/posix.c b/module/sock/posix/posix.c index 8dd0886b9..4860d0a40 100644 --- a/module/sock/posix/posix.c +++ b/module/sock/posix/posix.c @@ -219,9 +219,8 @@ static struct spdk_posix_sock * _spdk_posix_sock_alloc(int fd) { struct spdk_posix_sock *sock; - int rc; #ifdef SPDK_ZEROCOPY - int flag; + int flag, rc; #endif sock = calloc(1, sizeof(*sock)); @@ -232,15 +231,6 @@ _spdk_posix_sock_alloc(int fd) sock->fd = fd; - rc = spdk_posix_sock_set_recvbuf(&sock->base, SO_RCVBUF_SIZE); - if (rc) { - /* Not fatal */ - } - - rc = spdk_posix_sock_set_sendbuf(&sock->base, SO_SNDBUF_SIZE); - if (rc) { - /* Not fatal */ - } #ifdef SPDK_ZEROCOPY /* Try to turn on zero copy sends */ @@ -264,7 +254,7 @@ spdk_posix_sock_create(const char *ip, int port, enum spdk_posix_sock_create_typ struct addrinfo hints, *res, *res0; int fd, flag; int val = 1; - int rc; + int rc, sz; if (ip == NULL) { return NULL; @@ -300,6 +290,19 @@ retry: /* error */ continue; } + + sz = SO_RCVBUF_SIZE; + rc = setsockopt(fd, SOL_SOCKET, SO_RCVBUF, &sz, sizeof(sz)); + if (rc) { + /* Not fatal */ + } + + sz = SO_SNDBUF_SIZE; + rc = setsockopt(fd, SOL_SOCKET, SO_SNDBUF, &sz, sizeof(sz)); + if (rc) { + /* Not fatal */ + } + rc = setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &val, sizeof val); if (rc != 0) { close(fd);