[libvirt] [PATCH v2 10/14] libxl: support domain config modification in virDomainRestoreFlags
Marek Marczykowski-Górecki
marmarek at invisiblethingslab.com
Thu Jun 20 21:39:08 UTC 2013
On 20.06.2013 23:25, Jim Fehlig wrote:
> Marek Marczykowski-Górecki wrote:
>> Signed-off-by: Marek Marczykowski-Górecki <marmarek at invisiblethingslab.com>
>> ---
>> src/libxl/libxl_driver.c | 18 +++++++++++++-----
>> 1 file changed, 13 insertions(+), 5 deletions(-)
>>
>> diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c
>> index 8dec70b..7b50853 100644
>> --- a/src/libxl/libxl_driver.c
>> +++ b/src/libxl/libxl_driver.c
>> @@ -2306,11 +2306,6 @@ libxlDomainRestoreFlags(virConnectPtr conn, const char *from,
>> int ret = -1;
>>
>> virCheckFlags(VIR_DOMAIN_SAVE_PAUSED, -1);
>> - if (dxml) {
>> - virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, "%s",
>> - _("xml modification unsupported"));
>> - return -1;
>> - }
>>
>> libxlDriverLock(driver);
>>
>> @@ -2318,6 +2313,19 @@ libxlDomainRestoreFlags(virConnectPtr conn, const char *from,
>> if (fd < 0)
>> goto cleanup;
>>
>> + if (dxml) {
>>
>
> What kind of changes are supported in dxml? I tried passing xml that
> contained another vif, which caused libxl to fail the restore
What I use it for is (and is working):
- change name (use the same savefile to create many VMs)
- change IP
- change backend disk image
> libxl: error: libxl_device.c:878:device_backend_callback: unable to add
> device with path /local/domain/0/backend/vif/25/0
>
>> + virDomainDefPtr def2 = NULL;
>> +
>> + if (!(def2 = virDomainDefParseString(dxml, driver->caps, driver->xmlopt,
>> + 1 << VIR_DOMAIN_VIRT_XEN,
>> + VIR_DOMAIN_XML_INACTIVE))) {
>> + goto cleanup;
>> + }
>> + virDomainDefFree(def);
>> + def = def2;
>>
>
> But we've already thrown away the original config and replaced it with
> config that subsequently fails.
>
> The qemu driver calls virDomainDefCheckABIStability to ensure the new
> config is compatible, and IMO we should do the same here.
I'll take a look at it after my vacation (10.07)...
>
> Regards,
> Jim
>
>> + }
>> +
>> +
>> if (!(vm = virDomainObjListAdd(driver->domains, def,
>> driver->xmlopt,
>> VIR_DOMAIN_OBJ_LIST_ADD_LIVE |
>>
--
Best Regards,
Marek Marczykowski-Górecki
Invisible Things Lab
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 555 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20130620/5bf40d31/attachment-0001.sig>
More information about the libvir-list
mailing list