On 08/25/2011 01:03 PM, Jiri Denemark wrote:
On Tue, Aug 16, 2011 at 21:39:41 +0200, Jiri Denemark wrote:
> On Tue, Aug 16, 2011 at 08:33:04 -0600, Eric Blake wrote:
>> On 08/16/2011 04:44 AM, Jiri Denemark wrote:
>>> If migration failed on source daemon, the migration is automatically
>>> canceled by the daemon itself. Thus we don't need to call
>>> virDomainMigrateConfirm3(cancelled=1). Calling it doesn't cause any harm
>>> but the resulting error message printed in logs may confuse people.
>>> ---
>>> src/libvirt.c | 41 +++++++++++++++++++++++++----------------
>>> 1 files changed, 25 insertions(+), 16 deletions(-)
>>
>> Shouldn't qemu_migration.c get the same fix, since peer2peer and
>> tunneled migration basically re-implement the same migration driver
>> function?
>
> It's reimplementing the same thing but in a different context. The code in
> libvirt.c runs on a client, while qemu_migration.c runs within the qemu driver
> in libvirtd. The virDomainMigratePrform3 API called from libvirt.c cleans up
> after itself; it resumes a domain and finishes the migration job in case of
> error. On the other hand, everything in doPeer2PeerMigrate3 is run within a
> single public API and the function called to do the Perform phase is an
> internal function which doesn't clean up after itself in the same way as the
> public API has to. Hence, we need to call qemuMigrationConfirm to actually
> resume the domain even if the Perform phase failed.
Ping. Did I manage to convince you this patch is complete? :-)
Yes. ACK, although since I just pushed Alex' patch, you might have a
merge conflict to fix when you rebase.
--
Eric Blake eblake(a)redhat.com +1-801-349-2682
Libvirt virtualization library
http://libvirt.org