[libvirt-users] Fail in virDomainUpdateDeviceFlags (libvirt-4.0.0 + Qemu-kvm 2.9.0 + Ceph 10.2.10)

Michal Privoznik mprivozn at redhat.com
Tue Feb 27 08:53:00 UTC 2018


On 02/27/2018 03:06 AM, Star Guo wrote:
> Hello Everyone,
> 
>  
> 
> My pc run in CentOS 7.4 and install libvirt-4.0.0 + Qemu-kvm 2.9.0 + Ceph
> 10.2.10 ALL-in-One.
> 
>  
> 
> I use python-sdk with libvirt and run [self.domain.updateDeviceFlags(xml,
> libvirt.VIR_DOMAIN_AFFECT_LIVE)] on CDROM (I want to change media path).
> However, I enable libvirt debug log , the log as below:
> 
> <snip/>
>
> I see the flow is virDomainUpdateDeviceFlags -> qemuMonitorChangeMedia, but
> the cephx auth is drop, so make update error. Anybody meet this error? 

Yes, this is a libvirt bug. I think this fixes the issue:

diff --git i/src/qemu/qemu_driver.c w/src/qemu/qemu_driver.c
index 96454c17c..0e5ad9971 100644
--- i/src/qemu/qemu_driver.c
+++ w/src/qemu/qemu_driver.c
@@ -7842,6 +7842,8 @@ qemuDomainChangeDiskLive(virDomainObjPtr vm,
                          virQEMUDriverPtr driver,
                          bool force)
 {
+    virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
+    qemuDomainObjPrivatePtr priv = vm->privateData;
     virDomainDiskDefPtr disk = dev->data.disk;
     virDomainDiskDefPtr orig_disk = NULL;
     virDomainDeviceDef oldDev = { .type = dev->type };
@@ -7850,6 +7852,9 @@ qemuDomainChangeDiskLive(virDomainObjPtr vm,
     if (virDomainDiskTranslateSourcePool(disk) < 0)
         goto cleanup;
 
+    if (qemuDomainPrepareDiskSource(disk, priv, cfg) < 0)
+        goto cleanup;
+
     if (qemuDomainDetermineDiskChain(driver, vm, disk, false, true) < 0)
         goto cleanup;
 
@@ -7898,6 +7903,7 @@ qemuDomainChangeDiskLive(virDomainObjPtr vm,
 
     ret = 0;
  cleanup:
+    virObjectUnref(cfg);
     return ret;
 }
 

Can you check and confirm?

Michal




More information about the libvirt-users mailing list