[PATCH] libxl: Normalize MAC address in device conf when hotplugging a netdev
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.
> 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