1
0
mirror of https://gitlab.com/libvirt/libvirt.git synced 2025-02-04 21:47:16 +03:00

domain_conf: Add disk bus=sd, wire it up for qemu

This corresponds to '-sd' and '-drive if=sd' on the qemu command line.
Needed for many ARM boards which don't provide any other way to
pass in storage.
This commit is contained in:
Cole Robinson 2013-07-31 09:00:26 -04:00
parent 68e5e93e4e
commit 3730353f63
5 changed files with 22 additions and 7 deletions

View File

@ -1785,7 +1785,8 @@
as a device ordering hint. The optional <code>bus</code> as a device ordering hint. The optional <code>bus</code>
attribute specifies the type of disk device to emulate; attribute specifies the type of disk device to emulate;
possible values are driver specific, with typical values being possible values are driver specific, with typical values being
"ide", "scsi", "virtio", "xen", "usb" or "sata". If omitted, the bus "ide", "scsi", "virtio", "xen", "usb", "sata", or
"sd" <span class="since">"sd" since 1.1.2</span>. If omitted, the bus
type is inferred from the style of the device name (e.g. a device named type is inferred from the style of the device name (e.g. a device named
'sda' will typically be exported using a SCSI bus). The optional 'sda' will typically be exported using a SCSI bus). The optional
attribute <code>tray</code> indicates the tray status of the attribute <code>tray</code> indicates the tray status of the

View File

@ -1295,6 +1295,7 @@
<value>usb</value> <value>usb</value>
<value>uml</value> <value>uml</value>
<value>sata</value> <value>sata</value>
<value>sd</value>
</choice> </choice>
</attribute> </attribute>
</optional> </optional>

View File

@ -239,7 +239,8 @@ VIR_ENUM_IMPL(virDomainDiskBus, VIR_DOMAIN_DISK_BUS_LAST,
"xen", "xen",
"usb", "usb",
"uml", "uml",
"sata") "sata",
"sd")
VIR_ENUM_IMPL(virDomainDiskCache, VIR_DOMAIN_DISK_CACHE_LAST, VIR_ENUM_IMPL(virDomainDiskCache, VIR_DOMAIN_DISK_CACHE_LAST,
"default", "default",
@ -17333,6 +17334,7 @@ virDiskNameToBusDeviceIndex(const virDomainDiskDefPtr disk,
case VIR_DOMAIN_DISK_BUS_USB: case VIR_DOMAIN_DISK_BUS_USB:
case VIR_DOMAIN_DISK_BUS_VIRTIO: case VIR_DOMAIN_DISK_BUS_VIRTIO:
case VIR_DOMAIN_DISK_BUS_XEN: case VIR_DOMAIN_DISK_BUS_XEN:
case VIR_DOMAIN_DISK_BUS_SD:
default: default:
*busIdx = 0; *busIdx = 0;
*devIdx = idx; *devIdx = idx;

View File

@ -509,6 +509,7 @@ enum virDomainDiskBus {
VIR_DOMAIN_DISK_BUS_USB, VIR_DOMAIN_DISK_BUS_USB,
VIR_DOMAIN_DISK_BUS_UML, VIR_DOMAIN_DISK_BUS_UML,
VIR_DOMAIN_DISK_BUS_SATA, VIR_DOMAIN_DISK_BUS_SATA,
VIR_DOMAIN_DISK_BUS_SD,
VIR_DOMAIN_DISK_BUS_LAST VIR_DOMAIN_DISK_BUS_LAST
}; };

View File

@ -73,7 +73,8 @@ VIR_ENUM_IMPL(virDomainDiskQEMUBus, VIR_DOMAIN_DISK_BUS_LAST,
"xen", "xen",
"usb", "usb",
"uml", "uml",
"sata") "sata",
"sd")
VIR_ENUM_DECL(qemuDiskCacheV1) VIR_ENUM_DECL(qemuDiskCacheV1)
@ -646,6 +647,9 @@ static int qemuAssignDeviceDiskAliasFixed(virDomainDiskDefPtr disk)
case VIR_DOMAIN_DISK_BUS_XEN: case VIR_DOMAIN_DISK_BUS_XEN:
ret = virAsprintf(&dev_name, "xenblk%d", devid); ret = virAsprintf(&dev_name, "xenblk%d", devid);
break; break;
case VIR_DOMAIN_DISK_BUS_SD:
ret = virAsprintf(&dev_name, "sd%d", devid);
break;
default: default:
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("Unsupported disk name mapping for bus '%s'"), _("Unsupported disk name mapping for bus '%s'"),
@ -3786,7 +3790,9 @@ qemuBuildDriveStr(virConnectPtr conn ATTRIBUTE_UNUSED,
break; break;
case VIR_DOMAIN_DISK_BUS_XEN: case VIR_DOMAIN_DISK_BUS_XEN:
/* Xen has no address type currently, so assign based on index */ case VIR_DOMAIN_DISK_BUS_SD:
/* Xen and SD have no address type currently, so assign
* based on index */
break; break;
} }
@ -8213,12 +8219,13 @@ qemuBuildCommandLine(virConnectPtr conn,
virCommandAddArg(cmd, "-drive"); virCommandAddArg(cmd, "-drive");
/* Unfortunately it is not possible to use /* Unfortunately it is not possible to use
-device for floppies, or Xen paravirt -device for floppies, xen PV, or SD
devices. Fortunately, those don't need devices. Fortunately, those don't need
static PCI addresses, so we don't really static PCI addresses, so we don't really
care that we can't use -device */ care that we can't use -device */
if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE)) { if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE)) {
if (disk->bus != VIR_DOMAIN_DISK_BUS_XEN) { if (disk->bus != VIR_DOMAIN_DISK_BUS_XEN &&
disk->bus != VIR_DOMAIN_DISK_BUS_SD) {
withDeviceArg = true; withDeviceArg = true;
} else { } else {
virQEMUCapsClear(qemuCaps, QEMU_CAPS_DEVICE); virQEMUCapsClear(qemuCaps, QEMU_CAPS_DEVICE);
@ -9915,6 +9922,8 @@ qemuParseCommandLineDisk(virDomainXMLOptionPtr xmlopt,
def->bus = VIR_DOMAIN_DISK_BUS_VIRTIO; def->bus = VIR_DOMAIN_DISK_BUS_VIRTIO;
else if (STREQ(values[i], "xen")) else if (STREQ(values[i], "xen"))
def->bus = VIR_DOMAIN_DISK_BUS_XEN; def->bus = VIR_DOMAIN_DISK_BUS_XEN;
else if (STREQ(values[i], "sd"))
def->bus = VIR_DOMAIN_DISK_BUS_SD;
} else if (STREQ(keywords[i], "media")) { } else if (STREQ(keywords[i], "media")) {
if (STREQ(values[i], "cdrom")) { if (STREQ(values[i], "cdrom")) {
def->device = VIR_DOMAIN_DISK_DEVICE_CDROM; def->device = VIR_DOMAIN_DISK_DEVICE_CDROM;
@ -10064,7 +10073,8 @@ qemuParseCommandLineDisk(virDomainXMLOptionPtr xmlopt,
if (def->bus == VIR_DOMAIN_DISK_BUS_IDE) { if (def->bus == VIR_DOMAIN_DISK_BUS_IDE) {
ignore_value(VIR_STRDUP(def->dst, "hda")); ignore_value(VIR_STRDUP(def->dst, "hda"));
} else if (def->bus == VIR_DOMAIN_DISK_BUS_SCSI) { } else if (def->bus == VIR_DOMAIN_DISK_BUS_SCSI ||
def->bus == VIR_DOMAIN_DISK_BUS_SD) {
ignore_value(VIR_STRDUP(def->dst, "sda")); ignore_value(VIR_STRDUP(def->dst, "sda"));
} else if (def->bus == VIR_DOMAIN_DISK_BUS_VIRTIO) { } else if (def->bus == VIR_DOMAIN_DISK_BUS_VIRTIO) {
ignore_value(VIR_STRDUP(def->dst, "vda")); ignore_value(VIR_STRDUP(def->dst, "vda"));