iscsi-initiator-utils/iscsi-initiator-utils-use-new-tpgt.patch
2008-02-06 21:02:29 +00:00

111 lines
4.0 KiB
Diff

diff -aurp open-iscsi-2.0-868-test1.orig/usr/discovery.c open-iscsi-2.0-868-test1/usr/discovery.c
--- open-iscsi-2.0-868-test1.orig/usr/discovery.c 2008-01-23 12:13:55.000000000 -0600
+++ open-iscsi-2.0-868-test1/usr/discovery.c 2008-01-23 12:14:25.000000000 -0600
@@ -981,7 +981,6 @@ redirect_reconnect:
break;
case LOGIN_IO_ERROR:
- case LOGIN_WRONG_PORTAL_GROUP:
case LOGIN_REDIRECTION_FAILED:
/* try again */
log_warning("retrying discovery login to %s", host);
diff -aurp open-iscsi-2.0-868-test1.orig/usr/initiator.c open-iscsi-2.0-868-test1/usr/initiator.c
--- open-iscsi-2.0-868-test1.orig/usr/initiator.c 2008-01-23 12:13:55.000000000 -0600
+++ open-iscsi-2.0-868-test1/usr/initiator.c 2008-01-23 12:14:25.000000000 -0600
@@ -149,7 +149,6 @@ __login_response_status(iscsi_conn_t *co
case LOGIN_REDIRECT:
return CONN_LOGIN_IMM_REDIRECT_RETRY;
case LOGIN_IO_ERROR:
- case LOGIN_WRONG_PORTAL_GROUP:
case LOGIN_REDIRECTION_FAILED:
return CONN_LOGIN_RETRY;
default:
diff -aurp open-iscsi-2.0-868-test1.orig/usr/initiator.h open-iscsi-2.0-868-test1/usr/initiator.h
--- open-iscsi-2.0-868-test1.orig/usr/initiator.h 2008-01-23 12:13:55.000000000 -0600
+++ open-iscsi-2.0-868-test1/usr/initiator.h 2008-01-23 12:14:25.000000000 -0600
@@ -75,10 +75,9 @@ enum iscsi_login_status {
LOGIN_VERSION_MISMATCH = 3,
LOGIN_NEGOTIATION_FAILED = 4,
LOGIN_AUTHENTICATION_FAILED = 5,
- LOGIN_WRONG_PORTAL_GROUP = 6,
- LOGIN_REDIRECTION_FAILED = 7,
- LOGIN_INVALID_PDU = 8,
- LOGIN_REDIRECT = 9,
+ LOGIN_REDIRECTION_FAILED = 6,
+ LOGIN_INVALID_PDU = 7,
+ LOGIN_REDIRECT = 8,
};
typedef enum iscsi_event_e {
diff -aurp open-iscsi-2.0-868-test1.orig/usr/login.c open-iscsi-2.0-868-test1/usr/login.c
--- open-iscsi-2.0-868-test1.orig/usr/login.c 2008-01-23 12:13:55.000000000 -0600
+++ open-iscsi-2.0-868-test1/usr/login.c 2008-01-23 12:14:25.000000000 -0600
@@ -264,24 +264,20 @@ get_security_text_keys(iscsi_session_t *
&value, &value_end)) {
/*
* We should have already obtained this
- * via discovery.
- * We've already picked an isid, so the
- * most we can do is confirm we reached
- * the portal group we were expecting to
+ * via discovery, but the value could be stale.
+ * If the target was reconfigured it will send us
+ * the updated tpgt.
*/
tag = strtoul(value, NULL, 0);
if (session->portal_group_tag >= 0) {
- if (tag != session->portal_group_tag) {
- log_error("Portal group tag "
+ if (tag != session->portal_group_tag)
+ log_debug(2, "Portal group tag "
"mismatch, expected %u, "
- "received %u",
+ "received %u. Updating",
session->portal_group_tag, tag);
- return LOGIN_WRONG_PORTAL_GROUP;
- }
- } else
- /* we now know the tag */
- session->portal_group_tag = tag;
-
+ }
+ /* we now know the tag */
+ session->portal_group_tag = tag;
text = value_end;
} else {
/*
@@ -339,21 +335,22 @@ get_op_params_text_keys(iscsi_session_t
}
} else if (iscsi_find_key_value("TargetPortalGroupTag", text, end,
&value, &value_end)) {
+ int tag = strtoul(value, NULL, 0);
/*
- * confirm we reached the portal group we were expecting to
+ * We should have already obtained this
+ * via discovery, but the value could be stale.
+ * If the target was reconfigured it will send us
+ * the updated tpgt.
*/
- int tag = strtoul(value, NULL, 0);
if (session->portal_group_tag >= 0) {
- if (tag != session->portal_group_tag) {
- log_error("Portal group tag mismatch, "
- "expected %u, received %u",
+ if (tag != session->portal_group_tag)
+ log_debug(2, "Portal group tag "
+ "mismatch, expected %u, "
+ "received %u. Updating",
session->portal_group_tag, tag);
- return LOGIN_WRONG_PORTAL_GROUP;
- }
- } else
- /* we now know the tag */
- session->portal_group_tag = tag;
-
+ }
+ /* we now know the tag */
+ session->portal_group_tag = tag;
text = value_end;
} else if (iscsi_find_key_value("InitialR2T", text, end, &value,
&value_end)) {