On Fri, Dec 18, 2009 at 02:18:32PM +0000, Mark McLoughlin wrote:
On Fri, 2009-12-18 at 14:07 +0000, Daniel P. Berrange wrote:
>
> The thing I'm trying to avoid is having libvirt update the persistent
> config files outside the context of the existing virDefineXML API,
Remind me why are you trying to avoid that
(I've always been a bit dubious about virDefineXML saving a different
config from the one you've supplied, but that's a different matter)
> and
> updating the live state file only helps for the duration the that VM
> is running. Hence I came up with the static vs dynamic idea, where the
> app would see the dynamic address, dump the XML and re-define it with
> static addresses.
>
> The only other option I see is to explicitly assign all PCI addresses
> at time of virDefineXML, and then always pass an address on the command
> line to QEMU for all devices, but this doesn't work for older QEMU where
> we can't set PCI addresses.
How about during virDefineXML, execing qemu, not starting the guest, but
instead just querying the device assignments and saving them? If we
ignored errors, it wouldn't change the semantics of the API.
Hmm. Even if you go with the 'dynamic' idea, you're kind of changing the
semantics anyway - you're saying the management apps should do 'define,
start, dumpxml, define' where they didn't have to do that before. And if
all apps should do that, we shouldn't 'start' do it automatically?
Actually I think I've been thinking about dynamic vs static at the wrong
level. It isn't something that needs to be considered per device. It is
a property of the QEMU version the guest runs, and we can figure that out
at time of define.
- For QEMU >= 0.12, all devices support static PCI addressing, so we
can easily assign all PCI addrs at time of virDefineXML and this
address info gets saved to disk.
- For QEMU < 0.12, no devices support static PCI addressing, so we will
always query for assigned PCI addrs at time of startup and have no
need to ever save this info to disk, since the QEMU doesn't support
static addressing
At most we need to indicate in the capabilities XML that a guest type
supports PCI addressing, merely as a piece of useful info for PCI. They
would never have to actually set any PCI addrs themselves.
Daniel
--
|: Red Hat, Engineering, London -o-
http://people.redhat.com/berrange/ :|
|:
http://libvirt.org -o-
http://virt-manager.org -o-
http://ovirt.org :|
|:
http://autobuild.org -o-
http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|