On Fri, Feb 16, 2024 at 07:46:01 -0800, Andrea Bolognani wrote:
On Fri, Feb 16, 2024 at 04:09:12PM +0100, Peter Krempa wrote:
> On Wed, Feb 14, 2024 at 18:11:16 +0100, Andrea Bolognani wrote:
> > + /* Make sure the 'none' USB controller doesn't have an
address
> > + * associated with it, as that would trip up later checks */
> > + if (cont->model == VIR_DOMAIN_CONTROLLER_MODEL_USB_NONE)
> > + cont->info.type = VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE;
>
> One thing I'm slightly unsure about is whether the removal of address
> won't have effect on generation of other addresses and thus in certain
> very weird situations could trip up the virDomainDefCheckABIStability check.
>
> Since the usb controller itself was never seen by the guest ABI that
> part will be okay, but not reserving the address for it could cause
> issues.
>
> Now for migration this shouldn't be a problem unless somebody is passing
> very weird migration XMLs.
>
> For new VMs it can theoretically cause re-ordering of devices on the PCI
> bus.
For new VMs, the guest ABI has not been set in stone yet so even if
devices and controllers were to be shuffled around it wouldn't
matter.
For existing VMs, all addressess will have been recorded in the
domain XML and libvirt would never attempt to change them.
Note that historically we've considered that in most cases a partial XML
to be freshly defined or used with virDomainCreateXML() should be ABI
compatible with how we've treated it historically. It is in certain
cases not practical/possible, but generally this should be kept as much
as possible.
Basically we can't decide to remove an auto-added device. For shuffling
addresses around, while we shouldn't do just for the heck of it, it can
be a reasonable change. If a user cares about the address they should
put it into the XML.
The point about migration is potentially a good one though. The
incoming XML will have the (default) model and address, but after
parsing they will be gone. Will that trip the ABI stability check?
No, unless you're providing a custom migration XML there's no ABI
stability check happening. The XML formatted by libvirt is considered to
be authoritative and well-enough defined. Additionally there's nothing
to check the ABI against, as the source of the migration is simply
declaring what's happening.
I'm never sure at what point of the process that gets executed,
and
on which inputs.