https://bugzilla.redhat.com/show_bug.cgi?id=1172015
The refactoring done as part of commit id '59446096' caused a regression
for the multi initiator IQN commit '6aabcb5b' because the sendtargets was
not done on/for the initiator IQN prior to login (or trying to disable
autologin)
Prior to that commit, the paths were essentially
virStorageBackendISCSIStartPool
virStorageBackendISCSILogin
virStorageBackendISCSIConnection
if initiatoriqn
virStorageBackendCreateIfaceIQN
Issue sendtargets
Perform --login
else
Issue sendtargets
Perform --login
After that commit:
virStorageBackendISCSIStartPool
Issue sendtargets
Call virStorageBackendISCSIConnection
If initiatoriqn
virStorageBackendCreateIfaceIQN
Perform --login
else
Perform --login
So for non initiator IQN paths, nothing changed. For the initiator path,
the --login fails as does any attempts to change autologin via "--op update
--name node.startup --value manual".
Signed-off-by: John Ferlan <jferlan(a)redhat.com>
---
NOTE:
I tried to move "Issue sendtargets" to inside virStorageBackendISCSIConnection;
however, that caused issues for my authenticated iSCSI pool. I have to assume
that sendtargets being run before the iscsiadm commands to set the auth data
require that sendtargets as well. So I just repeated the call for the very
specific case of after the CreateIfaceIQN succeeds.
src/util/viriscsi.c | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/src/util/viriscsi.c b/src/util/viriscsi.c
index ef8fb59..bd34fea 100644
--- a/src/util/viriscsi.c
+++ b/src/util/viriscsi.c
@@ -295,10 +295,17 @@ virISCSIConnection(const char *portal,
VIR_DEBUG("ifacename: '%s'", ifacename);
break;
case IQN_MISSING:
- if (virStorageBackendCreateIfaceIQN(initiatoriqn,
- &ifacename) != 0) {
+ if (virStorageBackendCreateIfaceIQN(initiatoriqn, &ifacename) != 0)
goto cleanup;
- }
+ /*
+ * iscsiadm doesn't let you send commands to the Interface IQN,
+ * unless you've first issued a 'sendtargets' command to the
+ * portal. Without the sendtargets all that is received is a
+ * "iscsiadm: No records found"
+ */
+ if (virISCSIScanTargets(portal, initiatoriqn, NULL, NULL) < 0)
+ goto cleanup;
+
break;
case IQN_ERROR:
default:
--
1.9.3