From 6d0aa552cc45209ab12a64f0470a115d09e597ce Mon Sep 17 00:00:00 2001 From: Hannes Reinecke Date: Thu, 24 Feb 2011 11:21:41 +0100 Subject: [PATCH] Retry initial connect failures If the initial connect fails we fail the login process right away ignoring node.session.initial_login_retry_max and node.conn[0].timeo.login_timeout. This patch has the initial connect process obey the iscsid.conf node.session.initial_login_retry_max count and the (node.conn[0].timeo.login_timeout * node.session.initial_login_retry_max) max wait time limit when the connect failure is returned immediately like is done with other connect failures. References: bnc#674652,bnc#600054 Signed-off-by: Mike Christie Signed-off-by: Hannes Reinecke diff --git a/usr/initiator.c b/usr/initiator.c index 9f9f970..b858272 100644 --- a/usr/initiator.c +++ b/usr/initiator.c @@ -2357,9 +2357,13 @@ session_login_task(node_rec_t *rec, queue_task_t *qtask) } conn->state = STATE_XPT_WAIT; + qtask->rsp.command = MGMT_IPC_SESSION_LOGIN; + qtask->rsp.err = MGMT_IPC_OK; if (iscsi_conn_connect(conn, qtask)) { - __session_destroy(session); - return MGMT_IPC_ERR_TRANS_FAILURE; + log_debug(4, "Initial connect failed. Waiting %u seconds " + "before trying to reconnect.", + ISCSI_CONN_ERR_REOPEN_DELAY); + queue_delayed_reopen(qtask, ISCSI_CONN_ERR_REOPEN_DELAY); } if (gettimeofday(&conn->initial_connect_time, NULL)) @@ -2367,8 +2371,6 @@ session_login_task(node_rec_t *rec, queue_task_t *qtask) "login errors iscsid may give up the initial " "login early. You should manually login."); - qtask->rsp.command = MGMT_IPC_SESSION_LOGIN; - qtask->rsp.err = MGMT_IPC_OK; return MGMT_IPC_OK; }