--- glusterfs-2.0.1/transport/socket/src/socket.c 2009-05-08 15:11:55.000000000 +0100 +++ glusterfs-2.0.1-erik/transport/socket/src/socket.c 2009-06-04 17:26:54.000000000 +0100 @@ -36,6 +36,11 @@ #include #include +#ifdef GF_LINUX_HOST_OS +#include +#else +#include +#endif #define GF_LOG_ERRNO(errno) ((errno == ENOTCONN) ? GF_LOG_DEBUG : GF_LOG_ERROR) #define SA(ptr) ((struct sockaddr *)ptr) @@ -197,6 +202,14 @@ strerror (errno)); } + ret = setsockopt(priv->sock, IPPROTO_TCP, TCP_NODELAY, (char *) &opt, sizeof(opt)); + + if (ret == -1) { + gf_log (this->xl->name, GF_LOG_ERROR, + "setsockopt() for TCP_NODELAY failed (%s)", + strerror (errno)); + } + ret = bind (priv->sock, (struct sockaddr *)&this->myinfo.sockaddr, this->myinfo.sockaddr_len); @@ -941,6 +954,7 @@ { int ret = -1; int sock = -1; + int opt = 1; socket_private_t *priv = NULL; struct sockaddr_storage sockaddr = {0, }; socklen_t sockaddr_len = 0; @@ -1022,6 +1036,15 @@ goto unlock; } + ret = setsockopt(priv->sock, IPPROTO_TCP, TCP_NODELAY, (char *) &opt, sizeof(opt)); + + if (ret == -1) { + gf_log (this->xl->name, GF_LOG_ERROR, + "setsockopt() for TCP_NODELAY failed (%s)", + strerror (errno)); + } + + ret = connect (priv->sock, SA (&this->peerinfo.sockaddr), this->peerinfo.sockaddr_len);