From d0dc6c036914da4905c3f483be3036014a38fe9b Mon Sep 17 00:00:00 2001 From: Peter Krempa Date: Thu, 12 Mar 2015 17:12:12 +0100 Subject: [PATCH] qemu: driver: Fix cold-update of removable storage devices Only selected fields from the disk source were copied when cold updating source in a CDROM drive. When such drive was backed by a network file this resulted into corruption of the definition:
Update the whole source instead of cherry-picking elements. Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1166024 --- src/qemu/qemu_driver.c | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 329637dddf..77f51d9a03 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -8166,19 +8166,11 @@ qemuDomainUpdateDeviceConfig(virQEMUCapsPtr qemuCaps, * Update 'orig' * We allow updating src/type//driverType/cachemode/ */ - VIR_FREE(orig->src->path); - orig->src->path = disk->src->path; - orig->src->type = disk->src->type; orig->cachemode = disk->cachemode; - if (disk->src->driverName) { - VIR_FREE(orig->src->driverName); - orig->src->driverName = disk->src->driverName; - disk->src->driverName = NULL; - } - if (disk->src->format) - orig->src->format = disk->src->format; - disk->src->path = NULL; - orig->startupPolicy = disk->startupPolicy; + + virStorageSourceFree(orig->src); + orig->src = disk->src; + disk->src = NULL; break; case VIR_DOMAIN_DEVICE_GRAPHICS: