From: Moteen Shah <moteenshah.02(a)gmail.com>
all the option collision total and... error messages in
virDomainDiskDefIotuneParse shifted to validation callback
Signed-off-by: Moteen Shah <moteenshah.02(a)gmail.com>
---
src/conf/domain_conf.c | 55 +++-----------------------------------
src/conf/domain_validate.c | 42 ++++++++++++++++++++++++++++-
2 files changed, 45 insertions(+), 52 deletions(-)
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index f2480f37f6..48132c2f97 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -1408,7 +1408,6 @@ VIR_ENUM_IMPL(virDomainSnapshotLocation,
"no",
"internal",
"external",
- "manual",
);
/* Internal mapping: subset of block job types that can be present in
@@ -6229,51 +6228,6 @@ virDomainDefPostParseCheckFailure(virDomainDef *def,
return 0;
}
-static int
-virDomainDefPostParseCheck(virDomainDiskDef *def)
-{
- if ((def->blkdeviotune.total_bytes_sec &&
- def->blkdeviotune.read_bytes_sec) ||
- (def->blkdeviotune.total_bytes_sec &&
- def->blkdeviotune.write_bytes_sec)) {
- virReportError(VIR_ERR_XML_ERROR, "%s",
- _("total and read/write bytes_sec "
- "cannot be set at the same time"));
- return -1;
- }
-
- if ((def->blkdeviotune.total_iops_sec &&
- def->blkdeviotune.read_iops_sec) ||
- (def->blkdeviotune.total_iops_sec &&
- def->blkdeviotune.write_iops_sec)) {
- virReportError(VIR_ERR_XML_ERROR, "%s",
- _("total and read/write iops_sec "
- "cannot be set at the same time"));
- return -1;
- }
-
- if ((def->blkdeviotune.total_bytes_sec_max &&
- def->blkdeviotune.read_bytes_sec_max) ||
- (def->blkdeviotune.total_bytes_sec_max &&
- def->blkdeviotune.write_bytes_sec_max)) {
- virReportError(VIR_ERR_XML_ERROR, "%s",
- _("total and read/write bytes_sec_max "
- "cannot be set at the same time"));
- return -1;
- }
-
- if ((def->blkdeviotune.total_iops_sec_max &&
- def->blkdeviotune.read_iops_sec_max) ||
- (def->blkdeviotune.total_iops_sec_max &&
- def->blkdeviotune.write_iops_sec_max)) {
- virReportError(VIR_ERR_XML_ERROR, "%s",
- _("total and read/write iops_sec_max "
- "cannot be set at the same time"));
- return -1;
- }
- return 0;
-}
-
int
virDomainDefPostParse(virDomainDef *def,
unsigned int parseFlags,
@@ -8826,9 +8780,9 @@ virDomainDiskDefIotuneParse(virDomainDiskDef *def,
PARSE_IOTUNE(write_iops_sec_max_length);
def->blkdeviotune.group_name =
- virXPathString("string(./iotune/group_name)", ctxt);
-
- return virDomainDefPostParseCheck(def);
+ virXPathString("string(./iotune/group_name)", ctxt);
+
+ return 0;
}
#undef PARSE_IOTUNE
@@ -9278,8 +9232,7 @@ virDomainDiskDefParseXML(virDomainXMLOption *xmlopt,
return NULL;
}
- if (virDomainDiskDefIotuneParse(def, ctxt) < 0)
- return NULL;
+ virDomainDiskDefIotuneParse(def, ctxt);
def->domain_name = virXPathString("string(./backenddomain/@name)",
ctxt);
def->serial = virXPathString("string(./serial)", ctxt);
diff --git a/src/conf/domain_validate.c b/src/conf/domain_validate.c
index d6869e8fd8..4bdb95aa13 100644
--- a/src/conf/domain_validate.c
+++ b/src/conf/domain_validate.c
@@ -597,7 +597,6 @@ virDomainDiskDefSourceLUNValidate(const virStorageSource *src)
return 0;
}
-
static int
virDomainDiskDefValidate(const virDomainDef *def,
const virDomainDiskDef *disk)
@@ -651,6 +650,47 @@ virDomainDiskDefValidate(const virDomainDef *def,
}
}
+ /* Validate IotuneParse */
+ if ((disk->blkdeviotune.total_bytes_sec &&
+ disk->blkdeviotune.read_bytes_sec) ||
+ (disk->blkdeviotune.total_bytes_sec &&
+ disk->blkdeviotune.write_bytes_sec)) {
+ virReportError(VIR_ERR_XML_ERROR, "%s",
+ _("total and read/write bytes_sec "
+ "cannot be set at the same time"));
+ return -1;
+ }
+
+ if ((disk->blkdeviotune.total_iops_sec &&
+ disk->blkdeviotune.read_iops_sec) ||
+ (disk->blkdeviotune.total_iops_sec &&
+ disk->blkdeviotune.write_iops_sec)) {
+ virReportError(VIR_ERR_XML_ERROR, "%s",
+ _("total and read/write iops_sec "
+ "cannot be set at the same time"));
+ return -1;
+ }
+
+ if ((disk->blkdeviotune.total_bytes_sec_max &&
+ disk->blkdeviotune.read_bytes_sec_max) ||
+ (disk->blkdeviotune.total_bytes_sec_max &&
+ disk->blkdeviotune.write_bytes_sec_max)) {
+ virReportError(VIR_ERR_XML_ERROR, "%s",
+ _("total and read/write bytes_sec_max "
+ "cannot be set at the same time"));
+ return -1;
+ }
+
+ if ((disk->blkdeviotune.total_iops_sec_max &&
+ disk->blkdeviotune.read_iops_sec_max) ||
+ (disk->blkdeviotune.total_iops_sec_max &&
+ disk->blkdeviotune.write_iops_sec_max)) {
+ virReportError(VIR_ERR_XML_ERROR, "%s",
+ _("total and read/write iops_sec_max "
+ "cannot be set at the same time"));
+ return -1;
+ }
+
/* Reject disks with a bus type that is not compatible with the
* given address type. The function considers only buses that are
* handled in common code. For other bus types it's not possible
--
2.35.1