Ping: [PATCH] Qemu: migration: Not bind RAM info with active migration status

Jiri Denemark jdenemar at
Wed Jan 6 18:11:34 UTC 2021

On Tue, Jan 05, 2021 at 21:54:05 +0800, Keqian Zhu wrote:
> On 2021/1/5 21:34, Daniel P. Berrangé wrote:
> > On Tue, Jan 05, 2021 at 09:28:27PM +0800, Keqian Zhu wrote:
> >>>> The purpose of QEMU commit 65ace0604551 (migration: add postcopy total blocktime into query-migrate)
> >>>> is to query some postcopy related information on destination side.

The total post-copy block time is only computed when postcopy-blocktime
migration capability is enabled. Libvirt does not support this
capability so I believe this patch is fixing something that can never

> >>>>
> >>>> We can call query-migrate on destination side *after* migration complete, thanks.
> >>>
> >>> But nothing in libvirt ever tries to call query-migrate on the dest
> >>> side. 
> >> Yes, but the dest side does not always act as dest. After migration completion, the dest side enters
> >> to a normal status and libvirt does not forbid us to query migration status.
> >>
> >> Before QEMU commit 65ace0604551, we can successfully query the migration status, which is
> >> MIGRATION_STATUS_NONE. But this commit will return valid status (MIGRATION_STATUS_COMPLETED)
> >> without ram info, causing libvirt reports error (migration was active, but no RAM info was set).
> >>
> >>>
> >>> Do you have more patches that add such calls ? If so, then please send a
> >>> patch series that does the full job.
> >> I do not add new feature to libvirt, but just manually execute query-migrate on dest side *after
> >> migration completion* will trigger this problem.
> > 
> > How are you running query-migrate ? If you're doing that with monitor
> > command passthrough then we shouldn't need to change the libvirt migration
> > code.
> OK. I am not very familiar with libvirt code logic, and my work flow is:
>      source side                                dest side
>  virsh start domain_name                            |
>       |                                             |
>  virsh migrate --live domain_name       (wait for migrate complete)
>       |                                             |
>   (migrate complete)                                |
>                                         virsh domjobinfo domain_name
>                                                     |
>                                  (migration was active, but no RAM info was set)
> Hope the above work flow helps.

You're trying to fetch statistics about a completed migration, for which
virsh domjobinfo --completed should be used.

Instead of hacking around it, we should properly implement support for
postcopy-blocktime and fetch the blocktime once migration completes
internally to make it available via the existing virsh domjobinfo
--completed command. Libvirt users should not need to know that
domjobinfo may magically be called even when migration is not running to
fetch some additional data.


More information about the libvir-list mailing list