]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: block: Properly handle FD-passed disk hot-(un-)plug
authorPeter Krempa <pkrempa@redhat.com>
Tue, 31 Jan 2023 14:35:05 +0000 (15:35 +0100)
committerPeter Krempa <pkrempa@redhat.com>
Wed, 1 Feb 2023 08:17:41 +0000 (09:17 +0100)
The hotplug code paths need to be able to pass the FDs to the monitor to
ensure that hotplug works.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Martin Kletzander <mkletzan@redhat.com>
src/qemu/qemu_block.c

index e865aa17f9e191cc0ef14d3e223fa546f6fc39f7..c218262691dedfac4a06a53e089069983dedaee3 100644 (file)
@@ -1410,6 +1410,9 @@ qemuBlockStorageSourceAttachApplyStorageDeps(qemuMonitor *mon,
         qemuMonitorAddObject(mon, &data->tlsProps, &data->tlsAlias) < 0)
         return -1;
 
+    if (qemuFDPassTransferMonitor(data->fdpass, mon) < 0)
+        return -1;
+
     return 0;
 }
 
@@ -1559,6 +1562,8 @@ qemuBlockStorageSourceAttachRollback(qemuMonitor *mon,
     if (data->tlsKeySecretAlias)
         ignore_value(qemuMonitorDelObject(mon, data->tlsKeySecretAlias, false));
 
+    qemuFDPassTransferMonitorRollback(data->fdpass, mon);
+
     virErrorRestore(&orig_err);
 }
 
@@ -1609,6 +1614,8 @@ qemuBlockStorageSourceDetachPrepare(virStorageSource *src)
 
         if (srcpriv->tlsKeySecret)
             data->tlsKeySecretAlias = g_strdup(srcpriv->tlsKeySecret->alias);
+
+        data->fdpass = srcpriv->fdpass;
     }
 
     return g_steal_pointer(&data);