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