[libvirt] [PATCH 2/2] conf: Validate disk lun using correct types
Laine Stump
laine at laine.org
Fri Jun 26 18:51:52 UTC 2015
On 06/26/2015 02:15 PM, John Ferlan wrote:
> https://bugzilla.redhat.com/show_bug.cgi?id=1201143
>
> The formatdomain.html.in description for <disk> device 'lun' indicates that
you could just say formatdomain.html...
> 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.
>
> Signed-off-by: John Ferlan <jferlan at redhat.com>
> ---
> src/conf/domain_conf.c | 22 ++++++++++++++++++++++
> tests/qemuxml2argvtest.c | 2 +-
> 2 files changed, 23 insertions(+), 1 deletion(-)
>
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index 2c3b96b..211aa9f 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -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 to be a "
> + "device='lun'"),
maybe "improperly configured for ..."? Either way (or any other way).
Under the assumption that you understand the reasoning behind the logic
much better than I do, ACK.
More information about the libvir-list
mailing list