[{"id":3677254,"web_url":"http://patchwork.ozlabs.org/comment/3677254/","msgid":"<db93e5db-92f7-445d-b1a7-b2be39a9a059@nutanix.com>","list_archive_url":null,"date":"2026-04-14T15:15:42","subject":"Re: [PATCH 02/17] monitor: replace 'common' with 'parent' in\n MonitorQMP","submitter":{"id":90722,"url":"http://patchwork.ozlabs.org/api/people/90722/","name":"Mark Cave-Ayland","email":"mark.caveayland@nutanix.com"},"content":"On 10/04/2026 17:04, Daniel P. Berrangé wrote:\n\n> The field name 'parent' is standard practice for QOM structs\n> so align the QMP monitor.\n\nThis is not correct: the first field of a QOM object struct should be \ncalled parent_obj, followed by an empty line as per our style guidelines \nat \nhttps://qemu.readthedocs.io/en/master/devel/style.html#qemu-object-model-declarations.\n\n> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>\n> ---\n>   monitor/monitor-internal.h |  2 +-\n>   monitor/monitor.c          |  4 ++--\n>   monitor/qmp-cmds-control.c |  4 ++--\n>   monitor/qmp.c              | 40 +++++++++++++++++++-------------------\n>   4 files changed, 25 insertions(+), 25 deletions(-)\n> \n> diff --git a/monitor/monitor-internal.h b/monitor/monitor-internal.h\n> index ae0cf8c1da..0922588ad9 100644\n> --- a/monitor/monitor-internal.h\n> +++ b/monitor/monitor-internal.h\n> @@ -132,7 +132,7 @@ struct MonitorHMP {\n>   };\n>   \n>   typedef struct {\n> -    Monitor common;\n> +    Monitor parent;\n>       JSONMessageParser parser;\n>       bool pretty;\n>       /*\n> diff --git a/monitor/monitor.c b/monitor/monitor.c\n> index 6532796edb..6b183edcf5 100644\n> --- a/monitor/monitor.c\n> +++ b/monitor/monitor.c\n> @@ -308,7 +308,7 @@ static void monitor_qapi_event_emit(QAPIEvent event, QDict *qdict)\n>               continue;\n>           }\n>   \n> -        qmp_mon = container_of(mon, MonitorQMP, common);\n> +        qmp_mon = container_of(mon, MonitorQMP, parent);\n>           {\n>               QEMU_LOCK_GUARD(&mon->mon_lock);\n>               if (qmp_mon->commands == &qmp_cap_negotiation_commands) {\n> @@ -625,7 +625,7 @@ void monitor_data_destroy(Monitor *mon)\n>       g_free(mon->mon_cpu_path);\n>       qemu_chr_fe_deinit(&mon->chr, false);\n>       if (monitor_is_qmp(mon)) {\n> -        monitor_data_destroy_qmp(container_of(mon, MonitorQMP, common));\n> +        monitor_data_destroy_qmp(container_of(mon, MonitorQMP, parent));\n>       } else {\n>           readline_free(container_of(mon, MonitorHMP, parent)->rs);\n>       }\n> diff --git a/monitor/qmp-cmds-control.c b/monitor/qmp-cmds-control.c\n> index 150ca9f5cb..ca471bc1c7 100644\n> --- a/monitor/qmp-cmds-control.c\n> +++ b/monitor/qmp-cmds-control.c\n> @@ -76,7 +76,7 @@ void qmp_qmp_capabilities(bool has_enable, QMPCapabilityList *enable,\n>       MonitorQMP *mon;\n>   \n>       assert(monitor_is_qmp(cur_mon));\n> -    mon = container_of(cur_mon, MonitorQMP, common);\n> +    mon = container_of(cur_mon, MonitorQMP, parent);\n>   \n>       if (mon->commands == &qmp_commands) {\n>           error_set(errp, ERROR_CLASS_COMMAND_NOT_FOUND,\n> @@ -126,7 +126,7 @@ CommandInfoList *qmp_query_commands(Error **errp)\n>       MonitorQMP *mon;\n>   \n>       assert(monitor_is_qmp(cur_mon));\n> -    mon = container_of(cur_mon, MonitorQMP, common);\n> +    mon = container_of(cur_mon, MonitorQMP, parent);\n>   \n>       qmp_for_each_command(mon->commands, query_commands_cb, &list);\n>   \n> diff --git a/monitor/qmp.c b/monitor/qmp.c\n> index 687019811f..69d9e40e32 100644\n> --- a/monitor/qmp.c\n> +++ b/monitor/qmp.c\n> @@ -80,7 +80,7 @@ static void monitor_qmp_caps_reset(MonitorQMP *mon)\n>   {\n>       memset(mon->capab_offered, 0, sizeof(mon->capab_offered));\n>       memset(mon->capab, 0, sizeof(mon->capab));\n> -    mon->capab_offered[QMP_CAPABILITY_OOB] = mon->common.use_io_thread;\n> +    mon->capab_offered[QMP_CAPABILITY_OOB] = mon->parent.use_io_thread;\n>   }\n>   \n>   static void qmp_request_free(QMPRequest *req)\n> @@ -124,7 +124,7 @@ static void monitor_qmp_cleanup_queue_and_resume(MonitorQMP *mon)\n>            * when we get here while the monitor is suspended.  An\n>            * unfortunately timed CHR_EVENT_CLOSED can do the trick.\n>            */\n> -        monitor_resume(&mon->common);\n> +        monitor_resume(&mon->parent);\n>       }\n>   \n>   }\n> @@ -139,7 +139,7 @@ void qmp_send_response(MonitorQMP *mon, const QDict *rsp)\n>       trace_monitor_qmp_respond(mon, json->str);\n>   \n>       g_string_append_c(json, '\\n');\n> -    monitor_puts(&mon->common, json->str);\n> +    monitor_puts(&mon->parent, json->str);\n>   \n>       g_string_free(json, true);\n>   }\n> @@ -166,7 +166,7 @@ static void monitor_qmp_dispatch(MonitorQMP *mon, QObject *req)\n>       QDict *error;\n>   \n>       rsp = qmp_dispatch(mon->commands, req, qmp_oob_enabled(mon),\n> -                       &mon->common);\n> +                       &mon->parent);\n>   \n>       if (mon->commands == &qmp_cap_negotiation_commands) {\n>           error = qdict_get_qdict(rsp, \"error\");\n> @@ -207,7 +207,7 @@ static QMPRequest *monitor_qmp_requests_pop_any_with_lock(void)\n>               continue;\n>           }\n>   \n> -        qmp_mon = container_of(mon, MonitorQMP, common);\n> +        qmp_mon = container_of(mon, MonitorQMP, parent);\n>           qemu_mutex_lock(&qmp_mon->qmp_queue_lock);\n>           req_obj = g_queue_pop_head(qmp_mon->qmp_requests);\n>           if (req_obj) {\n> @@ -302,7 +302,7 @@ void coroutine_fn monitor_qmp_dispatcher_co(void *data)\n>           oob_enabled = qmp_oob_enabled(mon);\n>           if (oob_enabled\n>               && mon->qmp_requests->length == QMP_REQ_QUEUE_LEN_MAX - 1) {\n> -            monitor_resume(&mon->common);\n> +            monitor_resume(&mon->parent);\n>           }\n>   \n>           /*\n> @@ -343,7 +343,7 @@ void coroutine_fn monitor_qmp_dispatcher_co(void *data)\n>           }\n>   \n>           if (!oob_enabled) {\n> -            monitor_resume(&mon->common);\n> +            monitor_resume(&mon->parent);\n>           }\n>   \n>           qmp_request_free(req_obj);\n> @@ -408,7 +408,7 @@ static void handle_qmp_command(void *opaque, QObject *req, Error *err)\n>            */\n>           if (!qmp_oob_enabled(mon) ||\n>               mon->qmp_requests->length == QMP_REQ_QUEUE_LEN_MAX - 1) {\n> -            monitor_suspend(&mon->common);\n> +            monitor_suspend(&mon->parent);\n>           }\n>   \n>           /*\n> @@ -462,7 +462,7 @@ static void monitor_qmp_event(void *opaque, QEMUChrEvent event)\n>   \n>       switch (event) {\n>       case CHR_EVENT_OPENED:\n> -        WITH_QEMU_LOCK_GUARD(&mon->common.mon_lock) {\n> +        WITH_QEMU_LOCK_GUARD(&mon->parent.mon_lock) {\n>               mon->commands = &qmp_cap_negotiation_commands;\n>               monitor_qmp_caps_reset(mon);\n>           }\n> @@ -504,27 +504,27 @@ static void monitor_qmp_setup_handlers_bh(void *opaque)\n>       MonitorQMP *mon = opaque;\n>       GMainContext *context;\n>   \n> -    assert(mon->common.use_io_thread);\n> +    assert(mon->parent.use_io_thread);\n>       context = iothread_get_g_main_context(mon_iothread);\n>       assert(context);\n> -    qemu_chr_fe_set_handlers(&mon->common.chr, monitor_can_read,\n> +    qemu_chr_fe_set_handlers(&mon->parent.chr, monitor_can_read,\n>                                monitor_qmp_read, monitor_qmp_event,\n> -                             NULL, &mon->common, context, true);\n> -    monitor_list_append(&mon->common);\n> +                             NULL, &mon->parent, context, true);\n> +    monitor_list_append(&mon->parent);\n>   }\n>   \n>   void monitor_init_qmp(Chardev *chr, bool pretty, Error **errp)\n>   {\n>       MonitorQMP *mon = g_new0(MonitorQMP, 1);\n>   \n> -    if (!qemu_chr_fe_init(&mon->common.chr, chr, errp)) {\n> +    if (!qemu_chr_fe_init(&mon->parent.chr, chr, errp)) {\n>           g_free(mon);\n>           return;\n>       }\n> -    qemu_chr_fe_set_echo(&mon->common.chr, true);\n> +    qemu_chr_fe_set_echo(&mon->parent.chr, true);\n>   \n>       /* Note: we run QMP monitor in I/O thread when @chr supports that */\n> -    monitor_data_init(&mon->common, true, false,\n> +    monitor_data_init(&mon->parent, true, false,\n>                         qemu_chr_has_feature(chr, QEMU_CHAR_FEATURE_GCONTEXT));\n>   \n>       mon->pretty = pretty;\n> @@ -533,7 +533,7 @@ void monitor_init_qmp(Chardev *chr, bool pretty, Error **errp)\n>       mon->qmp_requests = g_queue_new();\n>   \n>       json_message_parser_init(&mon->parser, handle_qmp_command, mon, NULL);\n> -    if (mon->common.use_io_thread) {\n> +    if (mon->parent.use_io_thread) {\n>           /*\n>            * Make sure the old iowatch is gone.  It's possible when\n>            * e.g. the chardev is in client mode, with wait=on.\n> @@ -553,9 +553,9 @@ void monitor_init_qmp(Chardev *chr, bool pretty, Error **errp)\n>                                   monitor_qmp_setup_handlers_bh, mon);\n>           /* The bottom half will add @mon to @mon_list */\n>       } else {\n> -        qemu_chr_fe_set_handlers(&mon->common.chr, monitor_can_read,\n> +        qemu_chr_fe_set_handlers(&mon->parent.chr, monitor_can_read,\n>                                    monitor_qmp_read, monitor_qmp_event,\n> -                                 NULL, &mon->common, NULL, true);\n> -        monitor_list_append(&mon->common);\n> +                                 NULL, &mon->parent, NULL, true);\n> +        monitor_list_append(&mon->parent);\n>       }\n>   }\n\n\nATB,\n\nMark.","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=nutanix.com header.i=@nutanix.com header.a=rsa-sha256\n header.s=proofpoint20171006 header.b=D0I4OKXT;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=nutanix.com header.i=@nutanix.com header.a=rsa-sha256\n header.s=selector1 header.b=aR9y2x0S;\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=lists1p.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)"],"Received":["from lists1p.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 4fw7Ct6Ql1z1yCv\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 15 Apr 2026 01:16:42 +1000 (AEST)","from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists1p.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1wCfUt-0003zS-Pz; Tue, 14 Apr 2026 11:16:15 -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 <mark.caveayland@nutanix.com>)\n id 1wCfUr-0003z9-Pu; Tue, 14 Apr 2026 11:16:14 -0400","from mx0b-002c1b01.pphosted.com ([148.163.155.12])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <mark.caveayland@nutanix.com>)\n id 1wCfUl-0003IV-OG; Tue, 14 Apr 2026 11:16:12 -0400","from pps.filterd (m0127841.ppops.net [127.0.0.1])\n by mx0b-002c1b01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id\n 63ED3uvg658424; Tue, 14 Apr 2026 08:15:53 -0700","from dm1pr04cu001.outbound.protection.outlook.com\n (mail-centralusazon11020133.outbound.protection.outlook.com [52.101.61.133])\n by mx0b-002c1b01.pphosted.com (PPS) with ESMTPS id 4dh84stqxf-1\n (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT);\n Tue, 14 Apr 2026 08:15:53 -0700 (PDT)","from PH0PR02MB7159.namprd02.prod.outlook.com (2603:10b6:510:16::8)\n by LV0PR02MB11111.namprd02.prod.outlook.com (2603:10b6:408:334::24) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Tue, 14 Apr\n 2026 15:15:50 +0000","from PH0PR02MB7159.namprd02.prod.outlook.com\n ([fe80::8e97:bc32:822c:b250]) by PH0PR02MB7159.namprd02.prod.outlook.com\n ([fe80::8e97:bc32:822c:b250%6]) with mapi id 15.20.9769.046; Tue, 14 Apr 2026\n 15:15:50 +0000"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; h=\n cc:content-transfer-encoding:content-type:date:from:in-reply-to\n :message-id:mime-version:references:subject:to; s=\n proofpoint20171006; bh=1F9kSExJXcbxIYEzE14KFlTHns1oDyZZSY8HeuMs9\n hI=; b=D0I4OKXTcwpidcW9D0XNauzjbCvORI+rPHtklY0C9UDr9xfsjxMU1cohM\n 6mkUd/6oSjMSez7oi/cAdFtjI1tW4GZtfJ5Xe/EjakLIVwbVz6Jifz7pdN3cemjg\n y2Aksh4sZNvinUkbnVfXLmzKUbkh5qNAOmRZdQU5cnuuoXHUBHmgC8PBqTN3Yhyk\n ZYk5/sqR0RRC9OFel3uXHLrgBpecLEXiokOdouX+3ST2nsCl496mETXJs+WYlJ0y\n bUr2ZUEqwgVR9S0j0s8XZuY92qArFVNz7oM+cRa59NrnVccldQhiTRaIMxxkGfCe\n EMYQdLp1pdBIVpCXSvhTEjAIigGbA==","v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com;\n s=selector1;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=1F9kSExJXcbxIYEzE14KFlTHns1oDyZZSY8HeuMs9hI=;\n b=aR9y2x0S9WWkCPITg/Sk4STYqRRlOZ+CQSxT56Kl4/E5THEmxDNIZkXq3UG2NH2m0f/HmzuV/Cy7mkiabmEpdkdUIA4Et/qQ7Uxh0mBS5ear/T/c4ygPBmfOkFA6NgZLRSmwVdZ5lJ5Uo2qjYiz3EkR4qyxuh0RDufd0429KhESYcm4yFXXcXIcYchypn7s8BeCnTIqDK0uT3QreEVk4+O0l9fKY1/7qMWC0v3bCBX5F2YEsMbytzzJTIgrOzhVVs86oiaACjuhAFUqVh/H12Phu+oPtTzmAspAUXay8GQuNWAAgR6av0qcKBfP8YBRVAXQSKBv6HqndTGSAkyBlyw=="],"ARC-Seal":"i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=rDu9HwN2q+SIDzGLZ9fYgb9uLeX1yZptHd80rKZRYEYGOR3odqvIsFQns1KAH693cPwHouHRJcfVlE9f0Ct4bbN9Sn4MwHwg9JlF/SpigCTlSFebLU1ifdKiqFnVDiRFsJp9U9ysC0z+TXKAwA0M2zb2TvT7B8RryaoXB29S2KW9uSXe1yQRRqS8fLOgBDVBBPu77K4zXpRu7vXUdf6R8OhE6HMENkS2/CGKZrvZASeF88RjvYkz+dLP9AJ1BwdpoPF9yS2GsKByNu+VPoj20lFOFnJsi/Y5PpmZSKBz5LTPo7SV/jkZzwfarpUrq9gN8xkQnSm5xAeYbrlMyAluTA==","ARC-Message-Signature":"i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;\n bh=1F9kSExJXcbxIYEzE14KFlTHns1oDyZZSY8HeuMs9hI=;\n b=sPJbwuTxgsJ//SU3V/af2byinTWcxJFK5Yu/oLGBFYPbDcUHyDMFFGatkGlcmQA89IRiuCnUQQPZCertSLQTK44AEG+WULyN1tfMCilAiy8aDcil9C18f7RWTRUDaJrPgq0zdNVnoDKcnpsKGnNvHTsdXT4G8MF4xE0UbOdEqRFlO6lswls534Q2Ec0OQk1XALE5SOLYjqr8oniJ5W7YjryyKw+bp39kHJ18k2dJ/63kqtobCLAJaEfryC0XAjExeevwesbg6ZBsXt5QcqvYjdXyXrzLcdzfpKFVcoZy1+c3QewFfqK3Q9X+8OfSQogF5KM1QZ+QN7SFBmN2Umq8dg==","ARC-Authentication-Results":"i=1; mx.microsoft.com 1; spf=pass\n smtp.mailfrom=nutanix.com; dmarc=pass action=none header.from=nutanix.com;\n dkim=pass header.d=nutanix.com; arc=none","Message-ID":"<db93e5db-92f7-445d-b1a7-b2be39a9a059@nutanix.com>","Date":"Tue, 14 Apr 2026 16:15:42 +0100","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH 02/17] monitor: replace 'common' with 'parent' in\n MonitorQMP","To":"=?utf-8?q?Daniel_P=2E_Berrang=C3=A9?= <berrange@redhat.com>,\n qemu-devel@nongnu.org","Cc":"Paolo Bonzini <pbonzini@redhat.com>,\n Markus Armbruster <armbru@redhat.com>,\n Christian Brauner <brauner@kernel.org>,\n =?utf-8?q?Alex_Benn=C3=A9e?= <alex.bennee@linaro.org>, =?utf-8?q?Philippe_M?=\n\t=?utf-8?q?athieu-Daud=C3=A9?= <philmd@linaro.org>,\n Fabiano Rosas <farosas@suse.de>,\n =?utf-8?q?Marc-Andr=C3=A9_Lureau?= <marcandre.lureau@redhat.com>,\n Peter Xu <peterx@redhat.com>, Kevin Wolf <kwolf@redhat.com>,\n qemu-block@nongnu.org, \"Dr. David Alan Gilbert\" <dave@treblig.org>,\n Eric Blake <eblake@redhat.com>","References":"<20260410160458.3778874-1-berrange@redhat.com>\n <20260410160458.3778874-3-berrange@redhat.com>","Content-Language":"en-US","From":"Mark Cave-Ayland <mark.caveayland@nutanix.com>","In-Reply-To":"<20260410160458.3778874-3-berrange@redhat.com>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"8bit","X-ClientProxiedBy":"CY5PR10CA0024.namprd10.prod.outlook.com\n (2603:10b6:930:1c::24) To PH0PR02MB7159.namprd02.prod.outlook.com\n (2603:10b6:510:16::8)","MIME-Version":"1.0","X-MS-PublicTrafficType":"Email","X-MS-TrafficTypeDiagnostic":"PH0PR02MB7159:EE_|LV0PR02MB11111:EE_","X-MS-Office365-Filtering-Correlation-Id":"5ce04af9-dbde-4b1e-714d-08de9a38b5de","x-proofpoint-crosstenant":"true","X-MS-Exchange-SenderADCheck":"1","X-MS-Exchange-AntiSpam-Relay":"0","X-Microsoft-Antispam":"BCL:0;\n ARA:13230040|366016|7416014|376014|1800799024|56012099003|22082099003|18002099003;","X-Microsoft-Antispam-Message-Info":"\n br5yU2gL4V2NrQmRr55PUTQGulPl3GqKpGmatdXpamhYCbvOcQcbJ+LiRyLUHOuerrIeSslSS+Y5yFko9B3KORb/6xuUJfhuFX9qWiUatDmdPUD6EsbeEqXKBp2zHR4nSvQ/FzVmIceBmnxRTD9UYl7YJvqNmVxHsExQWTykO/tj2U+9WKlqJG7OFkYX79u9IKd9/baE23yOCgw9zUlZ0u5UJuFjd8kCiz2IhD8gaw35w2+gcWLBRfKyT2ZhzPNZyjIFLM91GBztJnsKqsUMNiQqTiVNI7Fta5SkwBGbgdJDN2fI4oIUfeNMNqnkvS3wN9vOt8Y8Rcz0hj8J9PIzITMO9H69d/CaKYa6JH1wyGvSWRy9rUi4AK/rHqKbVZWSG6mJZgRs4bkFvy8Ioj2/ysnyJcN5MLdnOKZAW+vV/U0b54UZ1lWC5XYQVaApcy+5ZNj7GFCbTl+CdQdA6WWmz185Sbu9+h2SLap7A7VbPC7toU1uhHGvRQFBoKPzy+d7NRSMEmVGOFxT/jEhIORs2//vIFTxEv6W+yqDAcHleZywJ7sOpypj1ZNroZ8AobUIzhbRN3wN3aeqv0SN9YcgRZaIdJ7zeN0e9Qh/9a1zXgDb1Tx7FzsTCJKy/4h4ZjpDKWZpx4MXtyNbItkLLSaYd857NK0Mcki7GuaE9gb+pbXVSrOLu66U+R6+iUytffi/","X-Forefront-Antispam-Report":"CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:;\n IPV:NLI; SFV:NSPM; H:PH0PR02MB7159.namprd02.prod.outlook.com; PTR:; CAT:NONE;\n SFS:(13230040)(366016)(7416014)(376014)(1800799024)(56012099003)(22082099003)(18002099003);\n DIR:OUT; SFP:1102;","X-MS-Exchange-AntiSpam-MessageData-ChunkCount":"1","X-MS-Exchange-AntiSpam-MessageData-0":"=?utf-8?q?QUgjcYdrezBT6pcHUbVkW6GhgESo?=\n\t=?utf-8?q?RKv4D8EybCXCBRoGGE6UaTP7fTZkywWxI17wUzScUxdC+Xsq0fTIRGwCioYXrW3jB?=\n\t=?utf-8?q?avk8IAcCU+lGjywIigdL7ZUiQuEm4uQKYiWpqEfx0d1s/k2LCUlH/3KTvKgf+tnka?=\n\t=?utf-8?q?Wz4pYyRdhVRzxFUcbjuciLgWtuOtFKacI+6L4NqJNoeN3CirTLCCGqsHQX6QCTZNL?=\n\t=?utf-8?q?UU63yrcyjOeK+VWg483817j2kzgksdcK7J9E3KD5XTd6IIMdJ4+uPOJAoH6paokai?=\n\t=?utf-8?q?vod0nu6+L/5zvT8EDVHrYbbuWvUKUQTBbxsn5GKapza1eKiTKWQ/CmQ76Vgiuihlx?=\n\t=?utf-8?q?P70pord8HpH0qKNu2/95oTYRCuWr+AA4cEgJSfdJ824Avr26KoCbvTc0AMPPLrPAJ?=\n\t=?utf-8?q?fATSEgYHDNAAQPo3ec0qvZmTExZV469u4p6GiSQX8EO0hHQq5HoHp424dwPirLfjg?=\n\t=?utf-8?q?M5+Xb/UMsweqhUfvzymwYvvjieA+Vr2ItgDawbVMNGAQnzc3d1v6IdTxC3EOddfYb?=\n\t=?utf-8?q?kaIfmPJUOnifmkQTgF0Ca2YSXCczO45TlWFDvre2kO8mTCQq1zGz+gDFJ6Bnr0Q5z?=\n\t=?utf-8?q?LdMSoaKSptYm3fqY0mxaxEuNoYJtyg83ZGzNQlGrvPL6m5h5NI+yAqTDhO9RuxG3D?=\n\t=?utf-8?q?HtRg8O/BBZkCZBHw5MOG6ADqpanBOmIigqpMq92ujRYOEYrgPy35RJzdAFM0STHtA?=\n\t=?utf-8?q?3YvQ9BX/kfaP1pUmyCIGXyiaSXxcoZj9KXp1t7VKzZjdoAA5Mph3545zQe9TALlJR?=\n\t=?utf-8?q?4xwAaDo5vYnIbgwojsNSD0lqtLyeCmcc06r1sXxkGTsqK2Kx8UkhizVzvZpdccxez?=\n\t=?utf-8?q?HQs71CsIJb/7g6I8wFK5gVn+3jOfFHX92nQoiF/w2oWAIrto9JRo6CxlAPCurUHFC?=\n\t=?utf-8?q?ObF3tNf0QdWUUA7HuJrXYQMW1337QLtOFa9CiewU752pbCFqxLlWgADnnxcRMz1E1?=\n\t=?utf-8?q?4XZuYADnydeP3RpAZ4GXAfcJe6G+Rtwa8r4h79e7glP7HCWEGTnjBMrXHc57ZA3FK?=\n\t=?utf-8?q?S+gEDVrTVoXTbMUHg5y87r+y/6OV25g00hnceoLgCPLOxvP9rnMSCdOGHWJflv6jh?=\n\t=?utf-8?q?PgX1T2q9sW/HH443eviVVpMTBrSLWH2UMhJgnpRbacmsJi1hWRnqbdHXQSrDhIETD?=\n\t=?utf-8?q?rIITC046sgk/dQXLUV6QXW4YzevoH0cyytVdnyd5CN+cfuStCcchocJ/a4OMRqao4?=\n\t=?utf-8?q?hezcnzhicN6hUofHPMhB1ur+po3RpRR58Z6YZd/Zu4iCIhR0HnYBOLxnSeG79FoIT?=\n\t=?utf-8?q?sBo9yiCTv7i6vYaSiSqQHIoYbGCaZ/I0vXFhanSanY1zxgm50ZVTH6dcrUcgUuVxD?=\n\t=?utf-8?q?2COccVHy69OrGhe1JyLrop3t5b2s2Z/9cU4N3MmBL6X2JkM4tygg/znWR5yH1hFW7?=\n\t=?utf-8?q?WFhGlPVg3jKKyaLjOI+PgyWWooNfcj3MKhUMBtveMdiiYWhwoWWbEdFO0FFtsPugS?=\n\t=?utf-8?q?dFGpUCUj6B6Y1uT0JCCKAYzdiu83+OU3R91bX5p+92FLqhbCuhEvMWd33zD+eiWLF?=\n\t=?utf-8?q?bFVSQm3VHGNHywcYJoKYf6CTnVou3YEkquAovJcldsgInbt9v6Yw7/ZcLzZSL+6Ib?=\n\t=?utf-8?q?qZV/x895ycULH2k4RI1fXjm+jfOH01KADKE1NnBjUfRAe+UKTloCPlrmvS8jFo/YD?=\n\t=?utf-8?q?T/hUL+Zd5AC5ar3XZsTTexSH96YjVhrki33yhuAOjN+dnLBP5eqC8=3D?=","X-Exchange-RoutingPolicyChecked":"\n oDXDHQI0HBzu1DX7yYYq26AaQnk1Ah9il9sNFSd/xw4MeuCnsu7+Qvtd1q3Q/Dn4hGg8F8DhhE+hNuhb+ktTgf8ic5ajDc7mpMXIOaP24sJAx4FaxkY60kx48pxjxwXOmYrbGOztlt13r5WXIELdyoyQxqXbr6h9f1ScTdsezdmXortYMOmhULollfrFGYgNwYUKYfQZmKArsw5Q1qiSnd4ldzuwpQmRsUzW0VapBEsty4QMz+Q/HB6FceEfoaPpBukLBD99jIS4l1nX6HzJjyrnNlpO8d5in7RUEFPk3YS1hdHfME2U/Xa47h7ON84CJSvIeONOCBvh2VJ/1hWFUw==","X-OriginatorOrg":"nutanix.com","X-MS-Exchange-CrossTenant-Network-Message-Id":"\n 5ce04af9-dbde-4b1e-714d-08de9a38b5de","X-MS-Exchange-CrossTenant-AuthSource":"PH0PR02MB7159.namprd02.prod.outlook.com","X-MS-Exchange-CrossTenant-AuthAs":"Internal","X-MS-Exchange-CrossTenant-OriginalArrivalTime":"14 Apr 2026 15:15:49.9434 (UTC)","X-MS-Exchange-CrossTenant-FromEntityHeader":"Hosted","X-MS-Exchange-CrossTenant-Id":"bb047546-786f-4de1-bd75-24e5b6f79043","X-MS-Exchange-CrossTenant-MailboxType":"HOSTED","X-MS-Exchange-CrossTenant-UserPrincipalName":"\n 0fNjL/c9aItMb5RrBF3q5ojH8Erp3+zPCmGTuxngcYU64TIjbHLLrkvVJ85iTGxfjE/OSKnyUA/CKaYFzwAwqWSIujaHDpNvnyf7gxynii8=","X-MS-Exchange-Transport-CrossTenantHeadersStamped":"LV0PR02MB11111","X-Proofpoint-ORIG-GUID":"gh0N4U0tvsqbtO46xKR3s63xLvVyHeNn","X-Proofpoint-Spam-Details-Enc":"AW1haW4tMjYwNDE0MDE0MyBTYWx0ZWRfX8E5ZngK2lTLS\n kzTxMxJkj9++/64ktdRSSerRhaJ9yeRKrIr6erjhkVE4ywzyxAwKbzx6qiiQKe0bAdRH2e2PSxo\n DPNGmcw+WURfGehhX/8pZ/6MnlAnhFrTI3Bw6XN9PXg/AJ1JK5oYVCE2oxZ4u+Ns7HgH9aW9RN1\n pyhvoRYZ2KSpz3KnaIKlZPL5YCsxhV4GljmtNkn4ctiMsmhhDRaJruBzxooHekNFJbvDIZvf6eJ\n SYYxoKt/5JSWiD23cVracZqqBlHW8eLVe66zwQyIC0J3h0kq1qSn6+D/GykYMryEto8JZ86Vmys\n 3rL+1IGqh1PDtjl4yh8H2NT+hCmlgpEvLZpsr5VzWgpH+GtTcV0r0duh1k/EhHqeHhrZw6rC/W7\n ZwIF/jaj3pMYVWAHhh+rLcQHyeXACEm4p0AYk7JJ7/lukPTMd9Jh+RIgwH4VfDKa7wQ/iG9hCjk\n 5sXoJ666FVObHrsvdxA==","X-Authority-Analysis":"v=2.4 cv=deCwG3Xe c=1 sm=1 tr=0 ts=69de5a29 cx=c_pps\n a=3l++41Tsbfu3Vy6U+n14cA==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19\n a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19\n a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=A5OVakUREuEA:10 a=0kUYKlekyDsA:10\n a=VkNPw1HP01LnGYTKEx00:22 a=VofLwUrZ8Iiv6rRUPXIb:22 a=jxMXjlTPpCISP5mWtjnE:22\n a=UXIAUNObAAAA:8 a=20KFwNOVAAAA:8 a=p7i_hZ2ym6tkgK26glAA:9 a=3ZKOabzyN94A:10\n a=QEXdDO2ut3YA:10 a=a1s67YnXd6TbAZZNj1wK:22","X-Proofpoint-GUID":"gh0N4U0tvsqbtO46xKR3s63xLvVyHeNn","X-Proofpoint-Virus-Version":"vendor=baseguard\n engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49\n definitions=2026-04-14_03,2026-04-13_04,2025-10-01_01","X-Proofpoint-Spam-Reason":"safe","Received-SPF":"pass client-ip=148.163.155.12;\n envelope-from=mark.caveayland@nutanix.com; helo=mx0b-002c1b01.pphosted.com","X-Spam_score_int":"-32","X-Spam_score":"-3.3","X-Spam_bar":"---","X-Spam_report":"(-3.3 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.54,\n DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1,\n RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001,\n RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, 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"}},{"id":3677261,"web_url":"http://patchwork.ozlabs.org/comment/3677261/","msgid":"<ad5ccvLw2XpdEn7-@redhat.com>","list_archive_url":null,"date":"2026-04-14T15:25:38","subject":"Re: [PATCH 02/17] monitor: replace 'common' with 'parent' in\n MonitorQMP","submitter":{"id":2694,"url":"http://patchwork.ozlabs.org/api/people/2694/","name":"Daniel P. Berrangé","email":"berrange@redhat.com"},"content":"On Tue, Apr 14, 2026 at 04:15:42PM +0100, Mark Cave-Ayland wrote:\n> On 10/04/2026 17:04, Daniel P. Berrangé wrote:\n> \n> > The field name 'parent' is standard practice for QOM structs\n> > so align the QMP monitor.\n> \n> This is not correct: the first field of a QOM object struct should be called\n> parent_obj, followed by an empty line as per our style guidelines at https://qemu.readthedocs.io/en/master/devel/style.html#qemu-object-model-declarations.\n\nSigh, of course we're massively inconsistent in this :-(\n\nI initially just checked 1st level objects, which favours 'parent'\n\n  $ git grep 'Object parent;' | wc -l\n  34\n  $ git grep 'Object parent_obj;' | wc -l\n  18\n\nbut I should have checked more deeply\n\n $ git grep -E '(\\w+) parent_obj;'  | wc -l\n 859\n $ git grep -E '(\\w+) parent;'  | wc -l\n 269\n\nI'll switch to 'parent_obj' here.\n\n> \n> > Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>\n> > ---\n> >   monitor/monitor-internal.h |  2 +-\n> >   monitor/monitor.c          |  4 ++--\n> >   monitor/qmp-cmds-control.c |  4 ++--\n> >   monitor/qmp.c              | 40 +++++++++++++++++++-------------------\n> >   4 files changed, 25 insertions(+), 25 deletions(-)\n> > \n> > diff --git a/monitor/monitor-internal.h b/monitor/monitor-internal.h\n> > index ae0cf8c1da..0922588ad9 100644\n> > --- a/monitor/monitor-internal.h\n> > +++ b/monitor/monitor-internal.h\n> > @@ -132,7 +132,7 @@ struct MonitorHMP {\n> >   };\n> >   typedef struct {\n> > -    Monitor common;\n> > +    Monitor parent;\n> >       JSONMessageParser parser;\n> >       bool pretty;\n> >       /*\n> > diff --git a/monitor/monitor.c b/monitor/monitor.c\n> > index 6532796edb..6b183edcf5 100644\n> > --- a/monitor/monitor.c\n> > +++ b/monitor/monitor.c\n> > @@ -308,7 +308,7 @@ static void monitor_qapi_event_emit(QAPIEvent event, QDict *qdict)\n> >               continue;\n> >           }\n> > -        qmp_mon = container_of(mon, MonitorQMP, common);\n> > +        qmp_mon = container_of(mon, MonitorQMP, parent);\n> >           {\n> >               QEMU_LOCK_GUARD(&mon->mon_lock);\n> >               if (qmp_mon->commands == &qmp_cap_negotiation_commands) {\n> > @@ -625,7 +625,7 @@ void monitor_data_destroy(Monitor *mon)\n> >       g_free(mon->mon_cpu_path);\n> >       qemu_chr_fe_deinit(&mon->chr, false);\n> >       if (monitor_is_qmp(mon)) {\n> > -        monitor_data_destroy_qmp(container_of(mon, MonitorQMP, common));\n> > +        monitor_data_destroy_qmp(container_of(mon, MonitorQMP, parent));\n> >       } else {\n> >           readline_free(container_of(mon, MonitorHMP, parent)->rs);\n> >       }\n> > diff --git a/monitor/qmp-cmds-control.c b/monitor/qmp-cmds-control.c\n> > index 150ca9f5cb..ca471bc1c7 100644\n> > --- a/monitor/qmp-cmds-control.c\n> > +++ b/monitor/qmp-cmds-control.c\n> > @@ -76,7 +76,7 @@ void qmp_qmp_capabilities(bool has_enable, QMPCapabilityList *enable,\n> >       MonitorQMP *mon;\n> >       assert(monitor_is_qmp(cur_mon));\n> > -    mon = container_of(cur_mon, MonitorQMP, common);\n> > +    mon = container_of(cur_mon, MonitorQMP, parent);\n> >       if (mon->commands == &qmp_commands) {\n> >           error_set(errp, ERROR_CLASS_COMMAND_NOT_FOUND,\n> > @@ -126,7 +126,7 @@ CommandInfoList *qmp_query_commands(Error **errp)\n> >       MonitorQMP *mon;\n> >       assert(monitor_is_qmp(cur_mon));\n> > -    mon = container_of(cur_mon, MonitorQMP, common);\n> > +    mon = container_of(cur_mon, MonitorQMP, parent);\n> >       qmp_for_each_command(mon->commands, query_commands_cb, &list);\n> > diff --git a/monitor/qmp.c b/monitor/qmp.c\n> > index 687019811f..69d9e40e32 100644\n> > --- a/monitor/qmp.c\n> > +++ b/monitor/qmp.c\n> > @@ -80,7 +80,7 @@ static void monitor_qmp_caps_reset(MonitorQMP *mon)\n> >   {\n> >       memset(mon->capab_offered, 0, sizeof(mon->capab_offered));\n> >       memset(mon->capab, 0, sizeof(mon->capab));\n> > -    mon->capab_offered[QMP_CAPABILITY_OOB] = mon->common.use_io_thread;\n> > +    mon->capab_offered[QMP_CAPABILITY_OOB] = mon->parent.use_io_thread;\n> >   }\n> >   static void qmp_request_free(QMPRequest *req)\n> > @@ -124,7 +124,7 @@ static void monitor_qmp_cleanup_queue_and_resume(MonitorQMP *mon)\n> >            * when we get here while the monitor is suspended.  An\n> >            * unfortunately timed CHR_EVENT_CLOSED can do the trick.\n> >            */\n> > -        monitor_resume(&mon->common);\n> > +        monitor_resume(&mon->parent);\n> >       }\n> >   }\n> > @@ -139,7 +139,7 @@ void qmp_send_response(MonitorQMP *mon, const QDict *rsp)\n> >       trace_monitor_qmp_respond(mon, json->str);\n> >       g_string_append_c(json, '\\n');\n> > -    monitor_puts(&mon->common, json->str);\n> > +    monitor_puts(&mon->parent, json->str);\n> >       g_string_free(json, true);\n> >   }\n> > @@ -166,7 +166,7 @@ static void monitor_qmp_dispatch(MonitorQMP *mon, QObject *req)\n> >       QDict *error;\n> >       rsp = qmp_dispatch(mon->commands, req, qmp_oob_enabled(mon),\n> > -                       &mon->common);\n> > +                       &mon->parent);\n> >       if (mon->commands == &qmp_cap_negotiation_commands) {\n> >           error = qdict_get_qdict(rsp, \"error\");\n> > @@ -207,7 +207,7 @@ static QMPRequest *monitor_qmp_requests_pop_any_with_lock(void)\n> >               continue;\n> >           }\n> > -        qmp_mon = container_of(mon, MonitorQMP, common);\n> > +        qmp_mon = container_of(mon, MonitorQMP, parent);\n> >           qemu_mutex_lock(&qmp_mon->qmp_queue_lock);\n> >           req_obj = g_queue_pop_head(qmp_mon->qmp_requests);\n> >           if (req_obj) {\n> > @@ -302,7 +302,7 @@ void coroutine_fn monitor_qmp_dispatcher_co(void *data)\n> >           oob_enabled = qmp_oob_enabled(mon);\n> >           if (oob_enabled\n> >               && mon->qmp_requests->length == QMP_REQ_QUEUE_LEN_MAX - 1) {\n> > -            monitor_resume(&mon->common);\n> > +            monitor_resume(&mon->parent);\n> >           }\n> >           /*\n> > @@ -343,7 +343,7 @@ void coroutine_fn monitor_qmp_dispatcher_co(void *data)\n> >           }\n> >           if (!oob_enabled) {\n> > -            monitor_resume(&mon->common);\n> > +            monitor_resume(&mon->parent);\n> >           }\n> >           qmp_request_free(req_obj);\n> > @@ -408,7 +408,7 @@ static void handle_qmp_command(void *opaque, QObject *req, Error *err)\n> >            */\n> >           if (!qmp_oob_enabled(mon) ||\n> >               mon->qmp_requests->length == QMP_REQ_QUEUE_LEN_MAX - 1) {\n> > -            monitor_suspend(&mon->common);\n> > +            monitor_suspend(&mon->parent);\n> >           }\n> >           /*\n> > @@ -462,7 +462,7 @@ static void monitor_qmp_event(void *opaque, QEMUChrEvent event)\n> >       switch (event) {\n> >       case CHR_EVENT_OPENED:\n> > -        WITH_QEMU_LOCK_GUARD(&mon->common.mon_lock) {\n> > +        WITH_QEMU_LOCK_GUARD(&mon->parent.mon_lock) {\n> >               mon->commands = &qmp_cap_negotiation_commands;\n> >               monitor_qmp_caps_reset(mon);\n> >           }\n> > @@ -504,27 +504,27 @@ static void monitor_qmp_setup_handlers_bh(void *opaque)\n> >       MonitorQMP *mon = opaque;\n> >       GMainContext *context;\n> > -    assert(mon->common.use_io_thread);\n> > +    assert(mon->parent.use_io_thread);\n> >       context = iothread_get_g_main_context(mon_iothread);\n> >       assert(context);\n> > -    qemu_chr_fe_set_handlers(&mon->common.chr, monitor_can_read,\n> > +    qemu_chr_fe_set_handlers(&mon->parent.chr, monitor_can_read,\n> >                                monitor_qmp_read, monitor_qmp_event,\n> > -                             NULL, &mon->common, context, true);\n> > -    monitor_list_append(&mon->common);\n> > +                             NULL, &mon->parent, context, true);\n> > +    monitor_list_append(&mon->parent);\n> >   }\n> >   void monitor_init_qmp(Chardev *chr, bool pretty, Error **errp)\n> >   {\n> >       MonitorQMP *mon = g_new0(MonitorQMP, 1);\n> > -    if (!qemu_chr_fe_init(&mon->common.chr, chr, errp)) {\n> > +    if (!qemu_chr_fe_init(&mon->parent.chr, chr, errp)) {\n> >           g_free(mon);\n> >           return;\n> >       }\n> > -    qemu_chr_fe_set_echo(&mon->common.chr, true);\n> > +    qemu_chr_fe_set_echo(&mon->parent.chr, true);\n> >       /* Note: we run QMP monitor in I/O thread when @chr supports that */\n> > -    monitor_data_init(&mon->common, true, false,\n> > +    monitor_data_init(&mon->parent, true, false,\n> >                         qemu_chr_has_feature(chr, QEMU_CHAR_FEATURE_GCONTEXT));\n> >       mon->pretty = pretty;\n> > @@ -533,7 +533,7 @@ void monitor_init_qmp(Chardev *chr, bool pretty, Error **errp)\n> >       mon->qmp_requests = g_queue_new();\n> >       json_message_parser_init(&mon->parser, handle_qmp_command, mon, NULL);\n> > -    if (mon->common.use_io_thread) {\n> > +    if (mon->parent.use_io_thread) {\n> >           /*\n> >            * Make sure the old iowatch is gone.  It's possible when\n> >            * e.g. the chardev is in client mode, with wait=on.\n> > @@ -553,9 +553,9 @@ void monitor_init_qmp(Chardev *chr, bool pretty, Error **errp)\n> >                                   monitor_qmp_setup_handlers_bh, mon);\n> >           /* The bottom half will add @mon to @mon_list */\n> >       } else {\n> > -        qemu_chr_fe_set_handlers(&mon->common.chr, monitor_can_read,\n> > +        qemu_chr_fe_set_handlers(&mon->parent.chr, monitor_can_read,\n> >                                    monitor_qmp_read, monitor_qmp_event,\n> > -                                 NULL, &mon->common, NULL, true);\n> > -        monitor_list_append(&mon->common);\n> > +                                 NULL, &mon->parent, NULL, true);\n> > +        monitor_list_append(&mon->parent);\n> >       }\n> >   }\n> \n> \n> ATB,\n> \n> Mark.\n> \n\nWith regards,\nDaniel","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 (1024-bit key;\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=Kho8oFq5;\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=lists1p.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)"],"Received":["from lists1p.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 4fw7RF0qpZz1xtJ\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 15 Apr 2026 01:26:33 +1000 (AEST)","from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists1p.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1wCfeN-0006CQ-92; Tue, 14 Apr 2026 11:26:03 -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 <berrange@redhat.com>)\n id 1wCfeH-0006C0-LQ\n for qemu-devel@nongnu.org; Tue, 14 Apr 2026 11:25:58 -0400","from us-smtp-delivery-124.mimecast.com ([170.10.133.124])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <berrange@redhat.com>)\n id 1wCfeE-00081F-TI\n for qemu-devel@nongnu.org; Tue, 14 Apr 2026 11:25:57 -0400","from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com\n (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by\n relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,\n cipher=TLS_AES_256_GCM_SHA384) id us-mta-668-z2F2MSV9O2OnLzHKK3DKLw-1; Tue,\n 14 Apr 2026 11:25:47 -0400","from mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com\n (mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.93])\n (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest\n SHA256)\n (No client certificate requested)\n by mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS\n id 8787519560BA; Tue, 14 Apr 2026 15:25:45 +0000 (UTC)","from redhat.com (headnet01.pony-001.prod.iad2.dc.redhat.com\n [10.2.32.101])\n by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with\n ESMTPS\n id 8558E1800451; Tue, 14 Apr 2026 15:25:41 +0000 (UTC)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n s=mimecast20190719; t=1776180353;\n h=from:from:reply-to:reply-to:subject:subject:date:date:\n message-id:message-id:to:to:cc:cc:mime-version:mime-version:\n content-type:content-type:\n content-transfer-encoding:content-transfer-encoding:\n in-reply-to:in-reply-to:references:references;\n bh=rel6SgX8xCHrFBvPzRq4sS4l9bDBYQUrauTdttVj9Jo=;\n b=Kho8oFq5NEInlPTgT5c5p9ZZp3dusBjYwcLiXQGK1lI1BUsmBUj/faGFkG72ttx7N8AXDn\n R0MaGsnpA51pTczSFAFHW99CB7GvHSc6TdSKxTFiwzjUm4SYIIRYjZ5bHcRcrjZTiC/rnH\n aw0IdoK+zQP8WDX8JSx5fXQaYa7LIA4=","X-MC-Unique":"z2F2MSV9O2OnLzHKK3DKLw-1","X-Mimecast-MFC-AGG-ID":"z2F2MSV9O2OnLzHKK3DKLw_1776180346","Date":"Tue, 14 Apr 2026 16:25:38 +0100","From":"Daniel =?utf-8?b?UC4gQmVycmFuZ8Op?= <berrange@redhat.com>","To":"Mark Cave-Ayland <mark.caveayland@nutanix.com>","Cc":"qemu-devel@nongnu.org, Paolo Bonzini <pbonzini@redhat.com>,\n Markus Armbruster <armbru@redhat.com>,\n Christian Brauner <brauner@kernel.org>,\n Alex =?utf-8?q?Benn=C3=A9e?= <alex.bennee@linaro.org>, Philippe =?utf-8?q?M?=\n\t=?utf-8?q?athieu-Daud=C3=A9?= <philmd@linaro.org>,\n Fabiano Rosas <farosas@suse.de>,\n =?utf-8?q?Marc-Andr=C3=A9?= Lureau <marcandre.lureau@redhat.com>,\n Peter Xu <peterx@redhat.com>, Kevin Wolf <kwolf@redhat.com>,\n qemu-block@nongnu.org, \"Dr. David Alan Gilbert\" <dave@treblig.org>,\n Eric Blake <eblake@redhat.com>","Subject":"Re: [PATCH 02/17] monitor: replace 'common' with 'parent' in\n MonitorQMP","Message-ID":"<ad5ccvLw2XpdEn7-@redhat.com>","References":"<20260410160458.3778874-1-berrange@redhat.com>\n <20260410160458.3778874-3-berrange@redhat.com>\n <db93e5db-92f7-445d-b1a7-b2be39a9a059@nutanix.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","Content-Transfer-Encoding":"8bit","In-Reply-To":"<db93e5db-92f7-445d-b1a7-b2be39a9a059@nutanix.com>","User-Agent":"Mutt/2.2.14 (2025-02-20)","X-Scanned-By":"MIMEDefang 3.4.1 on 10.30.177.93","Received-SPF":"pass client-ip=170.10.133.124;\n envelope-from=berrange@redhat.com;\n helo=us-smtp-delivery-124.mimecast.com","X-Spam_score_int":"7","X-Spam_score":"0.7","X-Spam_bar":"/","X-Spam_report":"(0.7 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.54,\n DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1,\n RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_SBL_CSS=3.335,\n RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001,\n SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no 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>","Reply-To":"Daniel =?utf-8?b?UC4gQmVycmFuZ8Op?= <berrange@redhat.com>","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org"}},{"id":3677342,"web_url":"http://patchwork.ozlabs.org/comment/3677342/","msgid":"<ad5_T21lwOD8Lf9m@gallifrey>","list_archive_url":null,"date":"2026-04-14T17:54:23","subject":"Re: [PATCH 02/17] monitor: replace 'common' with 'parent' in\n MonitorQMP","submitter":{"id":86099,"url":"http://patchwork.ozlabs.org/api/people/86099/","name":"Dr. David Alan Gilbert","email":"dave@treblig.org"},"content":"* Daniel P. Berrangé (berrange@redhat.com) wrote:\n> On Tue, Apr 14, 2026 at 04:15:42PM +0100, Mark Cave-Ayland wrote:\n> > On 10/04/2026 17:04, Daniel P. Berrangé wrote:\n> > \n> > > The field name 'parent' is standard practice for QOM structs\n> > > so align the QMP monitor.\n> > \n> > This is not correct: the first field of a QOM object struct should be called\n> > parent_obj, followed by an empty line as per our style guidelines at https://qemu.readthedocs.io/en/master/devel/style.html#qemu-object-model-declarations.\n> \n> Sigh, of course we're massively inconsistent in this :-(\n\nBecause it's all manual!\nIt needs macro'ing, and linting.\n\nDave\n\n> I initially just checked 1st level objects, which favours 'parent'\n> \n>   $ git grep 'Object parent;' | wc -l\n>   34\n>   $ git grep 'Object parent_obj;' | wc -l\n>   18\n> \n> but I should have checked more deeply\n> \n>  $ git grep -E '(\\w+) parent_obj;'  | wc -l\n>  859\n>  $ git grep -E '(\\w+) parent;'  | wc -l\n>  269\n> \n> I'll switch to 'parent_obj' here.\n> \n> > \n> > > Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>\n> > > ---\n> > >   monitor/monitor-internal.h |  2 +-\n> > >   monitor/monitor.c          |  4 ++--\n> > >   monitor/qmp-cmds-control.c |  4 ++--\n> > >   monitor/qmp.c              | 40 +++++++++++++++++++-------------------\n> > >   4 files changed, 25 insertions(+), 25 deletions(-)\n> > > \n> > > diff --git a/monitor/monitor-internal.h b/monitor/monitor-internal.h\n> > > index ae0cf8c1da..0922588ad9 100644\n> > > --- a/monitor/monitor-internal.h\n> > > +++ b/monitor/monitor-internal.h\n> > > @@ -132,7 +132,7 @@ struct MonitorHMP {\n> > >   };\n> > >   typedef struct {\n> > > -    Monitor common;\n> > > +    Monitor parent;\n> > >       JSONMessageParser parser;\n> > >       bool pretty;\n> > >       /*\n> > > diff --git a/monitor/monitor.c b/monitor/monitor.c\n> > > index 6532796edb..6b183edcf5 100644\n> > > --- a/monitor/monitor.c\n> > > +++ b/monitor/monitor.c\n> > > @@ -308,7 +308,7 @@ static void monitor_qapi_event_emit(QAPIEvent event, QDict *qdict)\n> > >               continue;\n> > >           }\n> > > -        qmp_mon = container_of(mon, MonitorQMP, common);\n> > > +        qmp_mon = container_of(mon, MonitorQMP, parent);\n> > >           {\n> > >               QEMU_LOCK_GUARD(&mon->mon_lock);\n> > >               if (qmp_mon->commands == &qmp_cap_negotiation_commands) {\n> > > @@ -625,7 +625,7 @@ void monitor_data_destroy(Monitor *mon)\n> > >       g_free(mon->mon_cpu_path);\n> > >       qemu_chr_fe_deinit(&mon->chr, false);\n> > >       if (monitor_is_qmp(mon)) {\n> > > -        monitor_data_destroy_qmp(container_of(mon, MonitorQMP, common));\n> > > +        monitor_data_destroy_qmp(container_of(mon, MonitorQMP, parent));\n> > >       } else {\n> > >           readline_free(container_of(mon, MonitorHMP, parent)->rs);\n> > >       }\n> > > diff --git a/monitor/qmp-cmds-control.c b/monitor/qmp-cmds-control.c\n> > > index 150ca9f5cb..ca471bc1c7 100644\n> > > --- a/monitor/qmp-cmds-control.c\n> > > +++ b/monitor/qmp-cmds-control.c\n> > > @@ -76,7 +76,7 @@ void qmp_qmp_capabilities(bool has_enable, QMPCapabilityList *enable,\n> > >       MonitorQMP *mon;\n> > >       assert(monitor_is_qmp(cur_mon));\n> > > -    mon = container_of(cur_mon, MonitorQMP, common);\n> > > +    mon = container_of(cur_mon, MonitorQMP, parent);\n> > >       if (mon->commands == &qmp_commands) {\n> > >           error_set(errp, ERROR_CLASS_COMMAND_NOT_FOUND,\n> > > @@ -126,7 +126,7 @@ CommandInfoList *qmp_query_commands(Error **errp)\n> > >       MonitorQMP *mon;\n> > >       assert(monitor_is_qmp(cur_mon));\n> > > -    mon = container_of(cur_mon, MonitorQMP, common);\n> > > +    mon = container_of(cur_mon, MonitorQMP, parent);\n> > >       qmp_for_each_command(mon->commands, query_commands_cb, &list);\n> > > diff --git a/monitor/qmp.c b/monitor/qmp.c\n> > > index 687019811f..69d9e40e32 100644\n> > > --- a/monitor/qmp.c\n> > > +++ b/monitor/qmp.c\n> > > @@ -80,7 +80,7 @@ static void monitor_qmp_caps_reset(MonitorQMP *mon)\n> > >   {\n> > >       memset(mon->capab_offered, 0, sizeof(mon->capab_offered));\n> > >       memset(mon->capab, 0, sizeof(mon->capab));\n> > > -    mon->capab_offered[QMP_CAPABILITY_OOB] = mon->common.use_io_thread;\n> > > +    mon->capab_offered[QMP_CAPABILITY_OOB] = mon->parent.use_io_thread;\n> > >   }\n> > >   static void qmp_request_free(QMPRequest *req)\n> > > @@ -124,7 +124,7 @@ static void monitor_qmp_cleanup_queue_and_resume(MonitorQMP *mon)\n> > >            * when we get here while the monitor is suspended.  An\n> > >            * unfortunately timed CHR_EVENT_CLOSED can do the trick.\n> > >            */\n> > > -        monitor_resume(&mon->common);\n> > > +        monitor_resume(&mon->parent);\n> > >       }\n> > >   }\n> > > @@ -139,7 +139,7 @@ void qmp_send_response(MonitorQMP *mon, const QDict *rsp)\n> > >       trace_monitor_qmp_respond(mon, json->str);\n> > >       g_string_append_c(json, '\\n');\n> > > -    monitor_puts(&mon->common, json->str);\n> > > +    monitor_puts(&mon->parent, json->str);\n> > >       g_string_free(json, true);\n> > >   }\n> > > @@ -166,7 +166,7 @@ static void monitor_qmp_dispatch(MonitorQMP *mon, QObject *req)\n> > >       QDict *error;\n> > >       rsp = qmp_dispatch(mon->commands, req, qmp_oob_enabled(mon),\n> > > -                       &mon->common);\n> > > +                       &mon->parent);\n> > >       if (mon->commands == &qmp_cap_negotiation_commands) {\n> > >           error = qdict_get_qdict(rsp, \"error\");\n> > > @@ -207,7 +207,7 @@ static QMPRequest *monitor_qmp_requests_pop_any_with_lock(void)\n> > >               continue;\n> > >           }\n> > > -        qmp_mon = container_of(mon, MonitorQMP, common);\n> > > +        qmp_mon = container_of(mon, MonitorQMP, parent);\n> > >           qemu_mutex_lock(&qmp_mon->qmp_queue_lock);\n> > >           req_obj = g_queue_pop_head(qmp_mon->qmp_requests);\n> > >           if (req_obj) {\n> > > @@ -302,7 +302,7 @@ void coroutine_fn monitor_qmp_dispatcher_co(void *data)\n> > >           oob_enabled = qmp_oob_enabled(mon);\n> > >           if (oob_enabled\n> > >               && mon->qmp_requests->length == QMP_REQ_QUEUE_LEN_MAX - 1) {\n> > > -            monitor_resume(&mon->common);\n> > > +            monitor_resume(&mon->parent);\n> > >           }\n> > >           /*\n> > > @@ -343,7 +343,7 @@ void coroutine_fn monitor_qmp_dispatcher_co(void *data)\n> > >           }\n> > >           if (!oob_enabled) {\n> > > -            monitor_resume(&mon->common);\n> > > +            monitor_resume(&mon->parent);\n> > >           }\n> > >           qmp_request_free(req_obj);\n> > > @@ -408,7 +408,7 @@ static void handle_qmp_command(void *opaque, QObject *req, Error *err)\n> > >            */\n> > >           if (!qmp_oob_enabled(mon) ||\n> > >               mon->qmp_requests->length == QMP_REQ_QUEUE_LEN_MAX - 1) {\n> > > -            monitor_suspend(&mon->common);\n> > > +            monitor_suspend(&mon->parent);\n> > >           }\n> > >           /*\n> > > @@ -462,7 +462,7 @@ static void monitor_qmp_event(void *opaque, QEMUChrEvent event)\n> > >       switch (event) {\n> > >       case CHR_EVENT_OPENED:\n> > > -        WITH_QEMU_LOCK_GUARD(&mon->common.mon_lock) {\n> > > +        WITH_QEMU_LOCK_GUARD(&mon->parent.mon_lock) {\n> > >               mon->commands = &qmp_cap_negotiation_commands;\n> > >               monitor_qmp_caps_reset(mon);\n> > >           }\n> > > @@ -504,27 +504,27 @@ static void monitor_qmp_setup_handlers_bh(void *opaque)\n> > >       MonitorQMP *mon = opaque;\n> > >       GMainContext *context;\n> > > -    assert(mon->common.use_io_thread);\n> > > +    assert(mon->parent.use_io_thread);\n> > >       context = iothread_get_g_main_context(mon_iothread);\n> > >       assert(context);\n> > > -    qemu_chr_fe_set_handlers(&mon->common.chr, monitor_can_read,\n> > > +    qemu_chr_fe_set_handlers(&mon->parent.chr, monitor_can_read,\n> > >                                monitor_qmp_read, monitor_qmp_event,\n> > > -                             NULL, &mon->common, context, true);\n> > > -    monitor_list_append(&mon->common);\n> > > +                             NULL, &mon->parent, context, true);\n> > > +    monitor_list_append(&mon->parent);\n> > >   }\n> > >   void monitor_init_qmp(Chardev *chr, bool pretty, Error **errp)\n> > >   {\n> > >       MonitorQMP *mon = g_new0(MonitorQMP, 1);\n> > > -    if (!qemu_chr_fe_init(&mon->common.chr, chr, errp)) {\n> > > +    if (!qemu_chr_fe_init(&mon->parent.chr, chr, errp)) {\n> > >           g_free(mon);\n> > >           return;\n> > >       }\n> > > -    qemu_chr_fe_set_echo(&mon->common.chr, true);\n> > > +    qemu_chr_fe_set_echo(&mon->parent.chr, true);\n> > >       /* Note: we run QMP monitor in I/O thread when @chr supports that */\n> > > -    monitor_data_init(&mon->common, true, false,\n> > > +    monitor_data_init(&mon->parent, true, false,\n> > >                         qemu_chr_has_feature(chr, QEMU_CHAR_FEATURE_GCONTEXT));\n> > >       mon->pretty = pretty;\n> > > @@ -533,7 +533,7 @@ void monitor_init_qmp(Chardev *chr, bool pretty, Error **errp)\n> > >       mon->qmp_requests = g_queue_new();\n> > >       json_message_parser_init(&mon->parser, handle_qmp_command, mon, NULL);\n> > > -    if (mon->common.use_io_thread) {\n> > > +    if (mon->parent.use_io_thread) {\n> > >           /*\n> > >            * Make sure the old iowatch is gone.  It's possible when\n> > >            * e.g. the chardev is in client mode, with wait=on.\n> > > @@ -553,9 +553,9 @@ void monitor_init_qmp(Chardev *chr, bool pretty, Error **errp)\n> > >                                   monitor_qmp_setup_handlers_bh, mon);\n> > >           /* The bottom half will add @mon to @mon_list */\n> > >       } else {\n> > > -        qemu_chr_fe_set_handlers(&mon->common.chr, monitor_can_read,\n> > > +        qemu_chr_fe_set_handlers(&mon->parent.chr, monitor_can_read,\n> > >                                    monitor_qmp_read, monitor_qmp_event,\n> > > -                                 NULL, &mon->common, NULL, true);\n> > > -        monitor_list_append(&mon->common);\n> > > +                                 NULL, &mon->parent, NULL, true);\n> > > +        monitor_list_append(&mon->parent);\n> > >       }\n> > >   }\n> > \n> > \n> > ATB,\n> > \n> > Mark.\n> > \n> \n> With regards,\n> Daniel\n> -- \n> |: https://berrange.com       ~~        https://hachyderm.io/@berrange :|\n> |: https://libvirt.org          ~~          https://entangle-photo.org :|\n> |: https://pixelfed.art/berrange   ~~    https://fstop138.berrange.com :|\n>","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=treblig.org header.i=@treblig.org header.a=rsa-sha256\n header.s=bytemarkmx header.b=fxmm0RzQ;\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=lists1p.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)"],"Received":["from lists1p.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 4fwBl62Ypqz1xtJ\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 15 Apr 2026 03:55:28 +1000 (AEST)","from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists1p.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1wChy6-00084t-7s; Tue, 14 Apr 2026 13:54:34 -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 <dg@treblig.org>)\n id 1wChy4-00084c-S0; Tue, 14 Apr 2026 13:54:32 -0400","from mx.treblig.org ([2a00:1098:5b::1])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <dg@treblig.org>)\n id 1wChy2-0007L8-9C; Tue, 14 Apr 2026 13:54:32 -0400","from dg by mx.treblig.org with local (Exim 4.98.2)\n (envelope-from <dg@treblig.org>) id 1wChxw-00000008KNM-07cc;\n Tue, 14 Apr 2026 17:54:24 +0000"],"DKIM-Signature":"v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=treblig.org\n ; s=bytemarkmx;\n h=Content-Type:MIME-Version:Message-ID:Subject:From:Date:From\n :Subject; bh=PxUhdip49swQqkNn6XuQCXGuW4+JpuohqrVIazY77Ew=; b=fxmm0RzQWgJt3tI6\n 8P0SLy+MZzpXRDdzVNox/OtjTsIxLajLSc5jO6MFeweWjfJqViEZ8I2/DKzEJqREFtETh521fMoOj\n XTNRy6526pXAtDZxy7ODamZLPL1meQE9GFNcNIBZyIfQSx0CWdLnOMvQ452aZ32jkRJDhgtirR8i8\n icEpUH/Msw6NKTZqwo7fzhnJx+mn2A6tmM8x7w8WHzymSmBjEhfrP9SkGyatbMVVKNaL1ssrdDoJj\n 0C40NBGIOvUTto0BXKthsV/iR0fOinoTuDoG0vsZwkqy0KA5SJN8m4Rl1eRtVY9BTxvbaqh6nH0j6\n obMcWXAWc9mHRKRW+A==;","Date":"Tue, 14 Apr 2026 17:54:23 +0000","From":"\"Dr. David Alan Gilbert\" <dave@treblig.org>","To":"Daniel =?iso-8859-1?q?P=2E_Berrang=E9?= <berrange@redhat.com>","Cc":"Mark Cave-Ayland <mark.caveayland@nutanix.com>, qemu-devel@nongnu.org,\n Paolo Bonzini <pbonzini@redhat.com>, Markus Armbruster <armbru@redhat.com>,\n Christian Brauner <brauner@kernel.org>,\n Alex =?iso-8859-1?q?Benn=E9e?= <alex.bennee@linaro.org>, Philippe\n\t=?iso-8859-1?q?Mathieu-Daud=E9?= <philmd@linaro.org>,\n Fabiano Rosas <farosas@suse.de>,\n =?iso-8859-1?q?Marc-Andr=E9?= Lureau <marcandre.lureau@redhat.com>,\n Peter Xu <peterx@redhat.com>, Kevin Wolf <kwolf@redhat.com>,\n qemu-block@nongnu.org, Eric Blake <eblake@redhat.com>","Subject":"Re: [PATCH 02/17] monitor: replace 'common' with 'parent' in\n MonitorQMP","Message-ID":"<ad5_T21lwOD8Lf9m@gallifrey>","References":"<20260410160458.3778874-1-berrange@redhat.com>\n <20260410160458.3778874-3-berrange@redhat.com>\n <db93e5db-92f7-445d-b1a7-b2be39a9a059@nutanix.com>\n <ad5ccvLw2XpdEn7-@redhat.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=iso-8859-1","Content-Disposition":"inline","Content-Transfer-Encoding":"8bit","In-Reply-To":"<ad5ccvLw2XpdEn7-@redhat.com>","X-Chocolate":"70 percent or better cocoa solids preferably","X-Operating-System":"Linux/6.12.74+deb13+1-amd64 (x86_64)","X-Uptime":"17:53:17 up 32 days, 19:06,  2 users,  load average: 0.00, 0.00,\n 0.00","User-Agent":"Mutt/2.2.13 (2024-03-09)","Received-SPF":"pass client-ip=2a00:1098:5b::1; envelope-from=dg@treblig.org;\n helo=mx.treblig.org","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, 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"}}]