On 09/10/2015 09:20 AM, Nikolay Shirokovskiy wrote: > This is more structured code so it will be easier to add branch for _PARAMS > protocol here. It is not a pure refactoring strictly speaking as we remove > scenarios for broken cases when driver defines V3 feature and implements > perform function. So it is additionally a more solid code. > The commit message describes a bit more than what's going on... This patch just moves the checks for driver function closer to the respective calls... > Signed-off-by: Nikolay Shirokovskiy <nshirokovskiy@xxxxxxxxxxxxx> > --- > src/libvirt-domain.c | 14 ++++++++------ > 1 files changed, 8 insertions(+), 6 deletions(-) > Seems reasonable - although it becomes interesting to note that the following patch adds the Perform3 check to the Direct code... Of course back to my patch 2 comment about dconnuri - here's perhaps an assumption made at one time that the Perform & Perform3 API's will always have a non NULL dconnuri (although I didn't see any specific NONNULL checks). John > diff --git a/src/libvirt-domain.c b/src/libvirt-domain.c > index 07e342f..6f10c74 100644 > --- a/src/libvirt-domain.c > +++ b/src/libvirt-domain.c > @@ -3353,23 +3353,25 @@ virDomainMigratePeer2PeerPlain(virDomainPtr domain, > dconnuri, NULLSTR(xmlin), NULLSTR(dname), NULLSTR(uri), > bandwidth, flags); > > - if (!domain->conn->driver->domainMigratePerform && > - !domain->conn->driver->domainMigratePerform3) { > - virReportUnsupportedError(); > - return -1; > - } > - > if (virDomainMigrateCheckNotLocal(dconnuri) < 0) > return -1; > > if (VIR_DRV_SUPPORTS_FEATURE(domain->conn->driver, domain->conn, > VIR_DRV_FEATURE_MIGRATION_V3)) { > VIR_DEBUG("Using migration protocol 3"); > + if (!domain->conn->driver->domainMigratePerform3) { > + virReportUnsupportedError(); > + return -1; > + } > return domain->conn->driver->domainMigratePerform3 > (domain, xmlin, NULL, 0, NULL, NULL, dconnuri, > uri, flags, dname, bandwidth); > } else { > VIR_DEBUG("Using migration protocol 2"); > + if (!domain->conn->driver->domainMigratePerform) { > + virReportUnsupportedError(); > + return -1; > + } > if (xmlin) { > virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, "%s", > _("Unable to change target guest XML during " > -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list