[PATCH 0/7] Refactor closecallback use in LXC

The end-goal is to remove 'virCloseCallbacksGetConn'. Peter Krempa (7): virLXCProcessStop: Add 'cleanupFlags' parameter virLXCProcessStart: Pass in virConnect object only when registering autodestroy virLXCProcessReboot: Simplify cleanup virLXCProcessAutostartAll: Remove unused 'conn' virLXCProcessAutostartDomain: Refactor control flow and variable use virLXCProcessReboot: Remove the need to re-register autodestroy callback virclosecallbacks: Remove unused virCloseCallbacksGetConn src/hypervisor/virclosecallbacks.c | 24 ----- src/hypervisor/virclosecallbacks.h | 3 - src/libvirt_private.syms | 1 - src/lxc/lxc_driver.c | 17 ++-- src/lxc/lxc_process.c | 141 +++++++++++------------------ src/lxc/lxc_process.h | 8 +- 6 files changed, 69 insertions(+), 125 deletions(-) -- 2.36.1

Add possibility for the caller to set the flags for the call to 'virLXCProcessCleanup'. Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- src/lxc/lxc_driver.c | 2 +- src/lxc/lxc_process.c | 17 +++++++++-------- src/lxc/lxc_process.h | 3 ++- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/lxc/lxc_driver.c b/src/lxc/lxc_driver.c index 0d8cdcebfd..456d2fbae9 100644 --- a/src/lxc/lxc_driver.c +++ b/src/lxc/lxc_driver.c @@ -1354,7 +1354,7 @@ lxcDomainDestroyFlags(virDomainPtr dom, goto endjob; priv = vm->privateData; - ret = virLXCProcessStop(driver, vm, VIR_DOMAIN_SHUTOFF_DESTROYED); + ret = virLXCProcessStop(driver, vm, VIR_DOMAIN_SHUTOFF_DESTROYED, 0); event = virDomainEventLifecycleNewFromObj(vm, VIR_DOMAIN_EVENT_STOPPED, VIR_DOMAIN_EVENT_STOPPED_DESTROYED); diff --git a/src/lxc/lxc_process.c b/src/lxc/lxc_process.c index 9dc7d9d0d8..587ba1d3c1 100644 --- a/src/lxc/lxc_process.c +++ b/src/lxc/lxc_process.c @@ -67,7 +67,7 @@ lxcProcessAutoDestroy(virDomainObj *dom, VIR_DEBUG("driver=%p dom=%s conn=%p", driver, dom->def->name, conn); VIR_DEBUG("Killing domain"); - virLXCProcessStop(driver, dom, VIR_DOMAIN_SHUTOFF_DESTROYED); + virLXCProcessStop(driver, dom, VIR_DOMAIN_SHUTOFF_DESTROYED, 0); virDomainAuditStop(dom, "destroyed"); event = virDomainEventLifecycleNewFromObj(dom, VIR_DOMAIN_EVENT_STOPPED, @@ -108,7 +108,7 @@ virLXCProcessReboot(virLXCDriver *driver, * So temporarily hide the newDef and then reinstate it */ savedDef = g_steal_pointer(&vm->newDef); - virLXCProcessStop(driver, vm, VIR_DOMAIN_SHUTOFF_SHUTDOWN); + virLXCProcessStop(driver, vm, VIR_DOMAIN_SHUTOFF_SHUTDOWN, 0); vm->newDef = savedDef; if (virLXCProcessStart(conn, driver, vm, 0, NULL, autodestroy, reason) < 0) { @@ -687,9 +687,9 @@ static void virLXCProcessMonitorEOFNotify(virLXCMonitor *mon, virObjectLock(vm); priv = vm->privateData; - virLXCProcessStop(driver, vm, VIR_DOMAIN_SHUTOFF_SHUTDOWN); + virLXCProcessStop(driver, vm, VIR_DOMAIN_SHUTOFF_SHUTDOWN, 0); if (!priv->wantReboot) { - virLXCProcessStop(driver, vm, VIR_DOMAIN_SHUTOFF_SHUTDOWN); + virLXCProcessStop(driver, vm, VIR_DOMAIN_SHUTOFF_SHUTDOWN, 0); if (!priv->doneStopEvent) { event = virDomainEventLifecycleNewFromObj(vm, VIR_DOMAIN_EVENT_STOPPED, @@ -841,7 +841,8 @@ static virLXCMonitor *virLXCProcessConnectMonitor(virLXCDriver *driver, int virLXCProcessStop(virLXCDriver *driver, virDomainObj *vm, - virDomainShutoffReason reason) + virDomainShutoffReason reason, + unsigned int cleanupFlags) { int rc; virLXCDomainObjPrivate *priv; @@ -899,7 +900,7 @@ int virLXCProcessStop(virLXCDriver *driver, } cleanup: - virLXCProcessCleanup(driver, vm, reason, 0); + virLXCProcessCleanup(driver, vm, reason, cleanupFlags); return 0; } @@ -1535,7 +1536,7 @@ int virLXCProcessStart(virConnectPtr conn, if (rc != 0) { virErrorPreserveLast(&err); if (virDomainObjIsActive(vm)) { - virLXCProcessStop(driver, vm, VIR_DOMAIN_SHUTOFF_FAILED); + virLXCProcessStop(driver, vm, VIR_DOMAIN_SHUTOFF_FAILED, 0); } else { /* virLXCProcessStop() is NOP if the container is not active. * If there was a failure whilst creating it, cleanup manually. */ @@ -1723,7 +1724,7 @@ virLXCProcessReconnectDomain(virDomainObj *vm, return ret; error: - virLXCProcessStop(driver, vm, VIR_DOMAIN_SHUTOFF_FAILED); + virLXCProcessStop(driver, vm, VIR_DOMAIN_SHUTOFF_FAILED, 0); virDomainAuditStop(vm, "failed"); goto cleanup; } diff --git a/src/lxc/lxc_process.h b/src/lxc/lxc_process.h index 33ff334b74..1bce57809c 100644 --- a/src/lxc/lxc_process.h +++ b/src/lxc/lxc_process.h @@ -31,7 +31,8 @@ int virLXCProcessStart(virConnectPtr conn, virDomainRunningReason reason); int virLXCProcessStop(virLXCDriver *driver, virDomainObj *vm, - virDomainShutoffReason reason); + virDomainShutoffReason reason, + unsigned int cleanupFlags); void virLXCProcessAutoDestroyRun(virLXCDriver *driver, virConnectPtr conn); -- 2.36.1

The function doesn't really need the connect object for anything besides registering the autodestroy callback for it. If we merge it certain callers can be simplified. Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- src/lxc/lxc_driver.c | 15 +++++++++------ src/lxc/lxc_process.c | 31 ++++++++++--------------------- src/lxc/lxc_process.h | 5 ++--- 3 files changed, 21 insertions(+), 30 deletions(-) diff --git a/src/lxc/lxc_driver.c b/src/lxc/lxc_driver.c index 456d2fbae9..6b2f721178 100644 --- a/src/lxc/lxc_driver.c +++ b/src/lxc/lxc_driver.c @@ -964,9 +964,13 @@ static int lxcDomainCreateWithFiles(virDomainPtr dom, virObjectEvent *event = NULL; int ret = -1; g_autoptr(virLXCDriverConfig) cfg = virLXCDriverGetConfig(driver); + virConnect *autoDestroyConn = NULL; virCheckFlags(VIR_DOMAIN_START_AUTODESTROY, -1); + if (flags & VIR_DOMAIN_START_AUTODESTROY) + autoDestroyConn = dom->conn; + if (!(vm = lxcDomObjFromDomain(dom))) goto cleanup; @@ -988,9 +992,7 @@ static int lxcDomainCreateWithFiles(virDomainPtr dom, goto endjob; } - ret = virLXCProcessStart(dom->conn, driver, vm, - nfiles, files, - (flags & VIR_DOMAIN_START_AUTODESTROY), + ret = virLXCProcessStart(driver, vm, nfiles, files, autoDestroyConn, VIR_DOMAIN_RUNNING_BOOTED); if (ret == 0) { @@ -1065,10 +1067,13 @@ lxcDomainCreateXMLWithFiles(virConnectPtr conn, g_autoptr(virLXCDriverConfig) cfg = virLXCDriverGetConfig(driver); g_autoptr(virCaps) caps = NULL; unsigned int parse_flags = VIR_DOMAIN_DEF_PARSE_INACTIVE; + virConnect *autoDestroyConn = NULL; virCheckFlags(VIR_DOMAIN_START_AUTODESTROY | VIR_DOMAIN_START_VALIDATE, NULL); + if (flags & VIR_DOMAIN_START_AUTODESTROY) + autoDestroyConn = conn; if (flags & VIR_DOMAIN_START_VALIDATE) parse_flags |= VIR_DOMAIN_DEF_PARSE_VALIDATE_SCHEMA; @@ -1106,9 +1111,7 @@ lxcDomainCreateXMLWithFiles(virConnectPtr conn, goto cleanup; } - if (virLXCProcessStart(conn, driver, vm, - nfiles, files, - (flags & VIR_DOMAIN_START_AUTODESTROY), + if (virLXCProcessStart(driver, vm, nfiles, files, autoDestroyConn, VIR_DOMAIN_RUNNING_BOOTED) < 0) { virDomainAuditStart(vm, "booted", false); virLXCDomainObjEndJob(driver, vm); diff --git a/src/lxc/lxc_process.c b/src/lxc/lxc_process.c index 587ba1d3c1..4934a96e0c 100644 --- a/src/lxc/lxc_process.c +++ b/src/lxc/lxc_process.c @@ -87,21 +87,15 @@ static int virLXCProcessReboot(virLXCDriver *driver, virDomainObj *vm) { - virConnectPtr conn = virCloseCallbacksGetConn(driver->closeCallbacks, vm); + g_autoptr(virConnect) autoDestroyConn = virCloseCallbacksGetConn(driver->closeCallbacks, vm); int reason = vm->state.reason; - bool autodestroy = false; int ret = -1; virDomainDef *savedDef; VIR_DEBUG("Faking reboot"); - if (conn) { - virObjectRef(conn); - autodestroy = true; - } else { - conn = virConnectOpen("lxc:///system"); - /* Ignoring NULL conn which is mostly harmless here */ - } + if (autoDestroyConn) + virObjectRef(autoDestroyConn); /* In a reboot scenario, we need to make sure we continue * to use the current 'def', and not switch to 'newDef'. @@ -110,8 +104,7 @@ virLXCProcessReboot(virLXCDriver *driver, savedDef = g_steal_pointer(&vm->newDef); virLXCProcessStop(driver, vm, VIR_DOMAIN_SHUTOFF_SHUTDOWN, 0); vm->newDef = savedDef; - if (virLXCProcessStart(conn, driver, vm, - 0, NULL, autodestroy, reason) < 0) { + if (virLXCProcessStart(driver, vm, 0, NULL, autoDestroyConn, reason) < 0) { VIR_WARN("Unable to handle reboot of vm %s", vm->def->name); goto cleanup; @@ -120,7 +113,6 @@ virLXCProcessReboot(virLXCDriver *driver, ret = 0; cleanup: - virObjectUnref(conn); return ret; } @@ -1146,21 +1138,19 @@ virLXCProcessEnsureRootFS(virDomainObj *vm) /** * virLXCProcessStart: - * @conn: pointer to connection * @driver: pointer to driver structure * @vm: pointer to virtual machine structure - * @autoDestroy: mark the domain for auto destruction + * @autoDestroyConn: mark the domain for auto destruction for the passed connection object * @reason: reason for switching vm to running state * * Starts a vm * * Returns 0 on success or -1 in case of error */ -int virLXCProcessStart(virConnectPtr conn, - virLXCDriver * driver, +int virLXCProcessStart(virLXCDriver * driver, virDomainObj *vm, unsigned int nfiles, int *files, - bool autoDestroy, + virConnectPtr autoDestroyConn, virDomainRunningReason reason) { int rc = -1, r; @@ -1505,9 +1495,9 @@ int virLXCProcessStart(virConnectPtr conn, goto cleanup; } - if (autoDestroy && + if (autoDestroyConn && virCloseCallbacksSet(driver->closeCallbacks, vm, - conn, lxcProcessAutoDestroy) < 0) + autoDestroyConn, lxcProcessAutoDestroy) < 0) goto cleanup; /* We don't need the temporary NIC names anymore, clear them */ @@ -1568,8 +1558,7 @@ virLXCProcessAutostartDomain(virDomainObj *vm, virObjectLock(vm); if (vm->autostart && !virDomainObjIsActive(vm)) { - ret = virLXCProcessStart(data->conn, data->driver, vm, - 0, NULL, false, + ret = virLXCProcessStart(data->driver, vm, 0, NULL, NULL, VIR_DOMAIN_RUNNING_BOOTED); virDomainAuditStart(vm, "booted", ret >= 0); if (ret < 0) { diff --git a/src/lxc/lxc_process.h b/src/lxc/lxc_process.h index 1bce57809c..4b84e31fef 100644 --- a/src/lxc/lxc_process.h +++ b/src/lxc/lxc_process.h @@ -23,11 +23,10 @@ #include "lxc_conf.h" -int virLXCProcessStart(virConnectPtr conn, - virLXCDriver * driver, +int virLXCProcessStart(virLXCDriver * driver, virDomainObj *vm, unsigned int nfiles, int *files, - bool autoDestroy, + virConnectPtr autoDestroyConn, virDomainRunningReason reason); int virLXCProcessStop(virLXCDriver *driver, virDomainObj *vm, -- 2.36.1

Remove the pointless 'cleanup' section and 'ret' variable. Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- src/lxc/lxc_process.c | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/src/lxc/lxc_process.c b/src/lxc/lxc_process.c index 4934a96e0c..130c16aa04 100644 --- a/src/lxc/lxc_process.c +++ b/src/lxc/lxc_process.c @@ -89,7 +89,6 @@ virLXCProcessReboot(virLXCDriver *driver, { g_autoptr(virConnect) autoDestroyConn = virCloseCallbacksGetConn(driver->closeCallbacks, vm); int reason = vm->state.reason; - int ret = -1; virDomainDef *savedDef; VIR_DEBUG("Faking reboot"); @@ -105,15 +104,11 @@ virLXCProcessReboot(virLXCDriver *driver, virLXCProcessStop(driver, vm, VIR_DOMAIN_SHUTOFF_SHUTDOWN, 0); vm->newDef = savedDef; if (virLXCProcessStart(driver, vm, 0, NULL, autoDestroyConn, reason) < 0) { - VIR_WARN("Unable to handle reboot of vm %s", - vm->def->name); - goto cleanup; + VIR_WARN("Unable to handle reboot of vm %s", vm->def->name); + return -1; } - ret = 0; - - cleanup: - return ret; + return 0; } -- 2.36.1

The connection object is not needed when autostarting containers so we can remove the machinery for it. Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- src/lxc/lxc_process.c | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/src/lxc/lxc_process.c b/src/lxc/lxc_process.c index 130c16aa04..a733f146f4 100644 --- a/src/lxc/lxc_process.c +++ b/src/lxc/lxc_process.c @@ -1540,7 +1540,6 @@ int virLXCProcessStart(virLXCDriver * driver, struct virLXCProcessAutostartData { virLXCDriver *driver; - virConnectPtr conn; }; static int @@ -1576,21 +1575,11 @@ virLXCProcessAutostartDomain(virDomainObj *vm, void virLXCProcessAutostartAll(virLXCDriver *driver) { - /* XXX: Figure out a better way todo this. The domain - * startup code needs a connection handle in order - * to lookup the bridge associated with a virtual - * network - */ - virConnectPtr conn = virConnectOpen("lxc:///system"); - /* Ignoring NULL conn which is mostly harmless here */ - - struct virLXCProcessAutostartData data = { driver, conn }; + struct virLXCProcessAutostartData data = { driver }; virDomainObjListForEach(driver->domains, false, virLXCProcessAutostartDomain, &data); - - virObjectUnref(conn); } -- 2.36.1

Use automatic unlocking of the 'vm' object, so that we can return early when no autostart is needed and avoid passing of the 'driver' object which is already present in 'vm's' private data. Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- src/lxc/lxc_process.c | 55 ++++++++++++++++++++----------------------- 1 file changed, 25 insertions(+), 30 deletions(-) diff --git a/src/lxc/lxc_process.c b/src/lxc/lxc_process.c index a733f146f4..753e9e0b9a 100644 --- a/src/lxc/lxc_process.c +++ b/src/lxc/lxc_process.c @@ -1538,48 +1538,43 @@ int virLXCProcessStart(virLXCDriver * driver, return rc; } -struct virLXCProcessAutostartData { - virLXCDriver *driver; -}; static int virLXCProcessAutostartDomain(virDomainObj *vm, - void *opaque) + void *opaque G_GNUC_UNUSED) { - const struct virLXCProcessAutostartData *data = opaque; - int ret = 0; + VIR_LOCK_GUARD lock = virObjectLockGuard(vm); + virLXCDomainObjPrivate *priv = vm->privateData; + virObjectEvent *event; + int rc = 0; - virObjectLock(vm); - if (vm->autostart && - !virDomainObjIsActive(vm)) { - ret = virLXCProcessStart(data->driver, vm, 0, NULL, NULL, - VIR_DOMAIN_RUNNING_BOOTED); - virDomainAuditStart(vm, "booted", ret >= 0); - if (ret < 0) { - VIR_ERROR(_("Failed to autostart VM '%s': %s"), - vm->def->name, - virGetLastErrorMessage()); - } else { - virObjectEvent *event = - virDomainEventLifecycleNewFromObj(vm, - VIR_DOMAIN_EVENT_STARTED, - VIR_DOMAIN_EVENT_STARTED_BOOTED); - virObjectEventStateQueue(data->driver->domainEventState, event); - } + if (!vm->autostart || + virDomainObjIsActive(vm)) + return 0; + + rc = virLXCProcessStart(priv->driver, vm, 0, NULL, NULL, VIR_DOMAIN_RUNNING_BOOTED); + virDomainAuditStart(vm, "booted", rc >= 0); + + if (rc < 0) { + VIR_ERROR(_("Failed to autostart VM '%s': %s"), + vm->def->name, + virGetLastErrorMessage()); + return -1; } - virObjectUnlock(vm); - return ret; + + event = virDomainEventLifecycleNewFromObj(vm, + VIR_DOMAIN_EVENT_STARTED, + VIR_DOMAIN_EVENT_STARTED_BOOTED); + virObjectEventStateQueue(priv->driver->domainEventState, event); + + return 0; } void virLXCProcessAutostartAll(virLXCDriver *driver) { - struct virLXCProcessAutostartData data = { driver }; - - virDomainObjListForEach(driver->domains, false, - virLXCProcessAutostartDomain, - &data); + virDomainObjListForEach(driver->domains, false, virLXCProcessAutostartDomain, NULL); } -- 2.36.1

Add a new flag VIR_LXC_PROCESS_CLEANUP_AUTODESTROY to virLXCProcessCleanupFlags for skipping removal of the autodestroy callback so that fake reboot of the container doesn't need to fetch the connection and re-register it. Since virLXCProcessReboot is defined before virLXCProcessCleanupFlags, this patch also moves the flag enum typedef to the beginning of the file. Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- src/lxc/lxc_process.c | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/src/lxc/lxc_process.c b/src/lxc/lxc_process.c index 753e9e0b9a..f9854ac138 100644 --- a/src/lxc/lxc_process.c +++ b/src/lxc/lxc_process.c @@ -56,6 +56,13 @@ VIR_LOG_INIT("lxc.lxc_process"); #define START_POSTFIX ": starting up\n" +typedef enum { + VIR_LXC_PROCESS_CLEANUP_RELEASE_SECLABEL = (1 << 0), + VIR_LXC_PROCESS_CLEANUP_RESTORE_SECLABEL = (1 << 1), + VIR_LXC_PROCESS_CLEANUP_REMOVE_TRANSIENT = (1 << 2), + VIR_LXC_PROCESS_CLEANUP_AUTODESTROY = (1 << 3), +} virLXCProcessCleanupFlags; + static void lxcProcessAutoDestroy(virDomainObj *dom, virConnectPtr conn) @@ -87,23 +94,21 @@ static int virLXCProcessReboot(virLXCDriver *driver, virDomainObj *vm) { - g_autoptr(virConnect) autoDestroyConn = virCloseCallbacksGetConn(driver->closeCallbacks, vm); + /* we want to keep the autodestroy callback registered */ + unsigned int stopFlags = ~(VIR_LXC_PROCESS_CLEANUP_AUTODESTROY); int reason = vm->state.reason; virDomainDef *savedDef; VIR_DEBUG("Faking reboot"); - if (autoDestroyConn) - virObjectRef(autoDestroyConn); - /* In a reboot scenario, we need to make sure we continue * to use the current 'def', and not switch to 'newDef'. * So temporarily hide the newDef and then reinstate it */ savedDef = g_steal_pointer(&vm->newDef); - virLXCProcessStop(driver, vm, VIR_DOMAIN_SHUTOFF_SHUTDOWN, 0); + virLXCProcessStop(driver, vm, VIR_DOMAIN_SHUTOFF_SHUTDOWN, stopFlags); vm->newDef = savedDef; - if (virLXCProcessStart(driver, vm, 0, NULL, autoDestroyConn, reason) < 0) { + if (virLXCProcessStart(driver, vm, 0, NULL, NULL, reason) < 0) { VIR_WARN("Unable to handle reboot of vm %s", vm->def->name); return -1; } @@ -126,12 +131,6 @@ lxcProcessRemoveDomainStatus(virLXCDriverConfig *cfg, } -typedef enum { - VIR_LXC_PROCESS_CLEANUP_RELEASE_SECLABEL = (1 << 0), - VIR_LXC_PROCESS_CLEANUP_RESTORE_SECLABEL = (1 << 1), - VIR_LXC_PROCESS_CLEANUP_REMOVE_TRANSIENT = (1 << 2), -} virLXCProcessCleanupFlags; - /** * virLXCProcessCleanup: * @driver: pointer to driver structure @@ -188,8 +187,9 @@ static void virLXCProcessCleanup(virLXCDriver *driver, } /* Stop autodestroy in case guest is restarted */ - virCloseCallbacksUnset(driver->closeCallbacks, vm, - lxcProcessAutoDestroy); + if (flags & VIR_LXC_PROCESS_CLEANUP_AUTODESTROY) { + virCloseCallbacksUnset(driver->closeCallbacks, vm, lxcProcessAutoDestroy); + } if (priv->monitor) { virLXCMonitorClose(priv->monitor); -- 2.36.1

Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- src/hypervisor/virclosecallbacks.c | 24 ------------------------ src/hypervisor/virclosecallbacks.h | 3 --- src/libvirt_private.syms | 1 - 3 files changed, 28 deletions(-) diff --git a/src/hypervisor/virclosecallbacks.c b/src/hypervisor/virclosecallbacks.c index c533e695f1..a08464438a 100644 --- a/src/hypervisor/virclosecallbacks.c +++ b/src/hypervisor/virclosecallbacks.c @@ -195,30 +195,6 @@ virCloseCallbacksGet(virCloseCallbacks *closeCallbacks, return cb; } -virConnectPtr -virCloseCallbacksGetConn(virCloseCallbacks *closeCallbacks, - virDomainObj *vm) -{ - char uuidstr[VIR_UUID_STRING_BUFLEN]; - virDriverCloseDef *closeDef; - virConnectPtr conn = NULL; - - virUUIDFormat(vm->def->uuid, uuidstr); - VIR_DEBUG("vm=%s, uuid=%s", vm->def->name, uuidstr); - - virObjectLock(closeCallbacks); - - closeDef = virHashLookup(closeCallbacks->list, uuidstr); - if (closeDef) - conn = closeDef->conn; - - virObjectUnlock(closeCallbacks); - - VIR_DEBUG("conn=%p", conn); - return conn; -} - - typedef struct _virCloseCallbacksListEntry virCloseCallbacksListEntry; struct _virCloseCallbacksListEntry { unsigned char uuid[VIR_UUID_BUFLEN]; diff --git a/src/hypervisor/virclosecallbacks.h b/src/hypervisor/virclosecallbacks.h index 5a56dea292..7afb0e5640 100644 --- a/src/hypervisor/virclosecallbacks.h +++ b/src/hypervisor/virclosecallbacks.h @@ -44,9 +44,6 @@ virCloseCallback virCloseCallbacksGet(virCloseCallbacks *closeCallbacks, virDomainObj *vm, virConnectPtr conn); -virConnectPtr -virCloseCallbacksGetConn(virCloseCallbacks *closeCallbacks, - virDomainObj *vm); void virCloseCallbacksRun(virCloseCallbacks *closeCallbacks, diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index f4732f1742..1dd611e697 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -1594,7 +1594,6 @@ virDomainJobTypeToString; # hypervisor/virclosecallbacks.h virCloseCallbacksGet; -virCloseCallbacksGetConn; virCloseCallbacksNew; virCloseCallbacksRun; virCloseCallbacksSet; -- 2.36.1

On Tue, 2022-07-19 at 12:45 +0200, Peter Krempa wrote:
The end-goal is to remove 'virCloseCallbacksGetConn'.
Peter Krempa (7): virLXCProcessStop: Add 'cleanupFlags' parameter virLXCProcessStart: Pass in virConnect object only when registering autodestroy virLXCProcessReboot: Simplify cleanup virLXCProcessAutostartAll: Remove unused 'conn' virLXCProcessAutostartDomain: Refactor control flow and variable use virLXCProcessReboot: Remove the need to re-register autodestroy callback virclosecallbacks: Remove unused virCloseCallbacksGetConn
src/hypervisor/virclosecallbacks.c | 24 ----- src/hypervisor/virclosecallbacks.h | 3 - src/libvirt_private.syms | 1 - src/lxc/lxc_driver.c | 17 ++-- src/lxc/lxc_process.c | 141 +++++++++++---------------- -- src/lxc/lxc_process.h | 8 +- 6 files changed, 69 insertions(+), 125 deletions(-)
Reviewed-by: Tim Wiederhake <twiederh@redhat.com>
participants (2)
-
Peter Krempa
-
Tim Wiederhake