mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-07 17:28:15 +00:00
qemu_validate: Deduplicate code for RNG model check
In my recent commit of 5216304bfe I've moved RNG model check from domain capabilities validator into qemu validator. During that I had to basically duplicate RNG model to qemuCaps checks. Problem with this approach is that after my commit qemu validator and domCaps are disconnected and thus domCaps might report (in general) different set of supported RNG models. Signed-off-by: Michal Privoznik <mprivozn@redhat.com> Reviewed-by: Cole Robinson <crobinso@redhat.com>
This commit is contained in:
parent
d009f5b400
commit
5ea08a33bf
@ -6068,7 +6068,7 @@ virQEMUCapsFillDomainDeviceHostdevCaps(virQEMUCapsPtr qemuCaps,
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
void
|
||||
virQEMUCapsFillDomainDeviceRNGCaps(virQEMUCapsPtr qemuCaps,
|
||||
virDomainCapsDeviceRNGPtr rng)
|
||||
{
|
||||
|
@ -742,6 +742,8 @@ int virQEMUCapsFillDomainCaps(virQEMUCapsPtr qemuCaps,
|
||||
void virQEMUCapsFillDomainDeviceVideoCaps(virQEMUCapsPtr qemuCaps,
|
||||
virDomainCapsDeviceVideoPtr dev);
|
||||
|
||||
void virQEMUCapsFillDomainDeviceRNGCaps(virQEMUCapsPtr qemuCaps,
|
||||
virDomainCapsDeviceRNGPtr rng);
|
||||
|
||||
bool virQEMUCapsGuestIsNative(virArch host,
|
||||
virArch guest);
|
||||
|
@ -1845,6 +1845,8 @@ static int
|
||||
qemuValidateDomainRNGDef(const virDomainRNGDef *def,
|
||||
virQEMUCapsPtr qemuCaps)
|
||||
{
|
||||
virDomainCapsDeviceRNG rngCaps = { 0 };
|
||||
|
||||
switch ((virDomainRNGBackend) def->backend) {
|
||||
case VIR_DOMAIN_RNG_BACKEND_RANDOM:
|
||||
if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_OBJECT_RNG_RANDOM)) {
|
||||
@ -1883,29 +1885,13 @@ qemuValidateDomainRNGDef(const virDomainRNGDef *def,
|
||||
return -1;
|
||||
}
|
||||
|
||||
switch ((virDomainRNGModel) def->model) {
|
||||
case VIR_DOMAIN_RNG_MODEL_VIRTIO:
|
||||
if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_VIRTIO_RNG)) {
|
||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||
_("domain configuration does not support rng model '%s'"),
|
||||
virDomainRNGModelTypeToString(def->model));
|
||||
return -1;
|
||||
}
|
||||
break;
|
||||
virQEMUCapsFillDomainDeviceRNGCaps(qemuCaps, &rngCaps);
|
||||
|
||||
case VIR_DOMAIN_RNG_MODEL_VIRTIO_TRANSITIONAL:
|
||||
case VIR_DOMAIN_RNG_MODEL_VIRTIO_NON_TRANSITIONAL:
|
||||
if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_VIRTIO_PCI_TRANSITIONAL) &&
|
||||
!virQEMUCapsGet(qemuCaps, QEMU_CAPS_VIRTIO_PCI_DISABLE_LEGACY)) {
|
||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||
_("domain configuration does not support rng model '%s'"),
|
||||
virDomainRNGModelTypeToString(def->model));
|
||||
return -1;
|
||||
}
|
||||
break;
|
||||
|
||||
case VIR_DOMAIN_RNG_MODEL_LAST:
|
||||
break;
|
||||
if (!VIR_DOMAIN_CAPS_ENUM_IS_SET(rngCaps.model, def->model)) {
|
||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||
_("domain configuration does not support rng model '%s'"),
|
||||
virDomainRNGModelTypeToString(def->model));
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (qemuValidateDomainVirtioOptions(def->virtio, qemuCaps) < 0)
|
||||
|
Loading…
x
Reference in New Issue
Block a user