Re: [PATCH 3/9] qemu: Reuse qemuBlockStorageSourceAttachApply in disk hotplug

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Jun 01, 2018 at 05:51:06PM +0200, Peter Krempa wrote:
Create a new "Prepare" function and move the drive add code into the new
helpers. This will eventually allow to simplify and unify the attaching
code for use with blockdev at the same time as providing compatibility
with older qemus.

Signed-off-by: Peter Krempa <pkrempa@xxxxxxxxxx>
---
src/qemu/qemu_block.c   | 18 ++++++++++++++++++
src/qemu/qemu_block.h   |  4 ++++
src/qemu/qemu_command.c | 29 ++++++++++++++++++++++++++++-
src/qemu/qemu_command.h |  8 ++++----
src/qemu/qemu_hotplug.c | 26 +++++++++-----------------
5 files changed, 63 insertions(+), 22 deletions(-)

diff --git a/src/qemu/qemu_block.c b/src/qemu/qemu_block.c
index 85176925c9..73aab9d73a 100644
--- a/src/qemu/qemu_block.c
+++ b/src/qemu/qemu_block.c
@@ -24,9 +24,12 @@

#include "viralloc.h"
#include "virstring.h"
+#include "virlog.h"

#define VIR_FROM_THIS VIR_FROM_QEMU

+VIR_LOG_INIT("qemu.qemu_block");
+
/* qemu declares the buffer for node names as a 32 byte array */
static const size_t qemuBlockNodeNameBufSize = 32;

@@ -1482,6 +1485,8 @@ qemuBlockStorageSourceAttachDataFree(qemuBlockStorageSourceAttachDataPtr data)

    virJSONValueFree(data->storageProps);
    virJSONValueFree(data->formatProps);
+    VIR_FREE(data->driveCmd);
+    VIR_FREE(data->driveAlias);
    VIR_FREE(data);
}

@@ -1563,6 +1568,13 @@ qemuBlockStorageSourceAttachApply(qemuMonitorPtr mon,
        data->formatAttached = true;
    }

+    if (data->driveCmd) {
+        if (qemuMonitorAddDrive(mon, data->driveCmd) < 0)
+            return -1;
+
+        data->driveAdded = true;
+    }
+
    return 0;
}

@@ -1591,6 +1603,12 @@ qemuBlockStorageSourceAttachRollback(qemuMonitorPtr mon,
    if (data->storageAttached)
        ignore_value(qemuMonitorBlockdevDel(mon, data->storageNodeName));

+    if (data->driveAdded) {
+        if (qemuMonitorDriveDel(mon, data->driveAlias) < 0)
+            VIR_WARN("Unable to remove drive %s (%s) after failed "
+                     "qemuMonitorAddDevice", data->driveAlias, data->driveCmd);
+    }
+
    virErrorRestore(&orig_err);

Even though this call is unrelated to the other two, shouldn't rollback
be in reverse order?

Reviewed-by: Ján Tomko <jtomko@xxxxxxxxxx>

Jano

Attachment: signature.asc
Description: Digital signature

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list

[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux