Signed-off-by: Alexander Nezhinsky <alexandern@xxxxxxxxxxxx> --- usr/Makefile | 6 +++--- usr/iscsi/iscsid.c | 10 +++++++++- usr/iscsi/iscsid.h | 6 ++++++ usr/list.h | 3 +++ 4 files changed, 21 insertions(+), 4 deletions(-) diff --git a/usr/Makefile b/usr/Makefile index 322ecfb..484d3f2 100644 --- a/usr/Makefile +++ b/usr/Makefile @@ -15,9 +15,9 @@ TGTD_OBJS += $(addprefix iscsi/, conn.o param.o session.o \ isns.o) TGTD_OBJS += bs_rdwr.o bs_aio.o -ifneq ($(ISCSI_RDMA),) -CFLAGS += -DISCSI_RDMA -TGTD_OBJS += iscsi/iscsi_rdma.o +ifneq ($(ISER),) +CFLAGS += -DISER +TGTD_OBJS += iscsi/iser.o iscsi/iser_text.o LIBS += -libverbs -lrdmacm endif diff --git a/usr/iscsi/iscsid.c b/usr/iscsi/iscsid.c index 3a79d93..dfed360 100644 --- a/usr/iscsi/iscsid.c +++ b/usr/iscsi/iscsid.c @@ -488,6 +488,14 @@ static void login_start(struct iscsi_connection *conn) conn->state = STATE_EXIT; return; } + if (target->rdma) { + eprintf("Target %s is RDMA, but conn cid:%d from %s is TCP\n", + target_name, conn->cid, conn->initiator); + rsp->status_class = ISCSI_STATUS_CLS_INITIATOR_ERR; + rsp->status_detail = ISCSI_LOGIN_STATUS_TGT_NOT_FOUND; + conn->state = STATE_EXIT; + return; + } conn->tid = target->tid; @@ -2285,7 +2293,7 @@ out: return ret; } -static int iscsi_transportid(int tid, uint64_t itn_id, char *buf, int size) +int iscsi_transportid(int tid, uint64_t itn_id, char *buf, int size) { struct iscsi_session *session; char *p; diff --git a/usr/iscsi/iscsid.h b/usr/iscsi/iscsid.h index 2a7a3f8..be585bb 100644 --- a/usr/iscsi/iscsid.h +++ b/usr/iscsi/iscsid.h @@ -214,6 +214,9 @@ struct iscsi_connection { #define STATE_CLOSE 10 #define STATE_EXIT 11 #define STATE_SCSI 12 +#define STATE_INIT 13 +#define STATE_START 14 +#define STATE_READY 15 #define AUTH_STATE_START 0 #define AUTH_STATE_CHALLENGE 1 @@ -254,6 +257,8 @@ struct iscsi_target { } redirect_info; struct list_head isns_list; + + int rdma; }; enum task_flags { @@ -296,6 +301,7 @@ extern void conn_read_pdu(struct iscsi_connection *conn); extern int iscsi_tx_handler(struct iscsi_connection *conn); extern void iscsi_rx_handler(struct iscsi_connection *conn); extern int iscsi_scsi_cmd_execute(struct iscsi_task *task); +extern int iscsi_transportid(int tid, uint64_t itn_id, char *buf, int size); /* iscsid.c iscsi_task */ extern void iscsi_free_task(struct iscsi_task *task); diff --git a/usr/list.h b/usr/list.h index f66ff36..2f80a56 100644 --- a/usr/list.h +++ b/usr/list.h @@ -43,6 +43,9 @@ static inline int list_empty(const struct list_head *head) #define list_for_each(pos, head) \ for (pos = (head)->next; pos != (head); pos = pos->next) +#define list_for_each_prev(pos, head) \ + for (pos = (head)->prev; pos != (head); pos = pos->prev) + #define list_for_each_entry(pos, head, member) \ for (pos = list_entry((head)->next, typeof(*pos), member); \ &pos->member != (head); \ -- 1.7.1 -- To unsubscribe from this list: send the line "unsubscribe stgt" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html