[libvirt] [PATCH 04/19] qemu: Allow all query commands to be run during long jobs

Eric Blake eblake at redhat.com
Wed Jul 27 22:10:22 UTC 2011


On 07/07/2011 05:34 PM, Jiri Denemark wrote:
> Query commands are safe to be called during long running jobs (such as
> migration). This patch makes them all work without the need to
> special-case every single one of them.

Git bisect says that this was the culprit commit that broke 'virsh 
managedsave'.

> +static int
>   qemuDomainObjEnterMonitorInternal(struct qemud_driver *driver,
>                                     virDomainObjPtr obj)
>   {
>       qemuDomainObjPrivatePtr priv = obj->privateData;
>
> +    if (priv->job.active == QEMU_JOB_NONE&&  priv->job.asyncJob) {
> +        if (qemuDomainObjBeginNestedJob(obj)<  0)
> +            return -1;
> +        if (!virDomainObjIsActive(obj)) {
> +            qemuReportError(VIR_ERR_OPERATION_FAILED, "%s",
> +                            _("domain is no longer running"));
> +            return -1;
> +        }
> +    }

I think this is the problem.  Doing a managed save will eventually make 
the qemu process go away, so we reach a point where we cannot issue a 
query monitor command to see how the save is progressing.  But this 
function only checks that vm is still active for QEMU_JOB_NONE, not for 
QEMU_ASYNC_JOB_SAVE.

I'm trying out a patch now...

-- 
Eric Blake   eblake at redhat.com    +1-801-349-2682
Libvirt virtualization library http://libvirt.org




More information about the libvir-list mailing list