[stgt] [PATCH 07/14] tgt: BSD builds, some setsockopt are not supported

Boaz Harrosh bharrosh at panasas.com
Mon Feb 23 19:04:31 CET 2009


Some setsockopt() options are not defined or supported
in BSD. This patch #ifdef's those unseported options.

[ Alternativly we can overide setsockopt() to an internal
  routine and define these Linux options to be some elegal
  value (like 0), Then if the option is 0 just return
  with no error, else call the original function.]

Signed-off-by: Boaz Harrosh <bharrosh at panasas.com>
---
 usr/iscsi/iscsi_tcp.c |   15 +++++++++++++--
 1 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/usr/iscsi/iscsi_tcp.c b/usr/iscsi/iscsi_tcp.c
index bee2145..e730101 100644
--- a/usr/iscsi/iscsi_tcp.c
+++ b/usr/iscsi/iscsi_tcp.c
@@ -66,6 +66,7 @@ static int set_keepalive(int fd)
 	if (ret)
 		return ret;
 
+#ifndef __MAKE_TGT_ON_BSD__
 	opt = 1800;
 	ret = setsockopt(fd, IPPROTO_TCP, TCP_KEEPIDLE, &opt, sizeof(opt));
 	if (ret)
@@ -80,6 +81,7 @@ static int set_keepalive(int fd)
 	ret = setsockopt(fd, IPPROTO_TCP, TCP_KEEPINTVL, &opt, sizeof(opt));
 	if (ret)
 		return ret;
+#endif
 
 	return 0;
 }
@@ -279,18 +281,27 @@ static size_t iscsi_tcp_write_begin(struct iscsi_connection *conn, void *buf,
 				    size_t nbytes)
 {
 	struct iscsi_tcp_connection *tcp_conn = TCP_CONN(conn);
-	int opt = 1;
 
-	setsockopt(tcp_conn->fd, SOL_TCP, TCP_CORK, &opt, sizeof(opt));
+#ifndef __MAKE_TGT_ON_BSD__
+	{
+		int opt = 1;
+		setsockopt(tcp_conn->fd, SOL_TCP, TCP_CORK, &opt, sizeof(opt));
+	}
+#endif
+
+	dprintf("fd=%d buf=%p nbytes=%zd\n", tcp_conn->fd, buf, nbytes);
 	return write(tcp_conn->fd, buf, nbytes);
 }
 
 static void iscsi_tcp_write_end(struct iscsi_connection *conn)
 {
+#ifndef __MAKE_TGT_ON_BSD__
 	struct iscsi_tcp_connection *tcp_conn = TCP_CONN(conn);
 	int opt = 0;
 
 	setsockopt(tcp_conn->fd, SOL_TCP, TCP_CORK, &opt, sizeof(opt));
+	dprintf("iscsi_tcp_write_end\n");
+#endif
 }
 
 static size_t iscsi_tcp_close(struct iscsi_connection *conn)
-- 
1.6.0.6

--
To unsubscribe from this list: send the line "unsubscribe stgt" in
the body of a message to majordomo at vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html



More information about the stgt mailing list