summaryrefslogtreecommitdiffstats
path: root/src/launch-libvirt.c
diff options
context:
space:
mode:
authorRichard W.M. Jones <rjones@redhat.com>2012-10-03 10:50:51 +0100
committerRichard W.M. Jones <rjones@redhat.com>2012-10-08 20:04:47 +0100
commit7786d56db8c22413949f98ef6b15fe0ea367d195 (patch)
tree7234b2d5b450a21677a9cc19e0b1c506546fa1ee /src/launch-libvirt.c
parent3ad44c866042919374e2d840502e53da2ed8aef0 (diff)
downloadlibguestfs-7786d56db8c22413949f98ef6b15fe0ea367d195.tar.gz
libguestfs-7786d56db8c22413949f98ef6b15fe0ea367d195.tar.xz
libguestfs-7786d56db8c22413949f98ef6b15fe0ea367d195.zip
launch: Add add_drive 'label' option.
New API: list-disk-labels Allow the user to pass an optional disk label when adding a drive. This is passed through to qemu / libvirt using the disk serial field, and from there to the appliance which exposes it through udev, creating a special alias of the device /dev/disk/guestfs/<label>. Partitions are named /dev/disk/guestfs/<label><partnum>. virtio-blk and virtio-scsi limit the serial field to 20 bytes. We further limit the name to maximum 20 ASCII characters in [a-zA-Z]. list-devices and list-partitions are not changed: these calls still return raw block device names. However a new call, list-disk-labels, returns a hash table allowing callers to map between disk labels, and block device and partition names. This commit also includes a test.
Diffstat (limited to 'src/launch-libvirt.c')
-rw-r--r--src/launch-libvirt.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/launch-libvirt.c b/src/launch-libvirt.c
index d33693e8..aa1c39f2 100644
--- a/src/launch-libvirt.c
+++ b/src/launch-libvirt.c
@@ -913,6 +913,12 @@ construct_libvirt_xml_disk (guestfs_h *g, xmlTextWriterPtr xo,
}
XMLERROR (-1, xmlTextWriterEndElement (xo));
+ if (drv->disk_label) {
+ XMLERROR (-1, xmlTextWriterStartElement (xo, BAD_CAST "serial"));
+ XMLERROR (-1, xmlTextWriterWriteString (xo, BAD_CAST drv->disk_label));
+ XMLERROR (-1, xmlTextWriterEndElement (xo));
+ }
+
XMLERROR (-1, xmlTextWriterStartElement (xo, BAD_CAST "address"));
XMLERROR (-1,
xmlTextWriterWriteAttribute (xo, BAD_CAST "type",