mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-26 23:55:23 +00:00
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:
<disk type='network' device='cdrom'>
<driver name='qemu' type='raw' cache='none'/>
<source protocol='gluster' name='gluster-vol1(null)'>
<host name='localhost'/>
</source>
<target dev='vdc' bus='virtio'/>
<readonly/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x0a' function='0x0'/>
</disk>
Update the whole source instead of cherry-picking elements.
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1166024
(cherry picked from commit d0dc6c0369
)
This commit is contained in:
parent
b41d99b72e
commit
7d11e8de0b
@ -7683,19 +7683,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:
|
||||
|
Loading…
Reference in New Issue
Block a user