+Thu Jun 11 16:22:22 CEST 2009 Daniel Veillard <veillard@redhat.com>
+
+ * src/node_device_hal.c src/node_device_conf.[ch]: add support
+ for serial number in HAL storage backend, patch by Dave Allan
+ * docs/schemas/nodedev.rng
+tests/nodedevschemadata/storage_serial_3600c0ff000d7a2a5d463ff4902000000.xml:
+ update the schemas and add a test case, also by Dave Allan
+
Thu Jun 11 15:18:44 GMT 2009 Mark McLoughlin <markmc@redhat.com>
* src/qemu_conf.[ch]: make qemuParseHelpStr() available
Thu Jun 11 15:15:02 GMT 2009 Mark McLoughlin <markmc@redhat.com>
* src/qemu_conf.c: re-factor qemu version parsing.
-
+
Thu Jun 11 15:14:37 CEST 2009 Daniel Veillard <veillard@redhat.com>
* configure.in src/libvirt_private.syms src/storage_backend_fs.c
<text/>
</element>
</optional>
+ <optional>
+ <element name='serial'>
+ <text/>
+ </element>
+ </optional>
<choice>
<ref name='capstorageremoveable'/>
if (data->storage.vendor)
virBufferVSprintf(&buf, " <vendor>%s</vendor>\n",
data->storage.vendor);
+ if (data->storage.serial)
+ virBufferVSprintf(&buf, " <serial>%s</serial>\n",
+ data->storage.serial);
if (data->storage.flags & VIR_NODE_DEV_CAP_STORAGE_REMOVABLE) {
int avl = data->storage.flags &
VIR_NODE_DEV_CAP_STORAGE_REMOVABLE_MEDIA_AVAILABLE;
data->storage.drive_type = virXPathString(conn, "string(./drive_type[1])", ctxt);
data->storage.model = virXPathString(conn, "string(./model[1])", ctxt);
data->storage.vendor = virXPathString(conn, "string(./vendor[1])", ctxt);
+ data->storage.serial = virXPathString(conn, "string(./serial[1])", ctxt);
if ((n = virXPathNodeSet(conn, "./capability", ctxt, &nodes)) < 0) {
virNodeDeviceReportError(conn, VIR_ERR_INTERNAL_ERROR,
VIR_FREE(data->storage.drive_type);
VIR_FREE(data->storage.model);
VIR_FREE(data->storage.vendor);
+ VIR_FREE(data->storage.serial);
break;
case VIR_NODE_DEV_CAP_LAST:
/* This case is here to shutup the compiler */
char *drive_type;
char *model;
char *vendor;
+ char *serial;
unsigned flags; /* virNodeDevStorageCapFlags bits */
} storage;
} data;
(void)get_str_prop(ctx, udi, "storage.drive_type", &d->storage.drive_type);
(void)get_str_prop(ctx, udi, "storage.model", &d->storage.model);
(void)get_str_prop(ctx, udi, "storage.vendor", &d->storage.vendor);
+ (void)get_str_prop(ctx, udi, "storage.serial", &d->storage.serial);
if (get_bool_prop(ctx, udi, "storage.removable", &val) == 0 && val) {
d->storage.flags |= VIR_NODE_DEV_CAP_STORAGE_REMOVABLE;
if (get_bool_prop(ctx, udi, "storage.removable.media_available",
--- /dev/null
+<device>
+ <name>storage_serial_3600c0ff000d7a2a5d463ff4902000000</name>
+ <parent>pci_10df_fe00_scsi_host_scsi_device_lun8</parent>
+ <capability type='storage'>
+ <block>/dev/sdj</block>
+ <bus>pci</bus>
+ <drive_type>disk</drive_type>
+ <model>MSA2012fc</model>
+ <vendor>HP</vendor>
+ <serial>3600c0ff000d7a2a5d463ff4902000000</serial>
+ <size>15626928128</size>
+ </capability>
+</device>
+
+