All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH V17 00/13] iothread: Support tracking and querying IOThread holder
@ 2026-09-15 10:16 Zhang Chen
  2026-09-15 10:16 ` [PATCH V17 01/13] iothread: introduce holder tracking Zhang Chen
                   ` (12 more replies)
  0 siblings, 13 replies; 30+ messages in thread
From: Zhang Chen @ 2026-09-15 10:16 UTC (permalink / raw)
  To: qemu-devel, Eric Blake, Markus Armbruster,
	'Michael S . Tsirkin', Stefan Hajnoczi, Paolo Bonzini,
	'Daniel P . Berrangé', Jason Wang
  Cc: Zhang Chen

### Motivation
Currently, the relationship between IOThreads and the resources using them is
opaque. From a management perspective, it is difficult to determine which
devices or block exports are currently associated with a specific IOThread
via QMP or HMP.

This series introduces a "holder" tracking mechanism based on QOM paths or
block exports to significantly improve IOThread observability.
In high-performance virtualization environments, users often pre-allocate
a set of IOThreads to serve as a persistent thread pool. During device
hotplug/unplug cycles, while IOThread objects remain persistent,
their attachment state changes dynamically.

By tracking these "holders," administrators can use `query-iothreads` to
monitor the real-time load distribution of the thread pool and identify which
specific devices (e.g., virtio-blk, BlockExport) are attached to which thread.

### Technical Overview
* Holder tracking

  Add a QAPI holder list to each IOThread.  A holder identifies either
  a QOM object by its canonical path or a block export by its unique
  BlockExportOptions ID.

* Explicit reference lifecycle

  Add iothread_ref_and_get_aio_context() and the matching
  iothread_unref_and_put_aio_context().  Acquiring an AioContext registers a
  holder and keeps the IOThread alive until the matching put.

  Legacy callers without a matching lifecycle use the explicitly named
  iothread_unsafe_get_aio_context().  The ambiguous legacy
  iothread_get_aio_context() is removed after all production callers
  are migrated.

* Subsystem integration

  Track holders for block exports, monitors, virtio-blk, virtio-scsi,
  virtio queue mappings, virtio balloon thread pinning, COLO compare,
  vfio-user proxy, and xen-block.

* Introspection

  Extend IOThreadInfo with a holders array returned by
  query-iothreads.  Display the same information with info iothreads.


### V17 -> V16 Changelog
  - Rebase code to resolve code conflicts for patch 8:
    "virtio-balloon: Update tracking iothread users with holder".
    This issue caused by latest merged patch "fdc3f9a83d".

### V16 -> V15 Changelog
  - Unified per-monitor IOThread checks and accesses through
    mon->iothread after initialization.
  - Simplified PATCH 13's commit message and clarified why blockdev
    cannot use the holder-aware get/put APIs.
  - Dropped the v15 Patch 1 in this series, It will be taken away
    independently by trivial-patches tree.

### V15 -> V14 Changelog
  - Moved monitor IOThread cleanup from unparent() to monitor_finalize(),
    pairing complete() with instance finalization.
  - Squashed V14 PATCH 04 and PATCH 14 into PATCH 13 and clarified the
    blockdev lifetime assumption. Since the additional changes are minimal,
    PATCH 13 retains Stefan's Reviewed-by from V14 PATCH 04.
  - Rebased and adapted info iothreads to the MonitorHMP interface.

### V14 -> V13 Changelog
  - Renamed patch 3 and clarified that it introduces holder-tracking
    infrastructure, with users converted in subsequent patches.
  - Documented that monitor holders are not visible to management
    applications, while retaining the tracking for a consistent holder
    and IOThread reference lifecycle.
  - Rebased on the latest upstream.

### V13 -> V12 Changelog
  - Refactored block export IOThread reference handling with shared
    init/cleanup helpers and preserved the existing single-IOThread
    driver arguments.
  - Moved monitor IOThread cleanup to the QOM unparent callback,
    where the canonical path is still available.
  - Kept internal IOThreads hidden from query-iothreads.
  - Made virtio queue-mapping holder arguments const.
  - Improved some detail comments.

### V12 -> V11 Changelog
  - Change the function name from the "iothread_put_aio_context()"
    to "iothread_unref_and_put_aio_context()" match the
    "iothread_unref_and_put_aio_context".
  - Fix unnecessary char * cast since the holder variable is
    declared const.
  - Add detailed commit msg in patch 06/15.
  - Optimize the HMP print in patch 13/15.
  - Rebase code on upstream.



Zhang Chen (13):
  iothread: introduce holder tracking
  iothread: add holder-aware AioContext accessors
  block/export: track IOThread references
  monitor: track IOThread users with QOM paths
  virtio-vq-mapping: track iothread-vq-mapping references using device
    path
  virtio: track IOThread references for thread pinning
  net/colo: track IOThread references using path-based holder
  virtio-balloon: Update tracking iothread users with holder
  vfio-user/proxy: Update tracking iothread users with holder name
  xen-block: Update tracking iothread users with holder name
  monitor/hmp: display IOThread holders
  iothread: make legacy AioContext getter explicitly unsafe
  tests/unit/iothread: update AioContext ref/put helpers

 block/export/export.c                   | 62 +++++++++++++---
 blockdev.c                              |  9 ++-
 hw/block/dataplane/xen-block.c          | 19 ++++-
 hw/block/virtio-blk.c                   | 21 ++++--
 hw/scsi/virtio-scsi-dataplane.c         | 22 ++++--
 hw/vfio-user/proxy.c                    | 16 ++++-
 hw/virtio/iothread-vq-mapping.c         | 20 ++++--
 hw/virtio/virtio-balloon.c              | 21 ++++--
 include/block/export.h                  |  5 ++
 include/hw/virtio/iothread-vq-mapping.h |  6 +-
 include/hw/virtio/virtio-balloon.h      |  1 +
 include/system/iothread.h               | 38 +++++++++-
 iothread.c                              | 89 ++++++++++++++++++++++-
 monitor/hmp-cmds.c                      | 20 ++++++
 monitor/monitor-internal.h              |  7 +-
 monitor/monitor.c                       | 36 +++++++---
 monitor/qmp.c                           | 14 ++--
 net/colo-compare.c                      | 29 +++++---
 qapi/misc.json                          | 94 +++++++++++++++++++++----
 tests/unit/iothread.c                   | 18 +++--
 tests/unit/iothread.h                   |  7 +-
 tests/unit/test-aio-multithread.c       |  5 +-
 tests/unit/test-bdrv-drain.c            | 18 +++--
 tests/unit/test-block-iothread.c        | 21 ++++--
 24 files changed, 496 insertions(+), 102 deletions(-)

-- 
2.43.0



^ permalink raw reply	[flat|nested] 30+ messages in thread

end of thread, other threads:[~2026-09-22  6:16 UTC | newest]

Thread overview: 30+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-15 10:16 [PATCH V17 00/13] iothread: Support tracking and querying IOThread holder Zhang Chen
2026-09-15 10:16 ` [PATCH V17 01/13] iothread: introduce holder tracking Zhang Chen
2026-09-15 10:16 ` [PATCH V17 02/13] iothread: add holder-aware AioContext accessors Zhang Chen
2026-09-15 10:16 ` [PATCH V17 03/13] block/export: track IOThread references Zhang Chen
2026-09-15 10:16 ` [PATCH V17 04/13] monitor: track IOThread users with QOM paths Zhang Chen
2026-09-15 10:49   ` Markus Armbruster
2026-09-16  2:13     ` Zhang Chen
2026-09-16 19:33   ` Stefan Hajnoczi
2026-09-15 10:16 ` [PATCH V17 05/13] virtio-vq-mapping: track iothread-vq-mapping references using device path Zhang Chen
2026-09-16 19:36   ` Stefan Hajnoczi
2026-09-15 10:16 ` [PATCH V17 06/13] virtio: track IOThread references for thread pinning Zhang Chen
2026-09-16 19:38   ` Stefan Hajnoczi
2026-09-15 10:16 ` [PATCH V17 07/13] net/colo: track IOThread references using path-based holder Zhang Chen
2026-09-16 19:47   ` Stefan Hajnoczi
2026-09-22  3:16     ` Zhang Chen
2026-09-15 10:16 ` [PATCH V17 08/13] virtio-balloon: Update tracking iothread users with holder Zhang Chen
2026-09-16 19:48   ` Stefan Hajnoczi
2026-09-15 10:16 ` [PATCH V17 09/13] vfio-user/proxy: Update tracking iothread users with holder name Zhang Chen
2026-09-16 19:54   ` Stefan Hajnoczi
2026-09-22  6:15     ` Zhang Chen
2026-09-15 10:16 ` [PATCH V17 10/13] xen-block: " Zhang Chen
2026-09-16 19:56   ` Stefan Hajnoczi
2026-09-15 10:16 ` [PATCH V17 11/13] monitor/hmp: display IOThread holders Zhang Chen
2026-09-16 20:01   ` Stefan Hajnoczi
2026-09-15 10:16 ` [PATCH V17 12/13] iothread: make legacy AioContext getter explicitly unsafe Zhang Chen
2026-09-15 10:59   ` Markus Armbruster
2026-09-16  2:24     ` Zhang Chen
2026-09-16  6:55       ` Markus Armbruster
2026-09-16 20:09   ` Stefan Hajnoczi
2026-09-15 10:16 ` [PATCH V17 13/13] tests/unit/iothread: update AioContext ref/put helpers Zhang Chen

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.