On Thu, Nov 20, 2008 at 06:14:53PM +0000, Mark McLoughlin wrote:
On Thu, 2008-11-20 at 18:03 +0000, Daniel P. Berrange wrote:
> case VIR_NODE_DEV_CAP_STORAGE:
> + virBufferVSprintf(&buf, "
<block>%s</blocke>\n",
^
Minore tpyo hero
Opps !
I also forgot one other thing we talked about - changing the PCI and
USB vendor+product numbers into Hex. I've made that change here, and
prefixed with 0x so its obvious they are Hex.
Daniel
diff -r 449c387f2de9 src/node_device_conf.c
--- a/src/node_device_conf.c Thu Nov 20 18:08:58 2008 +0000
+++ b/src/node_device_conf.c Thu Nov 20 18:25:36 2008 +0000
@@ -43,7 +43,6 @@
"usb_device",
"usb",
"net",
- "block",
"scsi_host",
"scsi",
"storage");
@@ -221,14 +220,14 @@
data->pci_dev.slot);
virBufferVSprintf(&buf, "
<function>%d</function>\n",
data->pci_dev.function);
- virBufferVSprintf(&buf, " <product id='%d'",
+ virBufferVSprintf(&buf, " <product id='0x%04x'",
data->pci_dev.product);
if (data->pci_dev.product_name)
virBufferEscapeString(&buf, ">%s</product>\n",
data->pci_dev.product_name);
else
virBufferAddLit(&buf, " />\n");
- virBufferVSprintf(&buf, " <vendor id='%d'",
+ virBufferVSprintf(&buf, " <vendor id='0x%04x'",
data->pci_dev.vendor);
if (data->pci_dev.vendor_name)
virBufferEscapeString(&buf, ">%s</vendor>\n",
@@ -240,14 +239,14 @@
virBufferVSprintf(&buf, " <bus>%d</bus>\n",
data->usb_dev.bus);
virBufferVSprintf(&buf, "
<device>%d</device>\n",
data->usb_dev.device);
- virBufferVSprintf(&buf, " <product id='%d'",
+ virBufferVSprintf(&buf, " <product id='0x%04x'",
data->usb_dev.product);
if (data->usb_dev.product_name)
virBufferEscapeString(&buf, ">%s</product>\n",
data->usb_dev.product_name);
else
virBufferAddLit(&buf, " />\n");
- virBufferVSprintf(&buf, " <vendor id='%d'",
+ virBufferVSprintf(&buf, " <vendor id='0x%04x'",
data->usb_dev.vendor);
if (data->usb_dev.vendor_name)
virBufferEscapeString(&buf, ">%s</vendor>\n",
@@ -280,10 +279,6 @@
virBufferVSprintf(&buf, " <capability
type='%s'/>\n", subtyp);
}
break;
- case VIR_NODE_DEV_CAP_BLOCK:
- virBufferVSprintf(&buf, "
<device>%s</device>\n",
- data->block.device);
- break;
case VIR_NODE_DEV_CAP_SCSI_HOST:
virBufferVSprintf(&buf, " <host>%d</host>\n",
data->scsi_host.host);
@@ -299,6 +294,8 @@
data->scsi.type);
break;
case VIR_NODE_DEV_CAP_STORAGE:
+ virBufferVSprintf(&buf, " <block>%s</block>\n",
+ data->storage.block);
if (data->storage.bus)
virBufferVSprintf(&buf, " <bus>%s</bus>\n",
data->storage.bus);
@@ -380,15 +377,13 @@
VIR_FREE(data->net.interface);
VIR_FREE(data->net.address);
break;
- case VIR_NODE_DEV_CAP_BLOCK:
- VIR_FREE(data->block.device);
- break;
case VIR_NODE_DEV_CAP_SCSI_HOST:
break;
case VIR_NODE_DEV_CAP_SCSI:
VIR_FREE(data->scsi.type);
break;
case VIR_NODE_DEV_CAP_STORAGE:
+ VIR_FREE(data->storage.block);
VIR_FREE(data->storage.bus);
VIR_FREE(data->storage.drive_type);
VIR_FREE(data->storage.model);
diff -r 449c387f2de9 src/node_device_conf.h
--- a/src/node_device_conf.h Thu Nov 20 18:08:58 2008 +0000
+++ b/src/node_device_conf.h Thu Nov 20 18:25:36 2008 +0000
@@ -34,7 +34,6 @@
VIR_NODE_DEV_CAP_USB_DEV, /* USB device */
VIR_NODE_DEV_CAP_USB_INTERFACE, /* USB interface */
VIR_NODE_DEV_CAP_NET, /* Network device */
- VIR_NODE_DEV_CAP_BLOCK, /* Block device */
VIR_NODE_DEV_CAP_SCSI_HOST, /* SCSI Host Bus Adapter */
VIR_NODE_DEV_CAP_SCSI, /* SCSI device */
VIR_NODE_DEV_CAP_STORAGE, /* Storage device */
@@ -107,9 +106,6 @@
enum virNodeDevNetCapType subtype; /* LAST -> no subtype */
} net;
struct {
- char *device;
- } block;
- struct {
unsigned host;
} scsi_host;
struct {
@@ -122,6 +118,7 @@
struct {
unsigned long long size;
unsigned long long removable_media_size;
+ char *block;
char *bus;
char *drive_type;
char *model;
diff -r 449c387f2de9 src/node_device_devkit.c
--- a/src/node_device_devkit.c Thu Nov 20 18:08:58 2008 +0000
+++ b/src/node_device_devkit.c Thu Nov 20 18:25:36 2008 +0000
@@ -31,6 +31,7 @@
#include "event.h"
#include "memory.h"
#include "uuid.h"
+#include "logging.h"
#include "node_device.h"
@@ -133,12 +134,12 @@
}
-static int gather_block_cap(DevkitDevice *dkdev,
- union _virNodeDevCapData *d)
+static int gather_storage_cap(DevkitDevice *dkdev,
+ union _virNodeDevCapData *d)
{
const char *device = devkit_device_get_device_file(dkdev);
- if (device && ((d->block.device = strdup(device)) == NULL))
+ if (device && ((d->storage.block = strdup(device)) == NULL))
return -1;
return 0;
@@ -158,7 +159,7 @@
{ "pci", VIR_NODE_DEV_CAP_PCI_DEV, gather_pci_cap },
{ "usb", VIR_NODE_DEV_CAP_USB_DEV, gather_usb_cap },
{ "net", VIR_NODE_DEV_CAP_NET, gather_net_cap },
- { "block", VIR_NODE_DEV_CAP_BLOCK, gather_block_cap },
+ { "block", VIR_NODE_DEV_CAP_STORAGE, gather_storage_cap },
// TODO: more caps!
};
diff -r 449c387f2de9 src/node_device_hal.c
--- a/src/node_device_hal.c Thu Nov 20 18:08:58 2008 +0000
+++ b/src/node_device_hal.c Thu Nov 20 18:25:36 2008 +0000
@@ -211,14 +211,6 @@
}
-static int gather_block_cap(LibHalContext *ctx, const char *udi,
- union _virNodeDevCapData *d)
-{
- (void)get_str_prop(ctx, udi, "block.device", &d->block.device);
- return 0;
-}
-
-
static int gather_scsi_host_cap(LibHalContext *ctx, const char *udi,
union _virNodeDevCapData *d)
{
@@ -243,6 +235,7 @@
union _virNodeDevCapData *d)
{
int val;
+ (void)get_str_prop(ctx, udi, "block.device", &d->storage.block);
(void)get_str_prop(ctx, udi, "storage.bus", &d->storage.bus);
(void)get_str_prop(ctx, udi, "storage.drive_type",
&d->storage.drive_type);
(void)get_str_prop(ctx, udi, "storage.model", &d->storage.model);
@@ -307,7 +300,6 @@
{ "usb", VIR_NODE_DEV_CAP_USB_INTERFACE, gather_usb_cap },
{ "usb_device", VIR_NODE_DEV_CAP_USB_DEV, gather_usb_device_cap },
{ "net", VIR_NODE_DEV_CAP_NET, gather_net_cap },
- { "block", VIR_NODE_DEV_CAP_BLOCK, gather_block_cap },
{ "scsi_host", VIR_NODE_DEV_CAP_SCSI_HOST, gather_scsi_host_cap },
{ "scsi", VIR_NODE_DEV_CAP_SCSI, gather_scsi_cap },
{ "storage", VIR_NODE_DEV_CAP_STORAGE, gather_storage_cap },
@@ -437,6 +429,13 @@
rv = gather_capabilities(ctx, udi, &dev->def->caps);
if (rv != 0) goto failure;
+
+ if (dev->def->caps == NULL) {
+ virNodeDeviceDefFree(dev->def);
+ VIR_FREE(dev);
+ VIR_FREE(udi);
+ return;
+ }
if (VIR_REALLOC_N(driverState->devs.objs, driverState->devs.count + 1) < 0)
goto failure;
diff -r 449c387f2de9 src/virsh.c
--- a/src/virsh.c Thu Nov 20 18:08:58 2008 +0000
+++ b/src/virsh.c Thu Nov 20 18:25:36 2008 +0000
@@ -4462,6 +4462,7 @@
free(devices);
return FALSE;
}
+ qsort(&devices[0], num_devices, sizeof(char*), namesorter);
for (i = 0; i < num_devices; i++) {
vshPrint(ctl, "%s\n", devices[i]);
free(devices[i]);
--
|: 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 :|