On Fri, Jan 9, 2026 at 11:11 AM Zhang Chen <[email protected]> wrote:
>
> On Thu, Jan 8, 2026 at 8:12 PM Markus Armbruster <[email protected]> wrote:
> >
> > Zhang Chen <[email protected]> writes:
> >
> > > The thread_status depends on struct IOThreadInfo's
> > > 'attached': 'bool'. Show in the qmp/hmp CMD with
> > > 'attached' or 'detached'.
> > >
> > > Signed-off-by: Zhang Chen <[email protected]>
> > > ---
> > > iothread.c | 1 +
> > > monitor/hmp-cmds.c | 2 ++
> > > qapi/misc.json | 6 ++++++
> > > 3 files changed, 9 insertions(+)
> > >
> > > diff --git a/iothread.c b/iothread.c
> > > index 38e38fb44d..fb4898e491 100644
> > > --- a/iothread.c
> > > +++ b/iothread.c
> > > @@ -358,6 +358,7 @@ static int query_one_iothread(Object *object, void
> > > *opaque)
> > > info = g_new0(IOThreadInfo, 1);
> > > info->id = iothread_get_id(iothread);
> > > info->thread_id = iothread->thread_id;
> > > + info->attached = iothread->attached;
> > > info->poll_max_ns = iothread->poll_max_ns;
> > > info->poll_grow = iothread->poll_grow;
> > > info->poll_shrink = iothread->poll_shrink;
> > > diff --git a/monitor/hmp-cmds.c b/monitor/hmp-cmds.c
> > > index 33a88ce205..84b01737cf 100644
> > > --- a/monitor/hmp-cmds.c
> > > +++ b/monitor/hmp-cmds.c
> > > @@ -197,6 +197,8 @@ void hmp_info_iothreads(Monitor *mon, const QDict
> > > *qdict)
> > > value = info->value;
> > > monitor_printf(mon, "%s:\n", value->id);
> > > monitor_printf(mon, " thread_id=%" PRId64 "\n",
> > > value->thread_id);
> > > + monitor_printf(mon, " thread_status=%s" "\n",
> > > + value->attached ? "attached" : "detached");
> > > monitor_printf(mon, " poll-max-ns=%" PRId64 "\n",
> > > value->poll_max_ns);
> > > monitor_printf(mon, " poll-grow=%" PRId64 "\n",
> > > value->poll_grow);
> > > monitor_printf(mon, " poll-shrink=%" PRId64 "\n",
> > > value->poll_shrink);
> > > diff --git a/qapi/misc.json b/qapi/misc.json
> > > index 6153ed3d04..2eea920bd2 100644
> > > --- a/qapi/misc.json
> > > +++ b/qapi/misc.json
> > > @@ -76,6 +76,9 @@
> > > #
> > > # @thread-id: ID of the underlying host thread
> > > #
> > > +# @attached: flag to show current iothread attached status
> >
> > What does "attached status" actually mean?
>
> This flag means weather the "-object iothread" already been used by a
> real device.
> In hotplug scenario, user can add multiple "-object iothread" and
> multiple devices (like virtio-blk).
> When user hotunplug the devices can keep the iothreads as a thread
> pool, following the new
> hotplug devices can attach to the released iothread.
>
> >
> > > +# (since 10.3.0)
> >
> > (since 12.0)
>
> OK.
>
> >
> > > +#
> > > # @poll-max-ns: maximum polling time in ns, 0 means polling is
> > > # disabled (since 2.9)
> > > #
> > > @@ -93,6 +96,7 @@
> > > { 'struct': 'IOThreadInfo',
> > > 'data': {'id': 'str',
> > > 'thread-id': 'int',
> > > + 'attached': 'bool',
> > > 'poll-max-ns': 'int',
> > > 'poll-grow': 'int',
> > > 'poll-shrink': 'int',
> > > @@ -118,6 +122,7 @@
> > > # {
> > > # "id":"iothread0",
> > > # "thread-id":3134,
> > > +# 'thread_status':"attached",
> >
> > I believe this is actually
> >
> > "attached": true
> >
> > and ...
>
> No, I changed it here for readability:
> > > + monitor_printf(mon, " thread_status=%s" "\n",
> > > + value->attached ? "attached" : "detached");
>
> But if you think ""attached": true" is more direct way, I can change
> it next version.
If no other comments, I will keep this part and update to version 2
for this series.
Thanks
Chen
>
> >
> > > # 'poll-max-ns':0,
> > > # "poll-grow":0,
> > > # "poll-shrink":0,
> > > @@ -126,6 +131,7 @@
> > > # {
> > > # "id":"iothread1",
> > > # "thread-id":3135,
> > > +# 'thread_status':"detached",
> >
> > "attached": false
> >
> > Recommend to create example output by running a test instead of making
> > it up, because making it up likely screws it up :)
>
> Uh.... This output print is the real test in my machine, maybe you
> missed the previous description.
>
> Thanks
> Chen
>
> >
> > > # 'poll-max-ns':0,
> > > # "poll-grow":0,
> > > # "poll-shrink":0,
> >