From da1748cab179ecb542dd6fc210ae23602c4ec80c Mon Sep 17 00:00:00 2001 From: Daniel Henrique Barboza Date: Thu, 8 Oct 2020 15:26:20 -0300 Subject: [PATCH] qemu_command.c: move DISK_BUS_SATA validation to qemu_validate.c A few tweaks were made during the move: - the error messages were changed to mention 'sata controller' instead of 'ide controller'; - a check for address type 'drive' was added like it is done with other bus types. The error message of qemuxml2argdata was updated to reflect that now, instead of erroring it out from the common code in virDomainDiskDefValidate(), we're failing earlier with a different error message. Reviewed-by: Michal Privoznik Signed-off-by: Daniel Henrique Barboza --- src/qemu/qemu_command.c | 11 ----------- src/qemu/qemu_validate.c | 19 +++++++++++++++++++ .../disk-sata-incompatible-address.err | 2 +- 3 files changed, 20 insertions(+), 12 deletions(-) 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