On 8/20/2026 10:11 AM, Peter Krempa via Devel wrote:
On Sat, Aug 01, 2026 at 12:04:25 -0500, Jaehoon Kim wrote:
Extend iothreadset to allow configuring the iothread poll-weight value from the command line.
Add a --poll-weight option to opts_iothreadset and wire it up in cmdIOThreadSet. The value is validated against the accepted range [0, 63] before being passed to the backend as VIR_DOMAIN_IOTHREAD_POLL_WEIGHT. If the option is omitted the parameter is not added to the list and the backend leaves the value unchanged.
Document --poll-weight in the iothreadset section of the virsh manpage and update the syntax synopsis to include the new option. Extend the virsh test suite with an iothreadset --poll-weight 3 call followed by a domstats check that confirms the updated value is reflected.
Signed-off-by: Jaehoon Kim <jhkim@linux.ibm.com> --- docs/manpages/virsh.rst | 16 ++++++++++------ tests/virshtestdata/iothreads.in | 2 ++ tests/virshtestdata/iothreads.out | 14 ++++++++++++++ tools/virsh-domain.c | 17 +++++++++++++++++ 4 files changed, 43 insertions(+), 6 deletions(-) [...]
diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c index 0f177fb69a..c5158889cc 100644 --- a/tools/virsh-domain.c +++ b/tools/virsh-domain.c @@ -8271,6 +8271,11 @@ static const vshCmdOptDef opts_iothreadset[] = { .unwanted_positional = true, .help = N_("set the value for reduction of the IOThread polling time") }, + {.name = "poll-weight", + .type = VSH_OT_INT, + .unwanted_positional = true, As the name of the property suggests it's not wanted. This is a compatibility for old properties that were positional but we didn't want them to be positional. So you *must not* add any of these ever for any new property.
And even if you would for any reason want to add a positional argument you definitely can't add it *before* any other existing positional argument as it breaks existing commandlines which specify it as positional rather than with explicit flag name.
+ .help = N_("set the adaptive polling weight factor") + }, {.name = "thread-pool-min", .type = VSH_OT_INT, .unwanted_positional = true, ^^^^
@@ -8300,6 +8305,7 @@ cmdIOThreadSet(vshControl *ctl, const vshCmd *cmd) virTypedParameterPtr par; size_t npar = 0; unsigned long long poll_val; + unsigned int poll_weight; int thread_val; int rc;
@@ -8336,6 +8342,17 @@ cmdIOThreadSet(vshControl *ctl, const vshCmd *cmd) if (rc > 0) virTypedParamListAddUnsigned(params, poll_val, VIR_DOMAIN_IOTHREAD_POLL_SHRINK);
+ if ((rc = vshCommandOptUInt(ctl, cmd, "poll-weight", &poll_weight)) < 0) + return false; + if (rc > 0) { + if (poll_weight > 63) { + vshError(ctl, _("poll-weight value %1$u is out of range [0, 63]"), + poll_weight); + return false; I don't think a client side check is needed here.
+ } + virTypedParamListAddUInt(params, poll_weight, VIR_DOMAIN_IOTHREAD_POLL_WEIGHT); + } + if ((rc = vshCommandOptInt(ctl, cmd, "thread-pool-min", &thread_val)) < 0) return false; if (rc > 0) -- 2.54.0
With the 'unwanted_positional' flag removed and the client side check removed:
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
Thanks for the review and for applying the fixes directly, Peter. I'll keep those two points in mind for future patches. Thanks, Jaehoon.