
On 01/02/2014 06:57 PM, John Ferlan wrote:
On 12/28/2013 11:11 AM, Eric Blake wrote:
While auditing the error reporting, I noticed that migration had some issues. Some of the static helper functions tried to call virDispatchError(), even though their caller will also report the error. Also, if a migration is cancelled early because a uri was not set, we did not guarantee that the finish stage would not overwrite the first error message.
* src/qemu/qemu_migration.c (doPeer2PeerMigrate2) (doPeer2PeerMigrate3): Preserve first error when cancelling. * src/libvirt.c (virDomainMigrateVersion3Full): Likewise. (virDomainMigrateVersion1, virDomainMigrateVersion2) (virDomainMigrateDirect): Avoid redundant error dispatch. (virDomainMigrateFinish2, virDomainMigrateFinish3) (virDomainMigrateFinish3Params): Don't report error on cleanup path. (virDomainMigratePeer2PeerFull, virDomainMigrateDirect) (virDomainMigrate2): Use correct errors. (virDomainMigrate*): Prefer virReportError over virLibConnError.
Signed-off-by: Eric Blake <eblake@redhat.com> --- src/libvirt.c | 181 ++++++++++++++++++++++++---------------------- src/qemu/qemu_migration.c | 10 ++- 2 files changed, 104 insertions(+), 87 deletions(-)
diff --git a/src/libvirt.c b/src/libvirt.c index a74bfc7..637bfc1 100644 --- a/src/libvirt.c +++ b/src/libvirt.c
<...snip...>
@@ -6387,7 +6396,7 @@ virDomainMigrateFinish2(virConnectPtr dconn, cookie, cookielen, uri, flags, retcode); - if (!ret) + if (!ret && !retcode)
This one (and the two below) feel like a bug fix unrelated to error reporting/processing...
Indeed; I'll split this into smaller chunks in my series v2 post, and see if we can git Jirka to look at it as well (since he's familiar with migration error scenarios).
ACK in general - your call on whether to split out the extra checks pointed out above or leave things as they are. If in fact those are "bugs" that "should" go into a RHEL release, then perhaps they need to be separated...
Worth a v2. -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org