[PATCH] lxc: Cleanup after failed startup
Martin Kletzander
mkletzan at redhat.com
Fri Nov 6 14:36:29 UTC 2020
On Fri, Nov 06, 2020 at 02:30:13PM +0100, Michal Privoznik wrote:
>If starting an container fails, the virLXCProcessStop() is
>called. But since vm->def->id is not set until libvirt_lxc is
>spawned (the domain's ID is PID of that process),
>virLXCProcessStop() returns early as virDomainObjIsActive()
>returns false. But doing so leaves behind resources reserved for
>the containers during the startup process. Most notably, hostdevs
>are not re-attached to the host, the domain's transient XML is
>not removed, etc.
>
I'm not sure the virLXCProcessCleanup() function is prepared to be called under
such circumstances as its qemu counterpart. It looks virSecurity*RestoreLabel()
might be called when it ought not to be and that does not look safe to me. But
I'd be glad to be proved wrong.
>Signed-off-by: Michal Privoznik <mprivozn at redhat.com>
>---
> src/lxc/lxc_process.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
>diff --git a/src/lxc/lxc_process.c b/src/lxc/lxc_process.c
>index c5a710fc3f..08c82b0e9a 100644
>--- a/src/lxc/lxc_process.c
>+++ b/src/lxc/lxc_process.c
>@@ -855,7 +855,7 @@ int virLXCProcessStop(virLXCDriverPtr driver,
> vm->def->name, (int)vm->pid, (int)reason);
> if (!virDomainObjIsActive(vm)) {
> VIR_DEBUG("VM '%s' not active", vm->def->name);
>- return 0;
>+ goto cleanup;
> }
>
> priv = vm->privateData;
>--
>2.26.2
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20201106/dcd1cc13/attachment-0001.sig>
More information about the libvir-list
mailing list