]> xenbits.xensource.com Git - libvirt.git/commitdiff
lxc: Use new connection close callbacks API
authorPeter Krempa <pkrempa@redhat.com>
Mon, 29 Aug 2022 14:13:58 +0000 (16:13 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Fri, 6 Jan 2023 14:30:09 +0000 (15:30 +0100)
The rewrite is straightforward as LXC registers only the
'lxcProcessAutoDestroy' callback which by design doesn't need any
special handling (there's just one caller which can start the VM thus
implicitly there's only one possible registration for that function).

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
src/lxc/lxc_conf.c
src/lxc/lxc_conf.h
src/lxc/lxc_driver.c
src/lxc/lxc_process.c

index fefe63bf200f4a9b51ccf3973bebefff3fc83d2e..146e43c5d527ff0a7e7b75ea802dcc7271bd6d5e 100644 (file)
@@ -184,12 +184,19 @@ virCaps *virLXCDriverGetCapabilities(virLXCDriver *driver,
 virDomainXMLOption *
 lxcDomainXMLConfInit(virLXCDriver *driver, const char *defsecmodel)
 {
+    virDomainXMLOption *ret = NULL;
+
     virLXCDriverDomainDefParserConfig.priv = driver;
     virLXCDriverDomainDefParserConfig.defSecModel = defsecmodel;
-    return virDomainXMLOptionNew(&virLXCDriverDomainDefParserConfig,
-                                 &virLXCDriverPrivateDataCallbacks,
-                                 &virLXCDriverDomainXMLNamespace,
-                                 NULL, NULL, NULL);
+
+    ret = virDomainXMLOptionNew(&virLXCDriverDomainDefParserConfig,
+                                &virLXCDriverPrivateDataCallbacks,
+                                &virLXCDriverDomainXMLNamespace,
+                                NULL, NULL, NULL);
+
+    virDomainXMLOptionSetCloseCallbackAlloc(ret, virCloseCallbacksDomainAlloc);
+
+    return ret;
 }
 
 
index 6b9004aa3ca6750a3776133cd14ed73384fc938b..c0967ac63b032a4f9e37d77a5ca9995c9cca9466 100644 (file)
@@ -93,9 +93,6 @@ struct _virLXCDriver {
 
     /* Immutable pointer. self-locking APIs */
     virSecurityManager *securityManager;
-
-    /* Immutable pointer, self-locking APIs */
-    virCloseCallbacks *closeCallbacks;
 };
 
 G_DEFINE_AUTOPTR_CLEANUP_FUNC(virLXCDriverConfig, virObjectUnref);
index 5a16e7375e49002cc793ede6e68ff74082b9e511..f49964285b4caa2f497757a34a7ebf423c9f3436 100644 (file)
@@ -161,7 +161,8 @@ static int lxcConnectClose(virConnectPtr conn)
 {
     virLXCDriver *driver = conn->privateData;
 
-    virCloseCallbacksRun(driver->closeCallbacks, conn, driver->domains);
+    virCloseCallbacksDomainRunForConn(driver->domains, conn);
+
     conn->privateData = NULL;
     return 0;
 }
@@ -1496,9 +1497,6 @@ static int lxcStateInitialize(bool privileged,
     if (!(lxc_driver->xmlopt = lxcDomainXMLConfInit(lxc_driver, defsecmodel)))
         goto cleanup;
 
-    if (!(lxc_driver->closeCallbacks = virCloseCallbacksNew()))
-        goto cleanup;
-
     if (g_mkdir_with_parents(cfg->stateDir, 0777) < 0) {
         virReportSystemError(errno,
                              _("Failed to mkdir %s"),
@@ -1586,8 +1584,6 @@ static int lxcStateCleanup(void)
     virObjectUnref(lxc_driver->domains);
     virObjectUnref(lxc_driver->domainEventState);
 
-    virObjectUnref(lxc_driver->closeCallbacks);
-
     virSysinfoDefFree(lxc_driver->hostsysinfo);
 
     virObjectUnref(lxc_driver->hostdevMgr);
index 2a753ae1da9a0af6eeef1feeddba334130a18241..14fe60b0744f71e4a82cbb3f7860ca8fbae74eb3 100644 (file)
@@ -188,7 +188,7 @@ static void virLXCProcessCleanup(virLXCDriver *driver,
 
     /* Stop autodestroy in case guest is restarted */
     if (flags & VIR_LXC_PROCESS_CLEANUP_AUTODESTROY) {
-        virCloseCallbacksUnset(driver->closeCallbacks, vm, lxcProcessAutoDestroy);
+        virCloseCallbacksDomainRemove(vm, NULL, lxcProcessAutoDestroy);
     }
 
     if (priv->monitor) {
@@ -1504,10 +1504,8 @@ int virLXCProcessStart(virLXCDriver * driver,
         goto cleanup;
     }
 
-    if (autoDestroyConn &&
-        virCloseCallbacksSet(driver->closeCallbacks, vm,
-                             autoDestroyConn, lxcProcessAutoDestroy) < 0)
-        goto cleanup;
+    if (autoDestroyConn)
+        virCloseCallbacksDomainAdd(vm, autoDestroyConn, lxcProcessAutoDestroy);
 
     /* We don't need the temporary NIC names anymore, clear them */
     virLXCProcessCleanInterfaces(vm->def);