Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/1.1/patches/2222001/?format=api
{ "id": 2222001, "url": "http://patchwork.ozlabs.org/api/1.1/patches/2222001/?format=api", "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20260410150457.85190-10-zhangckid@gmail.com/", "project": { "id": 14, "url": "http://patchwork.ozlabs.org/api/1.1/projects/14/?format=api", "name": "QEMU Development", "link_name": "qemu-devel", "list_id": "qemu-devel.nongnu.org", "list_email": "qemu-devel@nongnu.org", "web_url": "", "scm_url": "", "webscm_url": "" }, "msgid": "<20260410150457.85190-10-zhangckid@gmail.com>", "date": "2026-04-10T15:04:52", "name": "[V6,09/14] net/colo: track IOThread references using path-based holder", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "dac10c6969910518f94c4c649c1e5dbb9dc57bfe", "submitter": { "id": 72278, "url": "http://patchwork.ozlabs.org/api/1.1/people/72278/?format=api", "name": "Zhang Chen", "email": "zhangckid@gmail.com" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20260410150457.85190-10-zhangckid@gmail.com/mbox/", "series": [ { "id": 499477, "url": "http://patchwork.ozlabs.org/api/1.1/series/499477/?format=api", "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/list/?series=499477", "date": "2026-04-10T15:04:43", "name": "iothread: Support tracking and querying IOThread holders", "version": 6, "mbox": "http://patchwork.ozlabs.org/series/499477/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2222001/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2222001/checks/", "tags": {}, "headers": { "Return-Path": "<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>", "X-Original-To": "incoming@patchwork.ozlabs.org", "Delivered-To": "patchwork-incoming@legolas.ozlabs.org", "Authentication-Results": [ "legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256\n header.s=20251104 header.b=DdL5ohiI;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)" ], "Received": [ "from lists.gnu.org (lists1p.gnu.org [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fsgBS04NZz20HT\n\tfor <incoming@patchwork.ozlabs.org>; Sat, 11 Apr 2026 01:06:56 +1000 (AEST)", "from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1wBDQZ-0007AA-QH; Fri, 10 Apr 2026 11:05:47 -0400", "from eggs.gnu.org ([2001:470:142:3::10])\n by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <zhangckid@gmail.com>)\n id 1wBDQY-00079j-Ey\n for qemu-devel@nongnu.org; Fri, 10 Apr 2026 11:05:46 -0400", "from mail-pj1-x102a.google.com ([2607:f8b0:4864:20::102a])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)\n (Exim 4.90_1) (envelope-from <zhangckid@gmail.com>)\n id 1wBDQX-0002Y1-0s\n for qemu-devel@nongnu.org; Fri, 10 Apr 2026 11:05:46 -0400", "by mail-pj1-x102a.google.com with SMTP id\n 98e67ed59e1d1-35c238f1063so1608781a91.1\n for <qemu-devel@nongnu.org>; Fri, 10 Apr 2026 08:05:44 -0700 (PDT)", "from ZBMac-LWN10QXKQ0.taila0cd24.ts.net ([104.168.88.121])\n by smtp.gmail.com with ESMTPSA id\n 98e67ed59e1d1-35e4131cfacsm3565785a91.10.2026.04.10.08.05.39\n (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256);\n Fri, 10 Apr 2026 08:05:42 -0700 (PDT)" ], "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=gmail.com; s=20251104; t=1775833543; x=1776438343; darn=nongnu.org;\n h=content-transfer-encoding:mime-version:references:in-reply-to\n :message-id:date:subject:cc:to:from:from:to:cc:subject:date\n :message-id:reply-to;\n bh=a1Kh3XSHSeM1ZEixAaGnsOegNSycBCR3GL6VS/B2SVg=;\n b=DdL5ohiIU1IvTFomJgwbItORplh48Q4AGjuD0lDDPFPfI6BKwKIrC6vpArhMldJVrW\n EaoMqpOipG81p1c80M7kQT1xaqYV1dt71xn7RoXCRcFawQWKEtBAvct0VQ8HVDh7T7bA\n jsWnid5zVx+XMF2JTcGgFT+NL+SB5MF4OWRDa6vi09ecKuoyG39c3Dhm+EEZ0xd2XzMz\n LundSR+si0PCy5w3N2psXo1rfhETKY7XjwK6u68eYy/I/TXuY7rtZOh4iHgBYg6nFyro\n 3bdIOCN94WtILAiOsNDliQ7nbwcctYu7nZORxpbfp0wr+a2vlDFJW5i0js0c4aXD7gR1\n U/WQ==", "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1775833543; x=1776438343;\n h=content-transfer-encoding:mime-version:references:in-reply-to\n :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from\n :to:cc:subject:date:message-id:reply-to;\n bh=a1Kh3XSHSeM1ZEixAaGnsOegNSycBCR3GL6VS/B2SVg=;\n b=gyGMtQj4CJyEutV8lECrUDE4lUWhFMcfw/ocsomrAyIMwxakieokugdEwb7h5BHJrM\n vrpl05RbRtJV7CzLIrD9P/EkG+9CxwTGrPiPBFgdousVG7UYaHVRJ/bQbmsbhbYOqmEo\n QRkzFawel7d1sJqgh/sZlv1EYrc5HjvmPnbgUcmM/fCYBeW77ppBfN7YcM1cEXGse14Q\n Jfdlf6tW6uxlgSOuTn7l5Yn7UHIZxdjZ7ET1uLfiEivS84cYa4fRyu57mWvuqVPJDdNm\n I+pdkmuZ+RfcwVy1E3/q5QxnoTppzugAuSb5bkTYS6SH3XOCp48MhowNQWzrs3LWa9SW\n iIZw==", "X-Gm-Message-State": "AOJu0YyE7q+iFt8idBZXEaHgJFINm7llExH4vN8V29Dcd7zQjr1/PqJL\n S/rIjpLvfO65X6BxNBFv0oZPHjuXmjH66WZNM92eRxtKI/iLdUUrv43hF9U4QMMz", "X-Gm-Gg": "AeBDieuvx6kV1s8+AXo/h634XJXzMXs2eY1K01tKm6dGFN5Glx6MsFwvz4Ykjh0Xn4z\n fkzq5n31cfYRJFnV4ZGoAlYbkiO3yzU6e3cUfFjD/htC66zZnosjMQOKUkR2j71Nyi77hXkKqyM\n qDb4A7R478TTuhwFllMwAkNz9Wxlg8eoQWaVE8tRmi/uCRUKUo2lThD/Sq6xDL79j6J+SXA9JID\n zkR9UQoqCpWVn94ETeV4UEtVT/ZDWEQCn5kNC9LXWm79WuEzT8l6gfEcNElFMzoQpPKMH1rPbkT\n 7Pt0uCFZPHIM574/26UP/sHT5QL2ZQE69dXdsZm/lK7SGD7Samfl8wi5WxoPXplFlWUjhxfWFvj\n p+PEUymPAZ2CUAgeZn5GM0SWATcO2+Ylg9H5zVQpLoq3lPrZWvdGFNXy5MwpnDRt30bCfpaZilu\n w4abo6424l88GyfPFjiVGLzrhay0cNRDsWXzEKRiV3nh2AlGliTY10", "X-Received": "by 2002:a17:90b:2e8c:b0:35b:a7be:ae47 with SMTP id\n 98e67ed59e1d1-35e428321d5mr3767159a91.21.1775833543121;\n Fri, 10 Apr 2026 08:05:43 -0700 (PDT)", "From": "Zhang Chen <zhangckid@gmail.com>", "To": "qemu-devel <qemu-devel@nongnu.org>,\n \"Dr . David Alan Gilbert\" <dave@treblig.org>,\n Eric Blake <eblake@redhat.com>, Markus Armbruster <armbru@redhat.com>,\n \"Michael S . Tsirkin\" <mst@redhat.com>,\n Stefan Hajnoczi <stefanha@redhat.com>", "Cc": "Zhang Chen <zhangckid@gmail.com>", "Subject": "[PATCH V6 09/14] net/colo: track IOThread references using path-based\n holder", "Date": "Fri, 10 Apr 2026 23:04:52 +0800", "Message-ID": "<20260410150457.85190-10-zhangckid@gmail.com>", "X-Mailer": "git-send-email 2.49.0", "In-Reply-To": "<20260410150457.85190-1-zhangckid@gmail.com>", "References": "<20260410150457.85190-1-zhangckid@gmail.com>", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "Received-SPF": "pass client-ip=2607:f8b0:4864:20::102a;\n envelope-from=zhangckid@gmail.com; helo=mail-pj1-x102a.google.com", "X-Spam_score_int": "-20", "X-Spam_score": "-2.1", "X-Spam_bar": "--", "X-Spam_report": "(-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,\n DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001,\n RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001,\n SPF_PASS=-0.001 autolearn=ham autolearn_force=no", "X-Spam_action": "no action", "X-BeenThere": "qemu-devel@nongnu.org", "X-Mailman-Version": "2.1.29", "Precedence": "list", "List-Id": "qemu development <qemu-devel.nongnu.org>", "List-Unsubscribe": "<https://lists.nongnu.org/mailman/options/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>", "List-Archive": "<https://lists.nongnu.org/archive/html/qemu-devel>", "List-Post": "<mailto:qemu-devel@nongnu.org>", "List-Help": "<mailto:qemu-devel-request@nongnu.org?subject=help>", "List-Subscribe": "<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=subscribe>", "Errors-To": "qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org", "Sender": "qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org" }, "content": "Convert colo-compare to use the iothread_ref_and_get_aio_context()\nand iothread_put_aio_context() APIs. This ensures that IOThread\nreferences are tracked using the COLO object's canonical QOM path\nas the holder ID.\n\nThis refactoring improves IOThread lifecycle traceability and aligns\nthe code with modern QEMU iothread reference management patterns.\n\nSigned-off-by: Zhang Chen <zhangckid@gmail.com>\n---\n net/colo-compare.c | 18 ++++++++++--------\n 1 file changed, 10 insertions(+), 8 deletions(-)", "diff": "diff --git a/net/colo-compare.c b/net/colo-compare.c\nindex c356419d6a..f3231257d2 100644\n--- a/net/colo-compare.c\n+++ b/net/colo-compare.c\n@@ -130,6 +130,7 @@ struct CompareState {\n GHashTable *connection_track_table;\n \n IOThread *iothread;\n+ AioContext *iothread_ctx;\n GMainContext *worker_context;\n QEMUTimer *packet_check_timer;\n \n@@ -926,9 +927,7 @@ void colo_notify_compares_event(void *opaque, int event, Error **errp)\n \n static void colo_compare_timer_init(CompareState *s)\n {\n- AioContext *ctx = iothread_get_aio_context(s->iothread);\n-\n- s->packet_check_timer = aio_timer_new(ctx, QEMU_CLOCK_HOST,\n+ s->packet_check_timer = aio_timer_new(s->iothread_ctx, QEMU_CLOCK_HOST,\n SCALE_MS, check_old_packet_regular,\n s);\n timer_mod(s->packet_check_timer, qemu_clock_get_ms(QEMU_CLOCK_HOST) +\n@@ -968,8 +967,10 @@ static void colo_compare_handle_event(void *opaque)\n \n static void colo_compare_iothread(CompareState *s)\n {\n- AioContext *ctx = iothread_get_aio_context(s->iothread);\n- object_ref(OBJECT(s->iothread));\n+ g_autofree char *path = object_get_canonical_path(OBJECT(s));\n+ AioContext *ctx = iothread_ref_and_get_aio_context(s->iothread, path);\n+\n+ s->iothread_ctx = ctx;\n s->worker_context = iothread_get_g_main_context(s->iothread);\n \n qemu_chr_fe_set_handlers(&s->chr_pri_in, compare_chr_can_read,\n@@ -1408,6 +1409,7 @@ static void colo_compare_finalize(Object *obj)\n {\n CompareState *s = COLO_COMPARE(obj);\n CompareState *tmp = NULL;\n+ g_autofree char *path = object_get_canonical_path(OBJECT(s));\n \n qemu_mutex_lock(&colo_compare_mutex);\n QTAILQ_FOREACH(tmp, &net_compares, next) {\n@@ -1434,11 +1436,11 @@ static void colo_compare_finalize(Object *obj)\n \n qemu_bh_delete(s->event_bh);\n \n- AioContext *ctx = iothread_get_aio_context(s->iothread);\n- AIO_WAIT_WHILE(ctx, !s->out_sendco.done);\n+ AIO_WAIT_WHILE(s->iothread_ctx, !s->out_sendco.done);\n if (s->notify_dev) {\n- AIO_WAIT_WHILE(ctx, !s->notify_sendco.done);\n+ AIO_WAIT_WHILE(s->iothread_ctx, !s->notify_sendco.done);\n }\n+ iothread_put_aio_context(s->iothread, path);\n \n /* Release all unhandled packets after compare thead exited */\n g_queue_foreach(&s->conn_list, colo_flush_packets, s);\n", "prefixes": [ "V6", "09/14" ] }