From: Zhang Chen <zhangckid@gmail.com>
To: qemu-devel <qemu-devel@nongnu.org>,
"Eric Blake" <eblake@redhat.com>,
"Markus Armbruster" <armbru@redhat.com>,
"'Michael S . Tsirkin'" <mst@redhat.com>,
"Stefan Hajnoczi" <stefanha@redhat.com>,
"Paolo Bonzini" <pbonzini@redhat.com>,
"'Daniel P . Berrangé'" <berrange@redhat.com>,
"Jason Wang" <jasowangio@gmail.com>
Cc: Zhang Chen <zhangckid@gmail.com>
Subject: [PATCH V16 08/13] virtio-balloon: Update tracking iothread users with holder
Date: Fri, 11 Sep 2026 18:07:04 +0800 [thread overview]
Message-ID: <20260911100709.726366-9-zhangckid@gmail.com> (raw)
In-Reply-To: <20260911100709.726366-1-zhangckid@gmail.com>
Replace raw object_ref/unref calls with
iothread_ref_and_get/unref_and_put_aio_context.
Signed-off-by: Zhang Chen <zhangckid@gmail.com>
---
hw/virtio/virtio-balloon.c | 22 +++++++++++++++++-----
1 file changed, 17 insertions(+), 5 deletions(-)
diff --git a/hw/virtio/virtio-balloon.c b/hw/virtio/virtio-balloon.c
index 4c5f486ba2..7c9c8d2a41 100644
--- a/hw/virtio/virtio-balloon.c
+++ b/hw/virtio/virtio-balloon.c
@@ -892,14 +892,20 @@ static void virtio_balloon_device_realize(DeviceState *dev, Error **errp)
s->svq = virtio_add_queue(vdev, 128, virtio_balloon_receive_stats);
if (virtio_has_feature(s->host_features, VIRTIO_BALLOON_F_FREE_PAGE_HINT)) {
+ g_autofree char *path = object_get_canonical_path(OBJECT(s));
+ const IOThreadHolder io_holder = {
+ .type = IO_THREAD_HOLDER_KIND_QOM_OBJECT,
+ .u.qom_object.qom_path = path,
+ };
+
s->free_page_vq = virtio_add_queue(vdev, VIRTQUEUE_MAX_SIZE,
virtio_balloon_handle_free_page_vq);
precopy_add_notifier(&s->free_page_hint_notify);
- object_ref(OBJECT(s->iothread));
- s->free_page_bh = aio_bh_new_guarded(iothread_get_aio_context(s->iothread),
- virtio_ballloon_get_free_page_hints, s,
- &dev->mem_reentrancy_guard);
+ s->free_page_bh = aio_bh_new_guarded(
+ iothread_ref_and_get_aio_context(s->iothread, &io_holder),
+ virtio_ballloon_get_free_page_hints, s,
+ &dev->mem_reentrancy_guard);
}
if (virtio_has_feature(s->host_features, VIRTIO_BALLOON_F_REPORTING)) {
@@ -919,9 +925,15 @@ static void virtio_balloon_device_unrealize(DeviceState *dev)
qemu_unregister_resettable(OBJECT(dev));
if (s->free_page_bh) {
+ g_autofree char *path = object_get_canonical_path(OBJECT(s));
+ const IOThreadHolder io_holder = {
+ .type = IO_THREAD_HOLDER_KIND_QOM_OBJECT,
+ .u.qom_object.qom_path = path,
+ };
+
qemu_bh_delete(s->free_page_bh);
- object_unref(OBJECT(s->iothread));
virtio_balloon_free_page_stop(s);
+ iothread_unref_and_put_aio_context(s->iothread, &io_holder);
precopy_remove_notifier(&s->free_page_hint_notify);
}
balloon_stats_destroy_timer(s);
--
2.43.0
next prev parent reply other threads:[~2026-09-11 10:08 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-11 10:06 [PATCH V16 00/13] iothread: Support tracking and querying IOThread holder Zhang Chen
2026-09-11 10:06 ` [PATCH V16 01/13] iothread: introduce holder tracking Zhang Chen
2026-09-11 10:06 ` [PATCH V16 02/13] iothread: add holder-aware AioContext accessors Zhang Chen
2026-09-11 10:06 ` [PATCH V16 03/13] block/export: track IOThread references Zhang Chen
2026-09-11 10:07 ` [PATCH V16 04/13] monitor: track IOThread users with QOM paths Zhang Chen
2026-09-11 10:07 ` [PATCH V16 05/13] virtio-vq-mapping: track iothread-vq-mapping references using device path Zhang Chen
2026-09-11 10:07 ` [PATCH V16 06/13] virtio: track IOThread references for thread pinning Zhang Chen
2026-09-11 10:07 ` [PATCH V16 07/13] net/colo: track IOThread references using path-based holder Zhang Chen
2026-09-11 10:07 ` Zhang Chen [this message]
2026-09-11 10:07 ` [PATCH V16 09/13] vfio-user/proxy: Update tracking iothread users with holder name Zhang Chen
2026-09-11 10:07 ` [PATCH V16 10/13] xen-block: " Zhang Chen
2026-09-11 10:07 ` [PATCH V16 11/13] monitor/hmp: display IOThread holders Zhang Chen
2026-09-11 10:07 ` [PATCH V16 12/13] iothread: make legacy AioContext getter explicitly unsafe Zhang Chen
2026-09-11 10:07 ` [PATCH V16 13/13] tests/unit/iothread: update AioContext ref/put helpers Zhang Chen
2026-09-11 10:52 ` [PATCH V16 00/13] iothread: Support tracking and querying IOThread holder Markus Armbruster
2026-09-11 12:53 ` Zhang Chen
2026-09-11 13:36 ` Markus Armbruster
2026-09-11 14:26 ` Zhang Chen
2026-09-15 7:33 ` Markus Armbruster
2026-09-15 9:47 ` Zhang Chen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260911100709.726366-9-zhangckid@gmail.com \
--to=zhangckid@gmail.com \
--cc=armbru@redhat.com \
--cc=berrange@redhat.com \
--cc=eblake@redhat.com \
--cc=jasowangio@gmail.com \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox