96 lines
3.7 KiB
Diff
96 lines
3.7 KiB
Diff
From: Fritz Elfert <fritz@fritz-elfert.de>
|
|
Date: Fri, 13 May 2016 11:19:09 -0400
|
|
Subject: [PATCH] util: Remove disabling of autologin for iscsi-targets
|
|
|
|
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.
|
|
|
|
(cherry picked from commit 56057900dc53df490d953d56de1195ebfa025bdd)
|
|
---
|
|
src/util/viriscsi.c | 30 ++----------------------------
|
|
tests/viriscsitest.c | 4 +++-
|
|
2 files changed, 5 insertions(+), 29 deletions(-)
|
|
|
|
diff --git a/src/util/viriscsi.c b/src/util/viriscsi.c
|
|
index 65a8677..f4e3254 100644
|
|
--- a/src/util/viriscsi.c
|
|
+++ b/src/util/viriscsi.c
|
|
@@ -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;
|
|
diff --git a/tests/viriscsitest.c b/tests/viriscsitest.c
|
|
index c697a4a..b5b0e20 100644
|
|
--- a/tests/viriscsitest.c
|
|
+++ b/tests/viriscsitest.c
|
|
@@ -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;
|