From 8c12b20c61a852849f313cf4786b8a2b4ca462ce Mon Sep 17 00:00:00 2001 From: "Daniel P. Berrange" Date: Thu, 26 Nov 2009 13:48:17 +0000 Subject: [PATCH] Add a 'format' arg to qemuMonitorChangeMedia() since JSON will support it The current QEMU disk media change does not support setting the disk format. The new JSON monitor will support this, so add an extra parameter to pass this info in * src/qemu/qemu_driver.c: Pass in disk format when changing media * src/qemu/qemu_monitor.h, src/qemu/qemu_monitor.c, src/qemu/qemu_monitor_text.c, src/qemu/qemu_monitor_text.h: Add a 'format' arg to qemuMonitorChangeMedia() --- src/qemu/qemu_driver.c | 9 ++++++++- src/qemu/qemu_monitor.c | 9 +++++---- src/qemu/qemu_monitor.h | 3 ++- src/qemu/qemu_monitor_text.c | 7 ++++--- src/qemu/qemu_monitor_text.h | 3 ++- 5 files changed, 21 insertions(+), 10 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 2902d3c103..dd4daa0aea 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -4737,7 +4737,14 @@ static int qemudDomainChangeEjectableMedia(virConnectPtr conn, qemuDomainObjPrivatePtr priv = vm->privateData; qemuDomainObjEnterMonitorWithDriver(driver, vm); if (newdisk->src) { - ret = qemuMonitorChangeMedia(priv->mon, devname, newdisk->src); + const char *format = NULL; + if (newdisk->type != VIR_DOMAIN_DISK_TYPE_DIR) { + if (newdisk->driverType) + format = newdisk->driverType; + else if (origdisk->driverType) + format = origdisk->driverType; + } + ret = qemuMonitorChangeMedia(priv->mon, devname, newdisk->src, format); } else { ret = qemuMonitorEjectMedia(priv->mon, devname); } diff --git a/src/qemu/qemu_monitor.c b/src/qemu/qemu_monitor.c index f3c9022d37..9e180c20df 100644 --- a/src/qemu/qemu_monitor.c +++ b/src/qemu/qemu_monitor.c @@ -776,12 +776,13 @@ int qemuMonitorEjectMedia(qemuMonitorPtr mon, int qemuMonitorChangeMedia(qemuMonitorPtr mon, const char *devname, - const char *newmedia) + const char *newmedia, + const char *format) { - DEBUG("mon=%p, fd=%d devname=%s newmedia=%s", - mon, mon->fd, devname, newmedia); + DEBUG("mon=%p, fd=%d devname=%s newmedia=%s format=%s", + mon, mon->fd, devname, newmedia, format); - return qemuMonitorTextChangeMedia(mon, devname, newmedia); + return qemuMonitorTextChangeMedia(mon, devname, newmedia, format); } diff --git a/src/qemu/qemu_monitor.h b/src/qemu/qemu_monitor.h index 88d3dd7d9a..14198fb8ba 100644 --- a/src/qemu/qemu_monitor.h +++ b/src/qemu/qemu_monitor.h @@ -136,7 +136,8 @@ int qemuMonitorEjectMedia(qemuMonitorPtr mon, const char *devname); int qemuMonitorChangeMedia(qemuMonitorPtr mon, const char *devname, - const char *newmedia); + const char *newmedia, + const char *format); int qemuMonitorSaveVirtualMemory(qemuMonitorPtr mon, diff --git a/src/qemu/qemu_monitor_text.c b/src/qemu/qemu_monitor_text.c index db155734d5..0d5ad799d2 100644 --- a/src/qemu/qemu_monitor_text.c +++ b/src/qemu/qemu_monitor_text.c @@ -693,7 +693,8 @@ cleanup: int qemuMonitorTextChangeMedia(qemuMonitorPtr mon, const char *devname, - const char *newmedia) + const char *newmedia, + const char *format ATTRIBUTE_UNUSED) { char *cmd = NULL; char *reply = NULL; @@ -1016,8 +1017,8 @@ cleanup: } int qemuMonitorTextMigrateToUnix(qemuMonitorPtr mon, - int background, - const char *unixfile) + int background, + const char *unixfile) { char *dest = NULL; int ret = -1; diff --git a/src/qemu/qemu_monitor_text.h b/src/qemu/qemu_monitor_text.h index 6bca07ad0e..bc52ad232e 100644 --- a/src/qemu/qemu_monitor_text.h +++ b/src/qemu/qemu_monitor_text.h @@ -62,7 +62,8 @@ int qemuMonitorTextEjectMedia(qemuMonitorPtr mon, const char *devname); int qemuMonitorTextChangeMedia(qemuMonitorPtr mon, const char *devname, - const char *newmedia); + const char *newmedia, + const char *format); int qemuMonitorTextSaveVirtualMemory(qemuMonitorPtr mon, -- GitLab