diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 9ec5ace1c7..b2c6bd43a2 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -1634,17 +1634,6 @@ qemuBuildDiskDeviceStr(const virDomainDef *def, break; case VIR_DOMAIN_DISK_BUS_SATA: - if (disk->info.addr.drive.bus != 0) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("bus must be 0 for ide controller")); - return NULL; - } - if (disk->info.addr.drive.target != 0) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("target must be 0 for ide controller")); - return NULL; - } - if (disk->device == VIR_DOMAIN_DISK_DEVICE_CDROM) virBufferAddLit(&opt, "ide-cd"); else diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c index 22fb3e9e49..aa036785fd 100644 --- a/src/qemu/qemu_validate.c +++ b/src/qemu/qemu_validate.c @@ -2243,6 +2243,25 @@ qemuValidateDomainDeviceDefDiskFrontend(const virDomainDiskDef *disk, } break; + case VIR_DOMAIN_DISK_BUS_SATA: + if (disk->info.type != VIR_DOMAIN_DEVICE_ADDRESS_TYPE_DRIVE) { + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", + _("unexpected address type for sata disk")); + return -1; + } + + if (disk->info.addr.drive.bus != 0) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("bus must be 0 for sata controller")); + return -1; + } + if (disk->info.addr.drive.target != 0) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("target must be 0 for sata controller")); + return -1; + } + break; + case VIR_DOMAIN_DISK_BUS_VIRTIO: case VIR_DOMAIN_DISK_BUS_XEN: case VIR_DOMAIN_DISK_BUS_SD: diff --git a/tests/qemuxml2argvdata/disk-sata-incompatible-address.err b/tests/qemuxml2argvdata/disk-sata-incompatible-address.err index cdb176b7d6..09395bcd6b 100644 --- a/tests/qemuxml2argvdata/disk-sata-incompatible-address.err +++ b/tests/qemuxml2argvdata/disk-sata-incompatible-address.err @@ -1 +1 @@ -unsupported configuration: Invalid address type 'pci' for the disk 'sda' with the bus type 'sata' +internal error: unexpected address type for sata disk