]> xenbits.xensource.com Git - libvirt.git/commitdiff
util: Remove disabling of autologin for iscsi-targets
authorFritz Elfert <fritz@fritz-elfert.de>
Fri, 13 May 2016 15:19:09 +0000 (11:19 -0400)
committerJohn Ferlan <jferlan@redhat.com>
Wed, 18 May 2016 12:29:24 +0000 (08:29 -0400)
https://bugzilla.redhat.com/show_bug.cgi?id=1331552

Instead of disabling auto-login of all scsi targets (even those
that do not "belong" to libvirt), use iscsiadm's "--op nonpersistent"
during discovery of iSCSI targets (e.g. "iscsiadm --mode discovery
--type sendtargets") in order to avoid the node database being altered
which led to the need for the "large hammer" approach taken by
commit id '3c12b654'.

This commit removes the virISCSITargetAutologin adjustment (eg. the setting
of node.startup to "manual"). The iscsiadm command has supported this mode
of operation as of commit id 'ad873767' to open-iscsi.

src/util/viriscsi.c
tests/viriscsitest.c

index 65a8677b65980b7b0936962d5474e8a51c23c046..f4e32540eb68f4b5f183f8248b0f8c7f230e8eaa 100644 (file)
@@ -390,24 +390,9 @@ virISCSIGetTargets(char **const groups,
 }
 
 
-static int
-virISCSITargetAutologin(const char *portal,
-                        const char *initiatoriqn,
-                        const char *target,
-                        bool enable)
-{
-    const char *extraargv[] = { "--op", "update",
-                                "--name", "node.startup",
-                                "--value", enable ? "automatic" : "manual",
-                                NULL };
-
-    return virISCSIConnection(portal, initiatoriqn, target, extraargv);
-}
-
-
 int
 virISCSIScanTargets(const char *portal,
-                    const char *initiatoriqn,
+                    const char *initiatoriqn ATTRIBUTE_UNUSED,
                     size_t *ntargetsret,
                     char ***targetsret)
 {
@@ -432,6 +417,7 @@ virISCSIScanTargets(const char *portal,
                                              "--mode", "discovery",
                                              "--type", "sendtargets",
                                              "--portal", portal,
+                                             "--op", "nonpersistent",
                                              NULL);
 
     memset(&list, 0, sizeof(list));
@@ -444,18 +430,6 @@ virISCSIScanTargets(const char *portal,
                            &list, NULL, NULL) < 0)
         goto cleanup;
 
-    for (i = 0; i < list.ntargets; i++) {
-        /* We have to ignore failure, because we can't undo
-         * the results of 'sendtargets', unless we go scrubbing
-         * around in the dirt in /var/lib/iscsi.
-         */
-        if (virISCSITargetAutologin(portal,
-                                    initiatoriqn,
-                                    list.targets[i], false) < 0)
-            VIR_WARN("Unable to disable auto-login on iSCSI target %s: %s",
-                     portal, list.targets[i]);
-    }
-
     if (ntargetsret && targetsret) {
         *ntargetsret = list.ntargets;
         *targetsret = list.targets;
index c697a4a8d867d2c1b58e1b23472b141790a6cc22..b5b0e203ed5c1a35ff247f47abae8077507b3c95 100644 (file)
@@ -90,7 +90,9 @@ static void testIscsiadmCb(const char *const*args,
                args[4] && STREQ(args[4], "sendtargets") &&
                args[5] && STREQ(args[5], "--portal") &&
                args[6] && STREQ(args[6], "10.20.30.40:3260,1") &&
-               args[7] == NULL) {
+               args[7] && STREQ(args[7], "--op") &&
+               args[8] && STREQ(args[8], "nonpersistent") &&
+               args[9] == NULL) {
         ignore_value(VIR_STRDUP(*output, iscsiadmSendtargetsOutput));
     } else {
         *status = -1;