On 6/11/21 9:40 AM, Huangzhichao wrote:
Hi Everyone,
We find migration capabilities is not reset after restarting libvirtd, it would cause
problem in the following scene:
Version: libvirt release 7.4.0
Step 1. create a VM and query migration capabilities, mark the return content as “Cap
A”.
Step 2. stop the source libvirtd service when executing live migration, then migration
failed.
Step 3. restart the source libvirtd service, then query migration capabilities, mark the
return content as “Cap B”.
“Cap A” is different from “Cap B”, because the source libvirtd service would set
migration capabilities when executing live migration.
We find that there is a patch may cause this problem.
Link:
https://libvirt.org/git/?p=libvirt.git;a=commitdiff;h=a1dec315c9ad87a1982...
<
https://libvirt.org/git/?p=libvirt.git;a=commitdiff;h=a1dec315c9ad87a1982...
I'm not sure this patch is the culprit here. IMO the problem seems to
be with the refresh of priv->migrationCaps bitmap in the situation you
described. The migrationCaps from the failed migration are being restored
in libvirtd restart.
When we roll back this patch, “CAP A” would be the same as “CAP B”.
Do you have any suggestion ?
I suggest looking into how priv->migrationCaps is being fetched in that
scenario. qemuMigrationCapsCheck() seems like a good place to start
digging since it's the only place where priv->migrationCaps bits are
being set.
Thanks,
Daniel
Thanks.