[PATCH] vm : forbid to start a removing vm

Daniel Henrique Barboza danielhb413 at gmail.com
Tue Mar 16 18:48:20 UTC 2021



On 3/10/21 10:13 PM, Hogan Wang wrote:
> From: Zhuang Shengen <zhuangshengen at huawei.com>
> 
> When a vm is doing migration phase confirm, and then start it concurrently,
> it will lead to the vm out of libvirtd control.
> 
> Cause Analysis:
> 1. thread1 migrate vm out.
> 2. thread2 start the migrating vm.
> 3. thread1 remove vm from domain list after migrate success.
> 4. thread2 acquired the vm job success and start the vm.
> 5. cannot find the vm any more by 'virsh list' command. Actually,
>     the started vm is not exist in the domain list.
> 
> Solution:
> Check the vm->removing state before start.
> 
> 
> Signed-off-by: Zhuang Shengen <zhuangshengen at huawei.com>
> Reviewed-by: Hogan Wang <hogan.wang at huawei.com>
> ---

Reviewed-by: Daniel Henrique Barboza <danielhb413 at gmail.com>


>   src/qemu/qemu_driver.c | 6 ++++++
>   1 file changed, 6 insertions(+)
> 
> diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
> index d1a3659774..a5dfea94cb 100644
> --- a/src/qemu/qemu_driver.c
> +++ b/src/qemu/qemu_driver.c
> @@ -6637,6 +6637,12 @@ qemuDomainCreateWithFlags(virDomainPtr dom, unsigned int flags)
>           goto endjob;
>       }
>   
> +    if (vm->removing) {
> +        virReportError(VIR_ERR_OPERATION_INVALID,
> +                       "%s", _("domain is already removing"));
> +        goto endjob;
> +    }
> +
>       if (qemuDomainObjStart(dom->conn, driver, vm, flags,
>                              QEMU_ASYNC_JOB_START) < 0)
>           goto endjob;
> 




More information about the libvir-list mailing list