util: iscsi: use two vars in CreateIfaceIQN

Do not mix automatic and manual cleanup.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
Ján Tomko 2021-12-10 17:25:04 +01:00
parent 1b5510c42d
commit 9abf18ace7

View File

@ -208,7 +208,8 @@ virStorageBackendCreateIfaceIQN(const char *initiatoriqn,
int exitstatus = -1; int exitstatus = -1;
g_autofree char *iface_name = NULL; g_autofree char *iface_name = NULL;
g_autofree char *temp_ifacename = NULL; g_autofree char *temp_ifacename = NULL;
g_autoptr(virCommand) cmd = NULL; g_autoptr(virCommand) newcmd = NULL;
g_autoptr(virCommand) updatecmd = NULL;
temp_ifacename = g_strdup_printf("libvirt-iface-%08llx", temp_ifacename = g_strdup_printf("libvirt-iface-%08llx",
(unsigned long long)virRandomBits(32)); (unsigned long long)virRandomBits(32));
@ -216,35 +217,34 @@ virStorageBackendCreateIfaceIQN(const char *initiatoriqn,
VIR_DEBUG("Attempting to create interface '%s' with IQN '%s'", VIR_DEBUG("Attempting to create interface '%s' with IQN '%s'",
temp_ifacename, initiatoriqn); temp_ifacename, initiatoriqn);
cmd = virCommandNewArgList(ISCSIADM, newcmd = virCommandNewArgList(ISCSIADM,
"--mode", "iface", "--mode", "iface",
"--interface", temp_ifacename, "--interface", temp_ifacename,
"--op", "new", "--op", "new",
NULL); NULL);
/* Note that we ignore the exitstatus. Older versions of iscsiadm /* Note that we ignore the exitstatus. Older versions of iscsiadm
* tools returned an exit status of > 0, even if they succeeded. * tools returned an exit status of > 0, even if they succeeded.
* We will just rely on whether the interface got created * We will just rely on whether the interface got created
* properly. */ * properly. */
if (virCommandRun(cmd, &exitstatus) < 0) { if (virCommandRun(newcmd, &exitstatus) < 0) {
virReportError(VIR_ERR_INTERNAL_ERROR, virReportError(VIR_ERR_INTERNAL_ERROR,
_("Failed to run command '%s' to create new iscsi interface"), _("Failed to run command '%s' to create new iscsi interface"),
ISCSIADM); ISCSIADM);
return -1; return -1;
} }
virCommandFree(cmd);
cmd = virCommandNewArgList(ISCSIADM, updatecmd = virCommandNewArgList(ISCSIADM,
"--mode", "iface", "--mode", "iface",
"--interface", temp_ifacename, "--interface", temp_ifacename,
"--op", "update", "--op", "update",
"--name", "iface.initiatorname", "--name", "iface.initiatorname",
"--value", "--value",
initiatoriqn, initiatoriqn,
NULL); NULL);
/* Note that we ignore the exitstatus. Older versions of iscsiadm tools /* Note that we ignore the exitstatus. Older versions of iscsiadm tools
* returned an exit status of > 0, even if they succeeded. We will just * returned an exit status of > 0, even if they succeeded. We will just
* rely on whether iface file got updated properly. */ * rely on whether iface file got updated properly. */
if (virCommandRun(cmd, &exitstatus) < 0) { if (virCommandRun(updatecmd, &exitstatus) < 0) {
virReportError(VIR_ERR_INTERNAL_ERROR, virReportError(VIR_ERR_INTERNAL_ERROR,
_("Failed to run command '%s' to update iscsi interface with IQN '%s'"), _("Failed to run command '%s' to update iscsi interface with IQN '%s'"),
ISCSIADM, initiatoriqn); ISCSIADM, initiatoriqn);