[libvirt] [PATCH 23/24] maint: clean up error reporting in migration

John Ferlan jferlan at redhat.com
Fri Jan 3 01:57:22 UTC 2014



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 at 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...

>              goto error;
>          return ret;
>      }
> @@ -6679,7 +6688,7 @@ virDomainMigrateFinish3(virConnectPtr dconn,
>                                                    cookieout, cookieoutlen,
>                                                    dconnuri, uri, flags,
>                                                    cancelled);
> -        if (!ret)
> +        if (!ret && !cancelled)

here..

>              goto error;
>          return ret;
>      }
> @@ -6954,7 +6963,7 @@ virDomainMigrateFinish3Params(virConnectPtr dconn,
>          ret = dconn->driver->domainMigrateFinish3Params(
>                  dconn, params, nparams, cookiein, cookieinlen,
>                  cookieout, cookieoutlen, flags, cancelled);
> -        if (!ret)
> +        if (!ret && !cancelled)

here...

>              goto error;
>          return ret;
>      }

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

John




More information about the libvir-list mailing list