提交 93b66b3c 编写于 作者: N Nikolay Shirokovskiy 提交者: Michal Privoznik

qemu: when leaving iotune group update xml properly

Currently when disk is removed from iotune group (by setting
all tunables to zero) group name is leaved in config. Let's fix
it.

Given iotune defaults are taken from the destination group setting
tunables to zero may require different set of zero settings in API
call. Let's prohibit removing from group while specifying different
group name then current for the sanity sake.
Signed-off-by: NNikolay Shirokovskiy <nshirokovskiy@virtuozzo.com>
Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
Reviewed-by: NDaniel P. Berrangé <berrange@redhat.com>
Reviewed-by: NMichal Privoznik <mprivozn@redhat.com>
上级 57ac9f5e
......@@ -19159,6 +19159,28 @@ qemuDomainFindGroupBlockIoTune(virDomainDefPtr def,
}
static int
qemuDomainCheckBlockIoTuneReset(virDomainDiskDefPtr disk,
virDomainBlockIoTuneInfoPtr newiotune)
{
if (virDomainBlockIoTuneInfoHasAny(newiotune))
return 0;
if (newiotune->group_name &&
STRNEQ_NULLABLE(newiotune->group_name, disk->blkdeviotune.group_name)) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
_("creating a new group/updating existing with all"
" tune parameters zero is not supported"));
return -1;
}
/* all zero means remove any throttling and remove from group for qemu */
VIR_FREE(newiotune->group_name);
return 0;
}
static int
qemuDomainSetBlockIoTune(virDomainPtr dom,
const char *path,
......@@ -19417,6 +19439,9 @@ qemuDomainSetBlockIoTune(virDomainPtr dom,
set_fields) < 0)
goto endjob;
if (qemuDomainCheckBlockIoTuneReset(disk, &info) < 0)
goto endjob;
#define CHECK_MAX(val, _bool) \
do { \
if (info.val##_max) { \
......@@ -19496,6 +19521,9 @@ qemuDomainSetBlockIoTune(virDomainPtr dom,
set_fields) < 0)
goto endjob;
if (qemuDomainCheckBlockIoTuneReset(conf_disk, &conf_info) < 0)
goto endjob;
if (virDomainDiskSetBlockIOTune(conf_disk, &conf_info) < 0)
goto endjob;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册