From dff69584e02ea5c2c31f7efff2223eb72a4612dd Mon Sep 17 00:00:00 2001 From: Roy Shterman Date: Fri, 27 May 2016 18:47:19 +0300 Subject: [PATCH] Libiscsi: Adding disconnect function to transport abstraction all library: change disconnect to iscsi->t->disconnect 1. In TCP we need only to put -1 in fd and we don't have more transport resources. In future iSER we will need to clean resources and destroy the rdma connection. Signed-off-by: Roy Shterman --- include/iscsi-private.h | 1 + lib/socket.c | 11 +++++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/include/iscsi-private.h b/include/iscsi-private.h index 9e5f5ef..fef0cfc 100644 --- a/include/iscsi-private.h +++ b/include/iscsi-private.h @@ -391,6 +391,7 @@ struct iscsi_transport { int (*connect)(struct iscsi_context *iscsi, union socket_address *sa, int ai_family); int (*queue_pdu)(struct iscsi_context *iscsi, struct iscsi_pdu *pdu); struct iscsi_pdu* (*new_pdu)(struct iscsi_context *iscsi, size_t size); + int (*disconnect)(struct iscsi_context *iscsi); }; struct tcp_transport { diff --git a/lib/socket.c b/lib/socket.c index 71a715c..d72c3e8 100644 --- a/lib/socket.c +++ b/lib/socket.c @@ -367,8 +367,8 @@ iscsi_connect_async(struct iscsi_context *iscsi, const char *portal, return 0; } -int -iscsi_disconnect(struct iscsi_context *iscsi) +static int +iscsi_tcp_disconnect(struct iscsi_context *iscsi) { if (iscsi->fd == -1) { iscsi_set_error(iscsi, "Trying to disconnect " @@ -390,6 +390,12 @@ iscsi_disconnect(struct iscsi_context *iscsi) return 0; } +int +iscsi_disconnect(struct iscsi_context *iscsi) +{ + return iscsi->t->disconnect(iscsi); +} + int iscsi_get_fd(struct iscsi_context *iscsi) { @@ -1058,6 +1064,7 @@ void iscsi_init_tcp_transport(struct iscsi_context *iscsi) iscsi->t->connect = iscsi_tcp_connect; iscsi->t->queue_pdu = iscsi_tcp_queue_pdu; iscsi->t->new_pdu = iscsi_tcp_new_pdu; + iscsi->t->disconnect = iscsi_tcp_disconnect; return; }