On Mon, Jan 26, 2026 at 4:52 AM Zhang Chen <[email protected]> wrote: > > QEMU Need a flag to show current iothread attached status > when hotplug multi iothreads. For example virtio-blk. > > Signed-off-by: Zhang Chen <[email protected]> > --- > include/system/iothread.h | 1 + > iothread.c | 5 +++++ > 2 files changed, 6 insertions(+) > > diff --git a/include/system/iothread.h b/include/system/iothread.h > index e26d13c6c7..3d00474523 100644 > --- a/include/system/iothread.h > +++ b/include/system/iothread.h > @@ -32,6 +32,7 @@ struct IOThread { > QemuSemaphore init_done_sem; /* is thread init done? */ > bool stopping; /* has iothread_stop() been called? */ > bool running; /* should iothread_run() continue? */ > + bool attached; /* Whether or not attached to device */ > int thread_id; > > /* AioContext poll parameters */ > diff --git a/iothread.c b/iothread.c > index caf68e0764..38e38fb44d 100644 > --- a/iothread.c > +++ b/iothread.c > @@ -94,6 +94,7 @@ void iothread_stop(IOThread *iothread) > return; > } > iothread->stopping = true; > + iothread->attached = false; > aio_bh_schedule_oneshot(iothread->ctx, iothread_stop_bh, iothread); > qemu_thread_join(&iothread->thread); > } > @@ -199,6 +200,9 @@ static void iothread_init(EventLoopBase *base, Error > **errp) > */ > iothread_init_gcontext(iothread, thread_name); > > + /* Clear iothread attached flag for init gcontext */ > + iothread->attached = false; > + > iothread_set_aio_context_params(base, &local_error); > if (local_error) { > error_propagate(errp, local_error); > @@ -336,6 +340,7 @@ char *iothread_get_id(IOThread *iothread) > > AioContext *iothread_get_aio_context(IOThread *iothread) > { > + iothread->attached = true; > return iothread->ctx; > }
This patch will still report attached = true after all users have gone away. A reference counting API is needed because IOThread users can come and go (e.g. device hot unplug or block exports being removed). Stefan
