|
|
76daa3 |
From 55eff7c7c9dea635415014de0ab460dae7eef13d Mon Sep 17 00:00:00 2001
|
|
|
76daa3 |
From: Jeffrey Cody <jcody@redhat.com>
|
|
|
76daa3 |
Date: Thu, 15 Jun 2017 15:50:29 +0200
|
|
|
76daa3 |
Subject: [PATCH 4/8] block/iscsi: enable filename option and parsing
|
|
|
76daa3 |
|
|
|
76daa3 |
RH-Author: Jeffrey Cody <jcody@redhat.com>
|
|
|
76daa3 |
Message-id: <ab286875a7ab2fcbc16ce104efbd55455bc582f5.1497541513.git.jcody@redhat.com>
|
|
|
76daa3 |
Patchwork-id: 75615
|
|
|
76daa3 |
O-Subject: [RHEV-7.4 qemu-kvm-rhev PATCH 2/2] block/iscsi: enable filename option and parsing
|
|
|
76daa3 |
Bugzilla: 1457088
|
|
|
76daa3 |
RH-Acked-by: Juan Quintela <quintela@redhat.com>
|
|
|
76daa3 |
RH-Acked-by: Stefan Hajnoczi <stefanha@redhat.com>
|
|
|
76daa3 |
RH-Acked-by: Max Reitz <mreitz@redhat.com>
|
|
|
76daa3 |
RH-Acked-by: Richard Jones <rjones@redhat.com>
|
|
|
76daa3 |
|
|
|
76daa3 |
When enabling option parsing and blockdev-add for iscsi, we removed the
|
|
|
76daa3 |
'filename' option. Unfortunately, this was a bit optimistic, as
|
|
|
76daa3 |
previous versions of QEMU allowed the use of the option in backing
|
|
|
76daa3 |
filenames via json. This means that without parsing this option, we
|
|
|
76daa3 |
cannot open existing images that used to work fine.
|
|
|
76daa3 |
|
|
|
76daa3 |
See bug: https://bugzilla.redhat.com/show_bug.cgi?id=1457088
|
|
|
76daa3 |
|
|
|
76daa3 |
Tested-by: Richard W.M. Jones <rjones@redhat.com>
|
|
|
76daa3 |
Signed-off-by: Jeff Cody <jcody@redhat.com>
|
|
|
76daa3 |
Message-id: 0789ab6c32814ab4b6896707d378804bd4424c65.1497444637.git.jcody@redhat.com
|
|
|
76daa3 |
Signed-off-by: Jeff Cody <jcody@redhat.com>
|
|
|
76daa3 |
(cherry picked from commit 5c3ad1a6a8fa041c57403dbe1fc5927eec0be66b)
|
|
|
76daa3 |
Signed-off-by: Jeff Cody <jcody@redhat.com>
|
|
|
76daa3 |
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
|
|
76daa3 |
---
|
|
|
76daa3 |
block/iscsi.c | 22 +++++++++++++++++++++-
|
|
|
76daa3 |
1 file changed, 21 insertions(+), 1 deletion(-)
|
|
|
76daa3 |
|
|
|
76daa3 |
diff --git a/block/iscsi.c b/block/iscsi.c
|
|
|
76daa3 |
index 42fb0b0..2d16861 100644
|
|
|
76daa3 |
--- a/block/iscsi.c
|
|
|
76daa3 |
+++ b/block/iscsi.c
|
|
|
76daa3 |
@@ -1732,6 +1732,10 @@ static QemuOptsList runtime_opts = {
|
|
|
76daa3 |
.name = "timeout",
|
|
|
76daa3 |
.type = QEMU_OPT_NUMBER,
|
|
|
76daa3 |
},
|
|
|
76daa3 |
+ {
|
|
|
76daa3 |
+ .name = "filename",
|
|
|
76daa3 |
+ .type = QEMU_OPT_STRING,
|
|
|
76daa3 |
+ },
|
|
|
76daa3 |
{ /* end of list */ }
|
|
|
76daa3 |
},
|
|
|
76daa3 |
};
|
|
|
76daa3 |
@@ -1747,12 +1751,27 @@ static int iscsi_open(BlockDriverState *bs, QDict *options, int flags,
|
|
|
76daa3 |
char *initiator_name = NULL;
|
|
|
76daa3 |
QemuOpts *opts;
|
|
|
76daa3 |
Error *local_err = NULL;
|
|
|
76daa3 |
- const char *transport_name, *portal, *target;
|
|
|
76daa3 |
+ const char *transport_name, *portal, *target, *filename;
|
|
|
76daa3 |
#if LIBISCSI_API_VERSION >= (20160603)
|
|
|
76daa3 |
enum iscsi_transport_type transport;
|
|
|
76daa3 |
#endif
|
|
|
76daa3 |
int i, ret = 0, timeout = 0, lun;
|
|
|
76daa3 |
|
|
|
76daa3 |
+ /* If we are given a filename, parse the filename, with precedence given to
|
|
|
76daa3 |
+ * filename encoded options */
|
|
|
76daa3 |
+ filename = qdict_get_try_str(options, "filename");
|
|
|
76daa3 |
+ if (filename) {
|
|
|
76daa3 |
+ error_report("Warning: 'filename' option specified. "
|
|
|
76daa3 |
+ "This is an unsupported option, and may be deprecated "
|
|
|
76daa3 |
+ "in the future");
|
|
|
76daa3 |
+ iscsi_parse_filename(filename, options, &local_err);
|
|
|
76daa3 |
+ if (local_err) {
|
|
|
76daa3 |
+ ret = -EINVAL;
|
|
|
76daa3 |
+ error_propagate(errp, local_err);
|
|
|
76daa3 |
+ goto exit;
|
|
|
76daa3 |
+ }
|
|
|
76daa3 |
+ }
|
|
|
76daa3 |
+
|
|
|
76daa3 |
opts = qemu_opts_create(&runtime_opts, NULL, 0, &error_abort);
|
|
|
76daa3 |
qemu_opts_absorb_qdict(opts, options, &local_err);
|
|
|
76daa3 |
if (local_err) {
|
|
|
76daa3 |
@@ -1967,6 +1986,7 @@ out:
|
|
|
76daa3 |
}
|
|
|
76daa3 |
memset(iscsilun, 0, sizeof(IscsiLun));
|
|
|
76daa3 |
}
|
|
|
76daa3 |
+exit:
|
|
|
76daa3 |
return ret;
|
|
|
76daa3 |
}
|
|
|
76daa3 |
|
|
|
76daa3 |
--
|
|
|
76daa3 |
1.8.3.1
|
|
|
76daa3 |
|