Re: [RESEND PATCH V10 06/15] monitor: Update tracking iothread users with holder
Zhang Chen <[email protected]> Sat, 1 Aug 2026 01:10:35 +0800
| Newsgroups | org.nongnu.qemu-devel |
|---|---|
| Message-ID | <CAK3tnv+g_m27CEj_PRUyHVsViZv74H+dtHmxw9yjEQqSVVuN-Q@mail.gmail.com> |
On Fri, Jul 31, 2026, 3:23 PM Markus Armbruster <[email protected]> wrote: > Zhang Chen <[email protected]> writes: > > > On Tue, Jul 21, 2026 at 8:33 PM Markus Armbruster <[email protected]> > wrote: > >> > >> Zhang Chen <[email protected]> writes: > >> > >> > Based on monitor QOM path tracking iothread users with holder. > >> > Introduce the AioContext in the Monitor struct to avoid repeated > calls to > >> > iothread_get_aio_context() and ensure symmetrical ref/unref during > >> > monitor lifecycle. > >> > > >> > Signed-off-by: Zhang Chen <[email protected]> > >> > >> Why are repeated calls bad? > >> > >> How would symmetry be lost? > >> > > > > OK, will add detailed comments like this in the next version: > > > > Avoid repeated calls: Under the holder tracking model, fetching the > > AioContext increments the IOThread refcount and registers holder > metadata. > > Dynamically querying it in helper functions (e.g., suspend, BH > scheduling) > > leads to redundant refcount churn. > > Right here, we still have > > AioContext *iothread_get_aio_context(IOThread *iothread) > { > return iothread->ctx; > } > > and complicating code to avoid additional calls feels dubious. > > PATCH 14 changes it to > > AioContext *iothread_get_aio_context(IOThread *iothread, > const IOThreadHolder *holder) > { > /* Add IOThreadHolder to the list */ > iothread_ref(iothread, holder); > > return iothread->ctx; > } > > Are you making this change in preparation of PATCH 14? > Yes, following Stefan's earlier suggestion allows for lifecycle management to be completed with minimal disruption. Thanks Chen > > Ensure lifecycle symmetry: Storing AioContext in mon->ctx establishes a > > strict 1-to-1 lifecycle pairing: a single > iothread_ref_and_get_aio_context() > > in monitor_complete() matched by a single iothread_put_aio_context() > > in monitor_cleanup(). > > > > Thanks > > Chen > >