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,