From 729251692facf4215fe3349947e0426799f5169f Mon Sep 17 00:00:00 2001 From: John Ferlan Date: Dec 10 2014 11:58:37 +0000 Subject: viriscsi: Need to sendtargets on Initiator IQN 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". --- 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: