* updated latest 11.0.0, qemu gitlab url, documents and change requests
signed-off-by: Harikumar R <harirajkumar230(a)gmail.com>
---
docs/formatdomain.rst | 4 ++--
src/conf/domain_conf.c | 31 +++++++++++++++++++------------
2 files changed, 21 insertions(+), 14 deletions(-)
diff --git a/docs/formatdomain.rst b/docs/formatdomain.rst
index 84aa5d85ac..276fa218c0 100644
--- a/docs/formatdomain.rst
+++ b/docs/formatdomain.rst
@@ -1967,7 +1967,7 @@ advertisements to the guest OS. (NB: Only qemu driver support)
Disk Throttle Group Management
------------------------------
-:since:`Since 10.7.0` it is possible to create multiple named throttle groups
+:since:`Since 11.0.0` it is possible to create multiple named throttle groups
and then reference them within ``throttlefilters``(sub-element of ``disk`` element)
to form filter chain in QEMU for specific disk. The limits(throttlegroups) are
shared within domain, hence the same group can be referenced by different filters.
@@ -3285,7 +3285,7 @@ paravirtualized driver is specified via the ``disk`` element.
"rotation_rate" attribute value :since:`since 7.3.0`
``throttlefilters``
The optional ``throttlefilters`` element provides the ability to provide additional
- per-device throttle chain :since:`Since 10.7.0`
+ per-device throttle chain :since:`Since 11.0.0`
For example, if we have four different disks and we want to limit I/O for each one
and we also want to limit combined I/O of all four disks, we can leverage
``throttlefilters`` to achieve this goal by setting two ``throttlefilter`` for
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index a4de5c01c3..01b6d4fc9f 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -7859,7 +7859,8 @@ virDomainDiskDefIotuneParse(virDomainDiskDef *def,
}
#undef PARSE_IOTUNE
-
+/* the field changes must also be applied to the other function that formats
+ * the <disk> throttling definition virDomainThrottleGroupFormat. */
#define PARSE_THROTTLEGROUP(val) \
if (virXPathULongLong("string(./" #val ")", \
ctxt, &group->val) == -2) { \
@@ -7952,8 +7953,10 @@ virDomainDefThrottleGroupsParse(virDomainDef *def,
if ((n = virXPathNodeSet("./throttlegroups/throttlegroup", ctxt,
&nodes)) < 0)
return -1;
- if (n)
- def->throttlegroups = g_new0(virDomainThrottleGroupDef *, n);
+ if (n == 0)
+ return 0;
+
+ def->throttlegroups = g_new0(virDomainThrottleGroupDef *, n);
for (i = 0; i < n; i++) {
g_autoptr(virDomainThrottleGroupDef) group = NULL;
@@ -22648,7 +22651,9 @@ virDomainIOThreadIDDel(virDomainDef *def,
* @src: throttle group to be copiped from
* @dst: throttle group to be copiped to
*
- * copy throttle group content from @src to @dst
+ * copy throttle group content from @src to @dst,
+ * this function does not allocate memory for @dst - the caller must ensure
+ * @dst is already allocated before calling this function.
*/
void
virDomainThrottleGroupDefCopy(const virDomainThrottleGroupDef *src,
@@ -22684,9 +22689,8 @@ virDomainThrottleGroupAdd(virDomainDef *def,
* @def: domain definition
* @info: throttle group definition within domain
*
- * search existing throttle group within domain definition
- * by group_name and then overwrite it with @info,
- * it's to update existing throttle group
+ * Update corresponding throttle group in @def using new config @info. If a
+ * throttle group with given name doesn't exist this function does nothing.
*/
void
virDomainThrottleGroupUpdate(virDomainDef *def,
@@ -22713,9 +22717,7 @@ virDomainThrottleGroupUpdate(virDomainDef *def,
* @def: domain definition
* @name: throttle group name
*
- * search existing throttle group within domain definition
- * by group_name and then delete it with @name,
- * it's to delete existing throttle group
+ * Delete throttle group @name in @def
*/
void
virDomainThrottleGroupDel(virDomainDef *def,
@@ -27962,7 +27964,10 @@ virDomainDefIOThreadsFormat(virBuffer *buf,
virDomainDefaultIOThreadDefFormat(buf, def);
}
-
+/*
+ * the field changes must also be applied to the other function that parses
+ * the <disk> throttling definition virDomainThrottleGroupDefParseXML
+ */
#define FORMAT_THROTTLE_GROUP(val) \
if (group->val > 0) { \
virBufferAsprintf(&childBuf, "<" #val
">%llu</" #val ">\n", \
@@ -27990,6 +27995,8 @@ virDomainThrottleGroupFormat(virBuffer *buf,
FORMAT_THROTTLE_GROUP(read_iops_sec_max);
FORMAT_THROTTLE_GROUP(write_iops_sec_max);
+ FORMAT_THROTTLE_GROUP(size_iops_sec);
+
FORMAT_THROTTLE_GROUP(total_bytes_sec_max_length);
FORMAT_THROTTLE_GROUP(read_bytes_sec_max_length);
FORMAT_THROTTLE_GROUP(write_bytes_sec_max_length);
@@ -28010,7 +28017,7 @@ virDomainDefThrottleGroupsFormat(virBuffer *buf,
const virDomainDef *def)
{
g_auto(virBuffer) childrenBuf = VIR_BUFFER_INIT_CHILD(buf);
- ssize_t n;
+ size_t n;
for (n = 0; n < def->nthrottlegroups; n++) {
virDomainThrottleGroupFormat(&childrenBuf, def->throttlegroups[n]);
--
2.39.5 (Apple Git-154)