Since virsh implements a wrapper over virDomainSetIOThreadParams()
(command iothreadset) let's wire up new typed parameters there too.
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
docs/manpages/virsh.rst | 7 ++++++-
tools/virsh-domain.c | 24 +++++++++++++++++++++++-
2 files changed, 29 insertions(+), 2 deletions(-)
diff --git a/docs/manpages/virsh.rst b/docs/manpages/virsh.rst
index 965b89c99d..8c066c9176 100644
--- a/docs/manpages/virsh.rst
+++ b/docs/manpages/virsh.rst
@@ -2993,7 +2993,8 @@ iothreadset
::
iothreadset domain iothread_id [[--poll-max-ns ns] [--poll-grow factor]
- [--poll-shrink divisor]]
+ [--poll-shrink divisor] [--thread-pool-min value]
+ [--thread-pool-max value]]
[[--config] [--live] | [--current]]
Modifies an existing iothread of the domain using the specified
@@ -3010,6 +3011,10 @@ for a running guest. Saving, destroying, stopping, etc. the guest
will
result in the polling values returning to hypervisor defaults at the
next start, restore, etc.
+The *--thread-pool-min* and *--thread-pool-max* options then set lower and
+upper bound, respectively of number of threads in worker pool of given
+iothread.
+
If *--live* is specified, affect a running guest. If the guest is not
running an error is returned.
If *--current* is specified or *--live* is not specified, then handle
diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c
index bac4cc0fb6..f652695c2d 100644
--- a/tools/virsh-domain.c
+++ b/tools/virsh-domain.c
@@ -7782,7 +7782,15 @@ static const vshCmdOptDef opts_iothreadset[] = {
},
{.name = "poll-shrink",
.type = VSH_OT_INT,
- .help = N_("set the value for reduction of the IOThread polling time ")
+ .help = N_("set the value for reduction of the IOThread polling time")
+ },
+ {.name = "thread-pool-min",
+ .type = VSH_OT_INT,
+ .help = N_("lower boundary for worker thread pool")
+ },
+ {.name = "thread-pool-max",
+ .type = VSH_OT_INT,
+ .help = N_("upper boundary for worker thread pool")
},
VIRSH_COMMON_OPT_DOMAIN_LIVE,
VIRSH_COMMON_OPT_DOMAIN_CURRENT,
@@ -7802,6 +7810,7 @@ cmdIOThreadSet(vshControl *ctl, const vshCmd *cmd)
int maxparams = 0;
unsigned long long poll_max;
unsigned int poll_val;
+ long long thread_val;
int rc;
if (live)
@@ -7839,6 +7848,19 @@ cmdIOThreadSet(vshControl *ctl, const vshCmd *cmd)
#undef VSH_IOTHREAD_SET_UINT_PARAMS
+#define VSH_IOTHREAD_SET_LLONG_PARAMS(opt, param) \
+ thread_val = -1; \
+ if ((rc = vshCommandOptLongLong(ctl, cmd, opt, &thread_val)) < 0) \
+ goto cleanup; \
+ if (rc > 0 && \
+ virTypedParamsAddLLong(¶ms, &nparams, &maxparams, \
+ param, thread_val) < 0) \
+ goto save_error;
+
+ VSH_IOTHREAD_SET_LLONG_PARAMS("thread-pool-min",
VIR_DOMAIN_IOTHREAD_THREAD_POOL_MIN)
+ VSH_IOTHREAD_SET_LLONG_PARAMS("thread-pool-max",
VIR_DOMAIN_IOTHREAD_THREAD_POOL_MAX)
+#undef VSH_IOTHREAD_SET_LLONG_PARAMS
+
if (virDomainSetIOThreadParams(dom, id, params, nparams, flags) < 0)
goto cleanup;
--
2.35.1