On Tue, Sep 08, 2015 at 09:26:12AM +0100, Joao Martins wrote: > This patch introduces migration v3 without ext. params. Most of > the changes are mechanical and most of it is moving code and handling > of the arguments in different way. Functional-wise it works same way > as its "Params" variants. > > By having v3 migration we end up supporting older variants of > virDomainMigrateToURI which don't use v3 with params. The latter is > only supported by the latest virDomainMigrateToURI3, thus we > broaden the API support of migration in libxl e.g. ability to use > virDomainMigrateToURI2 and virDomainMigrate (in P2P mode). > > Signed-off-by: Joao Martins <joao.m.martins@xxxxxxxxxx> > --- > src/libxl/libxl_driver.c | 213 +++++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 213 insertions(+) Hmm, this is the same issue that VZ driver has. It is madness for us to make every virt driver re-implement the V3 non-params variants. We could provide some standard stub impls in a common file that simply pack the parameters into a virTypedParam array and then invoke the V3 params variant APIs. That way we have on impl for all drivers. Would you like to create a file src/migration-helpers.c that contains impls of the domain(Prepare|Begin|Perform|Finish|Confirm)V3 methods, that simply create a virTypedParam array, and then re-invoke domain(Prepare|Begin|Perform|Finish|Confirm)V3Params methods. Then update QEMU driver to use those, and then also use them in libxl eg this: > @@ -5254,10 +5462,15 @@ static virHypervisorDriver libxlHypervisorDriver = { > .nodeDeviceDetachFlags = libxlNodeDeviceDetachFlags, /* 1.2.3 */ > .nodeDeviceReAttach = libxlNodeDeviceReAttach, /* 1.2.3 */ > .nodeDeviceReset = libxlNodeDeviceReset, /* 1.2.3 */ > + .domainMigrateBegin3 = libxlDomainMigrateBegin3, /* 1.2.20 */ would just do + .domainMigrateBegin3 = stubDomainMigrateBegin3, /* 1.2.20 */ where stubDomainMigrateBegin3 is the method from migration-helpers.c > .domainMigrateBegin3Params = libxlDomainMigrateBegin3Params, /* 1.2.6 */ > + .domainMigratePrepare3 = libxlDomainMigratePrepare3, /* 1.2.20 */ > .domainMigratePrepare3Params = libxlDomainMigratePrepare3Params, /* 1.2.6 */ > + .domainMigratePerform3 = libxlDomainMigratePerform3, /* 1.2.20 */ > .domainMigratePerform3Params = libxlDomainMigratePerform3Params, /* 1.2.6 */ > + .domainMigrateFinish3 = libxlDomainMigrateFinish3, /* 1.2.20 */ > .domainMigrateFinish3Params = libxlDomainMigrateFinish3Params, /* 1.2.6 */ > + .domainMigrateConfirm3 = libxlDomainMigrateConfirm3, /* 1.2.20 */ > .domainMigrateConfirm3Params = libxlDomainMigrateConfirm3Params, /* 1.2.6 */ > .nodeGetSecurityModel = libxlNodeGetSecurityModel, /* 1.2.16 */ > }; > -- Regards, Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :| -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list