conf: Move validation checks from virDomainDiskDefIotuneParse into domain_validate.c

Move validation from virDomainDiskDefIotuneParse into the validation callback.

Signed-off-by: Moteen Shah <codeguy.moteen@gmail.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
Moteen Shah 2022-04-11 18:10:49 +05:30 committed by Michal Privoznik
parent df757e88fd
commit 7be42d7d0b
2 changed files with 37 additions and 40 deletions

View File

@ -8790,46 +8790,6 @@ virDomainDiskDefIotuneParse(virDomainDiskDef *def,
def->blkdeviotune.group_name =
virXPathString("string(./iotune/group_name)", ctxt);
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;
}
#undef PARSE_IOTUNE

View File

@ -651,6 +651,43 @@ 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