thebeanogamer / rpms / qemu-kvm

Forked from rpms/qemu-kvm 5 months ago
Clone

Blame SOURCES/kvm-block-iscsi-enable-filename-option-and-parsing.patch

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