[PATCH] libxl: Normalize MAC address in device conf when hotplugging a netdev

Jim Fehlig jfehlig at suse.com
Wed Jun 3 14:33:45 UTC 2020

On 6/2/20 9:58 PM, Laine Stump wrote:
> On 5/28/20 1:09 PM, Jim Fehlig wrote:
>> Similar to commit 6c17606b7cc, normalize the MAC addresses in persistent
>> and live device config to avoid a different MAC address for the device
>> once the VM is rebooted and persistent config takes affect.
> Well...
> This has a bigger change than commit 6c17606b7cc! :-)
> For those who don't feel like digging back through the git blame history, commit 
> 6c17606b7cc just added a call to qemuDomainAttachDeviceLiveAndConfigHomogenize() 
> in the QEMU driver version of AttachDeviceFlags() to make the MAC addresses of 
> the *already-existing* "live" and "config" copies of the device object match 
> each other - qemu's function had previously been changed back in commit 55ce6564 
> to create separate copies of the device object for config and live (although it 
> still had to save an extra pointer to the config copy, which was being consumed 
> by the the qemuDomainAttachDeviceConfig(), with the pointer NULLed
> The libxl driver hadn't gotten that change though, so up until now it's only had 
> a single device object pointer, and although it separately parsed the XML for 
> live and config, this was done sequentially into the same object, so the two 
> never existed at the same time. Since both objects must exist at the same time 
> to copy anything from one to the other (without "extra steps"), this new patch 
> is effectively the libxl equivalent of commit 55ce6564 and commit 6c17606b7cc 
> put together.
> That was a long prelude to "maybe mention commit 55ce6564 in the commit log as 
> well" :-)

Agreed, I'll add it. Thanks for the details.

>> Signed-off-by: Jim Fehlig <jfehlig at suse.com>
>> ---
>>   src/libxl/libxl_driver.c | 56 +++++++++++++++++++++++++++++++++-------
>>   1 file changed, 46 insertions(+), 10 deletions(-)
>> diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c
>> index 63ec0a2188..a80bc3fe3a 100644
>> --- a/src/libxl/libxl_driver.c
>> +++ b/src/libxl/libxl_driver.c
>> @@ -4096,6 +4096,31 @@ libxlDomainUpdateDeviceConfig(virDomainDefPtr vmdef, 
>> virDomainDeviceDefPtr dev)
>>   }
>> +static void
>> +libxlDomainAttachDeviceNormalize(const virDomainDeviceDef *devConf,
> What? You didn't like my verb in the QEMU version? :-)

It made me think of milk :-).

> (I can't remember why I picked Homogenize instead of Normalize, but I must have 
> had some reason. Maybe I was just thinking back to the dairy farm next door to 
> my childhood home (true story!))

Haha, that explains it! I think I would have preferred a dairy farm over the 
steel mills and refineries of my childhood :-).

> At any rate, it all looks good
> Reviewed-by: Laine Stump <laine at redhat.com>

Thanks for the review!


More information about the libvir-list mailing list