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 happen. > >>>> > >>>> 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. Jirka