diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 3025d1d4e0..297f2657c9 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -5714,6 +5714,12 @@ qemuDomainAttachDeviceDiskLive(virConnectPtr conn, goto end; } + if (qemuAddSharedDisk(driver, disk, vm->def->name) < 0) + goto end; + + if (qemuSetUnprivSGIO(disk) < 0) + goto end; + if (qemuDomainDetermineDiskChain(driver, disk, false) < 0) goto end; @@ -5727,6 +5733,7 @@ qemuDomainAttachDeviceDiskLive(virConnectPtr conn, if (qemuSetupDiskCgroup(vm, cgroup, disk) < 0) goto end; } + switch (disk->device) { case VIR_DOMAIN_DISK_DEVICE_CDROM: case VIR_DOMAIN_DISK_DEVICE_FLOPPY: @@ -5765,16 +5772,9 @@ qemuDomainAttachDeviceDiskLive(virConnectPtr conn, NULLSTR(disk->src)); } - if (ret == 0) { - if (qemuAddSharedDisk(driver, disk, vm->def->name) < 0) - VIR_WARN("Failed to add disk '%s' to shared disk table", - disk->src); - - if (qemuSetUnprivSGIO(disk) < 0) - VIR_WARN("Failed to set unpriv_sgio of disk '%s'", disk->src); - } - end: + if (ret != 0) + ignore_value(qemuRemoveSharedDisk(driver, disk, vm->def->name)); if (cgroup) virCgroupFree(&cgroup); return ret; @@ -5889,11 +5889,8 @@ qemuDomainDetachDeviceDiskLive(virQEMUDriverPtr driver, break; } - if (ret == 0) { - if (qemuRemoveSharedDisk(driver, disk, vm->def->name) < 0) - VIR_WARN("Failed to remove disk '%s' from shared disk table", - disk->src); - } + if (ret == 0) + ignore_value(qemuRemoveSharedDisk(driver, disk, vm->def->name)); return ret; }