On Thu, Mar 05, 2026 at 10:24:49PM +0800, Zhang Chen wrote: > Introduce iothread_get_aio_context() with a 'holder' argument and its > counterpart iothread_put_aio_context(). > > Previously, users of an IOThread's AioContext did not explicitly > record their identity, making it difficult to debug which devices or > subsystems were pinning an IOThread. > > This patch enhances the reference counting mechanism by: > 1. Automatically incrementing the object reference count when a context > is retrieved. > 2. Tracking holders by name using iothread_ref() and iothread_unref(). > > In iothread_instance_finalize(), we now retrieve the source name from > the GMainContext to correctly unref the initial internal holder. > > Signed-off-by: Zhang Chen <[email protected]> > --- > include/system/iothread.h | 3 ++- > iothread.c | 28 ++++++++++++++++++++++++++-- > 2 files changed, 28 insertions(+), 3 deletions(-) > > diff --git a/include/system/iothread.h b/include/system/iothread.h > index 21a76bd70d..595abeefbe 100644 > --- a/include/system/iothread.h > +++ b/include/system/iothread.h > @@ -47,7 +47,8 @@ DECLARE_INSTANCE_CHECKER(IOThread, IOTHREAD, > > char *iothread_get_id(IOThread *iothread); > IOThread *iothread_by_id(const char *id); > -AioContext *iothread_get_aio_context(IOThread *iothread); > +AioContext *iothread_get_aio_context(IOThread *iothread, const char *holder);
This commit breaks all iothread_get_aio_context() callers because they are not yet converted. The build will fail here. Every commit must build and pass the tests. This is necessary so that git-bisect(1) works and it also makes backporting patches much easier when there are no implicit dependencies between commits. Please structure this patch series in a way that keeps the build and tests passing. One way to do this is to give the new API a different name like: AioContext *iothread_get_aio_context(IOThread *iothread); + AioContext *iothread_ref_and_get_aio_context(IOThread *iothread, const char *holder); That name also makes clear that a reference will be taken on the IOThread. You could then require callers to call iothread_unref() directly instead of iothread_put_aio_context(). One of the last commits in the patch series could remove the old iothread_get_aio_context() after everything has been converted.
signature.asc
Description: PGP signature
