mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 21:55:25 +00: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:
parent
68e5e93e4e
commit
3730353f63
@ -1785,7 +1785,8 @@
|
||||
as a device ordering hint. The optional <code>bus</code>
|
||||
attribute specifies the type of disk device to emulate;
|
||||
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
|
||||
'sda' will typically be exported using a SCSI bus). The optional
|
||||
attribute <code>tray</code> indicates the tray status of the
|
||||
|
@ -1295,6 +1295,7 @@
|
||||
<value>usb</value>
|
||||
<value>uml</value>
|
||||
<value>sata</value>
|
||||
<value>sd</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
</optional>
|
||||
|
@ -239,7 +239,8 @@ VIR_ENUM_IMPL(virDomainDiskBus, VIR_DOMAIN_DISK_BUS_LAST,
|
||||
"xen",
|
||||
"usb",
|
||||
"uml",
|
||||
"sata")
|
||||
"sata",
|
||||
"sd")
|
||||
|
||||
VIR_ENUM_IMPL(virDomainDiskCache, VIR_DOMAIN_DISK_CACHE_LAST,
|
||||
"default",
|
||||
@ -17333,6 +17334,7 @@ virDiskNameToBusDeviceIndex(const virDomainDiskDefPtr disk,
|
||||
case VIR_DOMAIN_DISK_BUS_USB:
|
||||
case VIR_DOMAIN_DISK_BUS_VIRTIO:
|
||||
case VIR_DOMAIN_DISK_BUS_XEN:
|
||||
case VIR_DOMAIN_DISK_BUS_SD:
|
||||
default:
|
||||
*busIdx = 0;
|
||||
*devIdx = idx;
|
||||
|
@ -509,6 +509,7 @@ enum virDomainDiskBus {
|
||||
VIR_DOMAIN_DISK_BUS_USB,
|
||||
VIR_DOMAIN_DISK_BUS_UML,
|
||||
VIR_DOMAIN_DISK_BUS_SATA,
|
||||
VIR_DOMAIN_DISK_BUS_SD,
|
||||
|
||||
VIR_DOMAIN_DISK_BUS_LAST
|
||||
};
|
||||
|
@ -73,7 +73,8 @@ VIR_ENUM_IMPL(virDomainDiskQEMUBus, VIR_DOMAIN_DISK_BUS_LAST,
|
||||
"xen",
|
||||
"usb",
|
||||
"uml",
|
||||
"sata")
|
||||
"sata",
|
||||
"sd")
|
||||
|
||||
|
||||
VIR_ENUM_DECL(qemuDiskCacheV1)
|
||||
@ -646,6 +647,9 @@ static int qemuAssignDeviceDiskAliasFixed(virDomainDiskDefPtr disk)
|
||||
case VIR_DOMAIN_DISK_BUS_XEN:
|
||||
ret = virAsprintf(&dev_name, "xenblk%d", devid);
|
||||
break;
|
||||
case VIR_DOMAIN_DISK_BUS_SD:
|
||||
ret = virAsprintf(&dev_name, "sd%d", devid);
|
||||
break;
|
||||
default:
|
||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||
_("Unsupported disk name mapping for bus '%s'"),
|
||||
@ -3786,7 +3790,9 @@ qemuBuildDriveStr(virConnectPtr conn ATTRIBUTE_UNUSED,
|
||||
break;
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
@ -8213,12 +8219,13 @@ qemuBuildCommandLine(virConnectPtr conn,
|
||||
virCommandAddArg(cmd, "-drive");
|
||||
|
||||
/* 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
|
||||
static PCI addresses, so we don't really
|
||||
care that we can't use -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;
|
||||
} else {
|
||||
virQEMUCapsClear(qemuCaps, QEMU_CAPS_DEVICE);
|
||||
@ -9915,6 +9922,8 @@ qemuParseCommandLineDisk(virDomainXMLOptionPtr xmlopt,
|
||||
def->bus = VIR_DOMAIN_DISK_BUS_VIRTIO;
|
||||
else if (STREQ(values[i], "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")) {
|
||||
if (STREQ(values[i], "cdrom")) {
|
||||
def->device = VIR_DOMAIN_DISK_DEVICE_CDROM;
|
||||
@ -10064,7 +10073,8 @@ qemuParseCommandLineDisk(virDomainXMLOptionPtr xmlopt,
|
||||
|
||||
if (def->bus == VIR_DOMAIN_DISK_BUS_IDE) {
|
||||
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"));
|
||||
} else if (def->bus == VIR_DOMAIN_DISK_BUS_VIRTIO) {
|
||||
ignore_value(VIR_STRDUP(def->dst, "vda"));
|
||||
|
Loading…
Reference in New Issue
Block a user