[libvirt] PATCH: 7/7: Misc fixes

Daniel P. Berrange berrange at redhat.com
Thu Nov 20 18:26:51 UTC 2008


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 :|




More information about the libvir-list mailing list