mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-23 06:05:27 +00:00
conf: Validate disk lun using correct types
https://bugzilla.redhat.com/show_bug.cgi?id=1201143 The formatdomain.html description for <disk> device 'lun' indicates that it must be either a type 'block' or type 'network' with protocol 'iscsi'; however, we did not make that check until domain startup. This caused issues for virt-manager which had an unexpected failure at run time rather config time. This patch adds a check in post part disk device checking for the specific and supported lun types as well as adjusting the test failure to be for parse config rather than run time.
This commit is contained in:
parent
7e7dee4389
commit
c79ebf53b5
@ -3893,6 +3893,28 @@ virDomainDeviceDefPostParseInternal(virDomainDeviceDefPtr dev,
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
/* Validate LUN configuration
|
||||
* NOTE: virStorageTranslateDiskSourcePool is not run yet, so for
|
||||
* disk "volume"'s, the closest we can get at config time is
|
||||
* to ensure mode isn't direct since host/default will allow
|
||||
* lun/block usage. At run time if it's determined the wrong
|
||||
* voltype and pooltype values are set, then failure occurs
|
||||
*/
|
||||
if (disk->device == VIR_DOMAIN_DISK_DEVICE_LUN &&
|
||||
!(disk->src->type == VIR_STORAGE_TYPE_BLOCK ||
|
||||
(disk->src->type == VIR_STORAGE_TYPE_NETWORK &&
|
||||
disk->src->protocol == VIR_STORAGE_NET_PROTOCOL_ISCSI) ||
|
||||
(disk->src->type == VIR_STORAGE_TYPE_VOLUME &&
|
||||
disk->src->srcpool &&
|
||||
disk->src->srcpool->mode !=
|
||||
VIR_STORAGE_SOURCE_POOL_MODE_DIRECT))) {
|
||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||
_("disk '%s' improperly configured for a "
|
||||
"device='lun'"),
|
||||
disk->dst);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
if (dev->type == VIR_DOMAIN_DEVICE_VIDEO) {
|
||||
|
@ -818,7 +818,7 @@ mymain(void)
|
||||
QEMU_CAPS_DRIVE, QEMU_CAPS_DRIVE_FORMAT);
|
||||
DO_TEST("disk-drive-no-boot",
|
||||
QEMU_CAPS_DRIVE, QEMU_CAPS_DEVICE, QEMU_CAPS_BOOTINDEX);
|
||||
DO_TEST_FAILURE("disk-device-lun-type-invalid",
|
||||
DO_TEST_PARSE_ERROR("disk-device-lun-type-invalid",
|
||||
QEMU_CAPS_DRIVE, QEMU_CAPS_DEVICE, QEMU_CAPS_VIRTIO_SCSI);
|
||||
DO_TEST("disk-usb", NONE);
|
||||
DO_TEST("disk-usb-device",
|
||||
|
Loading…
Reference in New Issue
Block a user