
Hey, Looks fine to me, but if you're looking for comments ... :-) On Fri, 2009-05-29 at 14:39 +0100, Daniel P. Berrange wrote:
To, also include the operating system driver name.
$ virsh nodedev-dumpxml pci_8086_27d6 <device> <name>pci_8086_27d6</name> <parent>computer</parent> <driver> <name>pcieport-driver</name> </driver> <capability type='pci'> <domain>0</domain> <bus>0</bus> <slot>28</slot> <function>3</function> <product id='0x27d6'>82801G (ICH7 Family) PCI Express Port 4</product> <vendor id='0x8086'>Intel Corporation</vendor> </capability> </device>
We're not defining any particular semantics for the driver name, it is just a opaque string following rules of the OS in question.
The obvious question is "what's this for?" If this is just an opaque string, what should people use it for?
diff -r ec78a5d6c00c src/node_device.c --- a/src/node_device.c Thu May 28 14:42:24 2009 +0100 +++ b/src/node_device.c Thu May 28 16:00:12 2009 +0100 @@ -46,6 +46,60 @@ static int dev_has_cap(const virNodeDevi return 0; }
+#ifdef __linux__ +static int update_driver_name(virConnectPtr conn, + virNodeDeviceObjPtr dev) +{ + char *driver_link = NULL; + char devpath[PATH_MAX]; + char *p; + int ret = -1; + int n; + + VIR_FREE(dev->def->driver); + + if (virAsprintf(&driver_link, "%s/driver", dev->devicePath) < 0) { + virReportOOMError(conn); + goto cleanup; + } + + /* Some devices don't have an explicit driver, so just return + without a name */ + if (access(driver_link, R_OK) < 0) { + ret = 0; + goto cleanup; + } + + if ((n = readlink(driver_link, devpath, sizeof devpath)) < 0) { + virReportSystemError(conn, errno, + _("cannot resolve driver link %s"), driver_link);
Do we really want dumpxml to fail for this?
+ goto cleanup; + } + devpath[n] = '\0'; + + p = strrchr(devpath, '/'); + if (p) { + dev->def->driver = strdup(p+1);
basename() ? (you already use basename() in storage_backend_disk.c)
diff -r ec78a5d6c00c src/node_device_hal.c --- a/src/node_device_hal.c Thu May 28 14:42:24 2009 +0100 +++ b/src/node_device_hal.c Thu May 28 16:00:12 2009 +0100
Probably should add a FIXME in node_device_devkit.c about adding support for this. Cheers, Mark.