|
|
49d448 |
From 296343c5a950668d790f9cd5ebd7b466e8156d03 Mon Sep 17 00:00:00 2001
|
|
|
49d448 |
Message-Id: <296343c5a950668d790f9cd5ebd7b466e8156d03@dist-git>
|
|
|
49d448 |
From: Peter Krempa <pkrempa@redhat.com>
|
|
|
49d448 |
Date: Tue, 14 Jun 2022 13:23:29 +0200
|
|
|
49d448 |
Subject: [PATCH] domain_validate: Split out validation of disk startup policy
|
|
|
49d448 |
MIME-Version: 1.0
|
|
|
49d448 |
Content-Type: text/plain; charset=UTF-8
|
|
|
49d448 |
Content-Transfer-Encoding: 8bit
|
|
|
49d448 |
|
|
|
49d448 |
Move the code into 'virDomainDiskDefValidateStartupPolicy' which will be
|
|
|
49d448 |
later reused in the qemu driver.
|
|
|
49d448 |
|
|
|
49d448 |
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
|
|
|
49d448 |
Reviewed-by: Ján Tomko <jtomko@redhat.com>
|
|
|
49d448 |
(cherry picked from commit 3603a18bcec18842cedecbd8329723062b87795c)
|
|
|
49d448 |
https://bugzilla.redhat.com/show_bug.cgi?id=2095758
|
|
|
49d448 |
---
|
|
|
49d448 |
src/conf/domain_validate.c | 45 ++++++++++++++++++++++++--------------
|
|
|
49d448 |
src/conf/domain_validate.h | 2 ++
|
|
|
49d448 |
src/libvirt_private.syms | 1 +
|
|
|
49d448 |
3 files changed, 31 insertions(+), 17 deletions(-)
|
|
|
49d448 |
|
|
|
49d448 |
diff --git a/src/conf/domain_validate.c b/src/conf/domain_validate.c
|
|
|
49d448 |
index 452742e67c..bfff7339ef 100644
|
|
|
49d448 |
--- a/src/conf/domain_validate.c
|
|
|
49d448 |
+++ b/src/conf/domain_validate.c
|
|
|
49d448 |
@@ -598,6 +598,32 @@ virDomainDiskDefSourceLUNValidate(const virStorageSource *src)
|
|
|
49d448 |
}
|
|
|
49d448 |
|
|
|
49d448 |
|
|
|
49d448 |
+int
|
|
|
49d448 |
+virDomainDiskDefValidateStartupPolicy(const virDomainDiskDef *disk)
|
|
|
49d448 |
+{
|
|
|
49d448 |
+ if (disk->startupPolicy == VIR_DOMAIN_STARTUP_POLICY_DEFAULT)
|
|
|
49d448 |
+ return 0;
|
|
|
49d448 |
+
|
|
|
49d448 |
+ if (disk->src->type == VIR_STORAGE_TYPE_NETWORK) {
|
|
|
49d448 |
+ virReportError(VIR_ERR_XML_ERROR,
|
|
|
49d448 |
+ _("disk startupPolicy '%s' is not allowed for disk of '%s' type"),
|
|
|
49d448 |
+ virDomainStartupPolicyTypeToString(disk->startupPolicy),
|
|
|
49d448 |
+ virStorageTypeToString(disk->src->type));
|
|
|
49d448 |
+ return -1;
|
|
|
49d448 |
+ }
|
|
|
49d448 |
+
|
|
|
49d448 |
+ if (disk->device != VIR_DOMAIN_DISK_DEVICE_CDROM &&
|
|
|
49d448 |
+ disk->device != VIR_DOMAIN_DISK_DEVICE_FLOPPY &&
|
|
|
49d448 |
+ disk->startupPolicy == VIR_DOMAIN_STARTUP_POLICY_REQUISITE) {
|
|
|
49d448 |
+ virReportError(VIR_ERR_XML_ERROR, "%s",
|
|
|
49d448 |
+ _("disk startupPolicy 'requisite' is allowed only for cdrom or floppy"));
|
|
|
49d448 |
+ return -1;
|
|
|
49d448 |
+ }
|
|
|
49d448 |
+
|
|
|
49d448 |
+ return 0;
|
|
|
49d448 |
+}
|
|
|
49d448 |
+
|
|
|
49d448 |
+
|
|
|
49d448 |
static int
|
|
|
49d448 |
virDomainDiskDefValidate(const virDomainDef *def,
|
|
|
49d448 |
const virDomainDiskDef *disk)
|
|
|
49d448 |
@@ -775,23 +801,8 @@ virDomainDiskDefValidate(const virDomainDef *def,
|
|
|
49d448 |
return -1;
|
|
|
49d448 |
}
|
|
|
49d448 |
|
|
|
49d448 |
- if (disk->startupPolicy != VIR_DOMAIN_STARTUP_POLICY_DEFAULT) {
|
|
|
49d448 |
- if (disk->src->type == VIR_STORAGE_TYPE_NETWORK) {
|
|
|
49d448 |
- virReportError(VIR_ERR_XML_ERROR,
|
|
|
49d448 |
- _("disk startupPolicy '%s' is not allowed for disk of '%s' type"),
|
|
|
49d448 |
- virDomainStartupPolicyTypeToString(disk->startupPolicy),
|
|
|
49d448 |
- virStorageTypeToString(disk->src->type));
|
|
|
49d448 |
- return -1;
|
|
|
49d448 |
- }
|
|
|
49d448 |
-
|
|
|
49d448 |
- if (disk->device != VIR_DOMAIN_DISK_DEVICE_CDROM &&
|
|
|
49d448 |
- disk->device != VIR_DOMAIN_DISK_DEVICE_FLOPPY &&
|
|
|
49d448 |
- disk->startupPolicy == VIR_DOMAIN_STARTUP_POLICY_REQUISITE) {
|
|
|
49d448 |
- virReportError(VIR_ERR_XML_ERROR, "%s",
|
|
|
49d448 |
- _("disk startupPolicy 'requisite' is allowed only for cdrom or floppy"));
|
|
|
49d448 |
- return -1;
|
|
|
49d448 |
- }
|
|
|
49d448 |
- }
|
|
|
49d448 |
+ if (virDomainDiskDefValidateStartupPolicy(disk) < 0)
|
|
|
49d448 |
+ return -1;
|
|
|
49d448 |
|
|
|
49d448 |
if (disk->wwn && !virValidateWWN(disk->wwn))
|
|
|
49d448 |
return -1;
|
|
|
49d448 |
diff --git a/src/conf/domain_validate.h b/src/conf/domain_validate.h
|
|
|
49d448 |
index 430d61fd3c..07b99195e3 100644
|
|
|
49d448 |
--- a/src/conf/domain_validate.h
|
|
|
49d448 |
+++ b/src/conf/domain_validate.h
|
|
|
49d448 |
@@ -41,4 +41,6 @@ int virDomainDeviceDefValidate(const virDomainDeviceDef *dev,
|
|
|
49d448 |
|
|
|
49d448 |
int virDomainDiskDefValidateSource(const virStorageSource *src);
|
|
|
49d448 |
|
|
|
49d448 |
+int virDomainDiskDefValidateStartupPolicy(const virDomainDiskDef *disk);
|
|
|
49d448 |
+
|
|
|
49d448 |
int virDomainDiskDefSourceLUNValidate(const virStorageSource *src);
|
|
|
49d448 |
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
|
|
|
49d448 |
index 2c42e2a5e8..5b7a056151 100644
|
|
|
49d448 |
--- a/src/libvirt_private.syms
|
|
|
49d448 |
+++ b/src/libvirt_private.syms
|
|
|
49d448 |
@@ -777,6 +777,7 @@ virDomainActualNetDefValidate;
|
|
|
49d448 |
virDomainDefValidate;
|
|
|
49d448 |
virDomainDeviceValidateAliasForHotplug;
|
|
|
49d448 |
virDomainDiskDefSourceLUNValidate;
|
|
|
49d448 |
+virDomainDiskDefValidateStartupPolicy;
|
|
|
49d448 |
|
|
|
49d448 |
|
|
|
49d448 |
# conf/interface_conf.h
|
|
|
49d448 |
--
|
|
|
49d448 |
2.35.1
|
|
|
49d448 |
|