[libvirt] [PATCH 1/5] Code to return interface name or pci_addr of the VF in actualDevice
Daniel P. Berrange
berrange at redhat.com
Tue Jun 12 16:08:13 UTC 2012
On Tue, Jun 12, 2012 at 12:03:02PM -0400, Laine Stump wrote:
> On 06/11/2012 01:14 PM, Laine Stump wrote:
> > On 06/11/2012 11:50 AM, Daniel P. Berrange wrote:
> >> On Fri, Jun 08, 2012 at 04:29:14PM +0100, Shradha Shah wrote:
> >>> @@ -925,6 +931,44 @@ error:
> >>> return result;
> >>> }
> >>>
> >>> +/* Function to compare strings with wildcard strings*/
> >>> +/* When editing this function also edit the one in src/network/bridge_driver.c*/
> >>> +static int
> >>> +wildcmp(const char *wild, const char *string)
> >>> +{
> >>> +/* Written by Jack Handy - <A href="mailto:jakkhandy at hotmail.com">jakkhandy at hotmail.com</A>*/
> >> Isn't this just reimplementing the Glibc 'fnmatch' function that
> >> we already use ?
> > Beyond that, this is being used to support another case of crowding
> > multiple data items into a single attribute, which we actively
> > discourage (see the current thread about dhcpsnoop :-).
> >
> > Instead of re-purposing the singular char *dev, it would be better to
> > follow the example of, e.g., virDomainDeviceInfo, and have a union like
> > this:
> >
> > int type;
> > union {
> > virDomainDevicePCIAddress pci;
> > char *dev;
> > } addr;
> >
> > or just put both directly in the struct if you might want both to be
> > populated at the same time for some reason (maybe you want to derive all
> > the PCI addresses from the netdev name, or vice versa, and cache them
> > here. Or maybe you don't, I don't have an opinion).
> >
> > The XML for this would then look something like this:
> >
> > <network>
> > <name>hostdev-network</name>
> > <forward mode="hostdev">
> > <interface type='pci' domain='0x0000' bus='0x04' slot='0x00'
> > function='0x01'/>
> > <interface type='pci' domain='0x0000' bus='0x04' slot='0x00'
> > function='0x02'/>
> > <interface type='pci' domain='0x0000' bus='0x04' slot='0x00'
> > function='0x03'/>
> > </forward>
> > </network>
> >
> > Or maybe, for consistency with source addresses in domain device
> > definitions, it should be:
> >
> > <network>
> > <name>hostdev-network</name>
> > <forward mode="hostdev">
> > <address type='pci' domain='0x0000' bus='0x04' slot='0x00'
> > function='0x01'/>
> > <address type='pci' domain='0x0000' bus='0x04' slot='0x00'
> > function='0x02'/>
> > <address type='pci' domain='0x0000' bus='0x04' slot='0x00'
> > function='0x03'/>
> > </forward>
> > </network>
>
> Also, about the "managed" attribute you introduced in PATCH 5/5 (which I
> suggested you should add at the same time as the rest of the new XML):
>
> Do you really think anyone will ever want some of the interfaces to be
> managed='yes' and some managed='no'? If you rework the XML as I suggest
> above, you would be able to reuse the same function to parse and format
> pci addresses; if you add a "managed" attribute to each address element,
> you would no longer be able to do that.
>
> Alternately, if you just add a single managed attribute to <forward>,
> the <address> sub-element would remain identical to the <address> in the
> domain devices' <source> element, so the parse/format functions could be
> shared (and the consistency would also make mixups less likely).
> Something like this:
>
> <network>
> <name>hostdev-network</name>
> <forward mode="hostdev" managed="yes">
> <address type='pci' domain='0x0000' bus='0x04' slot='0x00' function='0x01'/>
> <address type='pci' domain='0x0000' bus='0x04' slot='0x00' function='0x02'/>
> <address type='pci' domain='0x0000' bus='0x04' slot='0x00' function='0x03'/>
> </forward>
> </network
>
>
> You lose some flexibility, but are able to re-use more code. If it never
> makes sense to mix managed and un-managed (I don't know enough about the
> topic to have the answer to that), then the lost flexibility is meaningless.
>
>
> > (anyone else have an opinion on this?)
>
> The same question holds for this new addition :-)
Yes, I tend to agree with your suggestions that we should model the
PCI addresses fully and not have their encoded in a string.
Daniel
--
|: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org -o- http://virt-manager.org :|
|: http://autobuild.org -o- http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|
More information about the libvir-list
mailing list