From nobody Mon Feb 9 14:16:49 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) client-ip=170.10.133.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.zohomail.com with SMTPS id 1644971370316196.24146937535; Tue, 15 Feb 2022 16:29:30 -0800 (PST) Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-642-urY9g8-0MOybVFvE517wsA-1; Tue, 15 Feb 2022 19:29:27 -0500 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id B77A21091DA4; Wed, 16 Feb 2022 00:29:21 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 80A8D5C2F3; Wed, 16 Feb 2022 00:29:21 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 7E64F1809C88; Wed, 16 Feb 2022 00:29:20 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.rdu2.redhat.com [10.11.54.2]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 21G0TItH024615 for ; Tue, 15 Feb 2022 19:29:18 -0500 Received: by smtp.corp.redhat.com (Postfix) id 9363840885A3; Wed, 16 Feb 2022 00:29:18 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast05.extmail.prod.ext.rdu2.redhat.com [10.11.55.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 8EF0640885A0 for ; Wed, 16 Feb 2022 00:29:18 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [205.139.110.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 7704F8032EB for ; Wed, 16 Feb 2022 00:29:18 +0000 (UTC) Received: from chinatelecom.cn (prt-mail.chinatelecom.cn [42.123.76.227]) by relay.mimecast.com with ESMTP id us-mta-594-tzZEBDrPPTe9BRoAT-Qeiw-1; Tue, 15 Feb 2022 19:29:16 -0500 Received: from clientip-171.223.98.212 (unknown [172.18.0.188]) by chinatelecom.cn (HERMES) with SMTP id 89E5B28008B; Wed, 16 Feb 2022 08:29:12 +0800 (CST) Received: from ([172.18.0.188]) by app0023 with ESMTP id e477bec82d0c4cde83b64209259fdc5b for libvir-list@redhat.com; Wed, 16 Feb 2022 08:29:13 CST X-MC-Unique: urY9g8-0MOybVFvE517wsA-1 X-MC-Unique: tzZEBDrPPTe9BRoAT-Qeiw-1 HMM_SOURCE_IP: 172.18.0.188:46950.167132848 HMM_ATTACHE_NUM: 0000 HMM_SOURCE_TYPE: SMTP X-189-SAVE-TO-SEND: +huangy81@chinatelecom.cn X-Transaction-ID: e477bec82d0c4cde83b64209259fdc5b X-Real-From: huangy81@chinatelecom.cn X-Receive-IP: 172.18.0.188 X-MEDUSA-Status: 0 From: huangy81@chinatelecom.cn To: libvir-list@redhat.com Subject: [PATCH v5 1/9] qemu: Refactor dirty page rate calculation status implementation Date: Wed, 16 Feb 2022 08:28:57 +0800 Message-Id: In-Reply-To: References: In-Reply-To: References: MIME-Version: 1.0 X-Mimecast-Impersonation-Protect: Policy=CLT - Impersonation Protection Definition; Similar Internal Domain=false; Similar Monitored External Domain=false; Custom External Domain=false; Mimecast External Domain=false; Newly Observed Domain=false; Internal User Name=false; Custom Display Name List=false; Reply-to Address Mismatch=false; Targeted Threat Dictionary=false; Mimecast Threat Dictionary=false; Custom Threat Dictionary=false X-Mimecast-Spam-Signature: yes X-Scanned-By: MIMEDefang 2.84 on 10.11.54.2 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 21G0TItH024615 X-loop: libvir-list@redhat.com Cc: huangy81@chinatelecom.cn X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZM-MESSAGEID: 1644971371847100001 From: Hyman Huang(=E9=BB=84=E5=8B=87) For any virTypedParameter API normal practice is to use a string to expose the data, not the rather enum integer value. So let's drop the virDomainDirtyRateStatus in public header file and introduce internal enum def qemuMonitorDirtyRateStatus to describe the dirty page rate calculation status. Signed-off-by: Hyman Huang(=E9=BB=84=E5=8B=87) --- include/libvirt/libvirt-domain.h | 18 ------------------ src/libvirt-domain.c | 4 ++-- src/qemu/qemu_driver.c | 9 ++++++--- src/qemu/qemu_monitor.h | 18 ++++++++++++++++-- src/qemu/qemu_monitor_json.c | 4 ++-- 5 files changed, 26 insertions(+), 27 deletions(-) diff --git a/include/libvirt/libvirt-domain.h b/include/libvirt/libvirt-dom= ain.h index 8c16598..bf4746a 100644 --- a/include/libvirt/libvirt-domain.h +++ b/include/libvirt/libvirt-domain.h @@ -5241,24 +5241,6 @@ int virDomainGetMessages(virDomainPtr domain, char ***msgs, unsigned int flags); =20 -/** - * virDomainDirtyRateStatus: - * - * Details on the cause of a dirty rate calculation status. - */ -typedef enum { - VIR_DOMAIN_DIRTYRATE_UNSTARTED =3D 0, /* the dirtyrate calculation has - not been started */ - VIR_DOMAIN_DIRTYRATE_MEASURING =3D 1, /* the dirtyrate calculation is - measuring */ - VIR_DOMAIN_DIRTYRATE_MEASURED =3D 2, /* the dirtyrate calculation is - completed */ - -# ifdef VIR_ENUM_SENTINELS - VIR_DOMAIN_DIRTYRATE_LAST -# endif -} virDomainDirtyRateStatus; - int virDomainStartDirtyRateCalc(virDomainPtr domain, int seconds, unsigned int flags); diff --git a/src/libvirt-domain.c b/src/libvirt-domain.c index b8a6f10..f24d072 100644 --- a/src/libvirt-domain.c +++ b/src/libvirt-domain.c @@ -11947,8 +11947,8 @@ virConnectGetDomainCapabilities(virConnectPtr conn, * this format: * * "dirtyrate.calc_status" - the status of last memory dirty rate calc= ulation, - * returned as int from virDomainDirtyRateSt= atus - * enum. + * either of these 3 'unstarted,measuring,me= asured' + * values returned. * "dirtyrate.calc_start_time" - the start time of last memory dirty r= ate * calculation as long long. * "dirtyrate.calc_period" - the period of last memory dirty rate calc= ulation diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index f262020..a22646c 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -18525,6 +18525,8 @@ qemuDomainGetStatsDirtyRateMon(virQEMUDriver *drive= r, return ret; } =20 +VIR_ENUM_DECL(qemuMonitorDirtyRateStatus); + static int qemuDomainGetStatsDirtyRate(virQEMUDriver *driver, virDomainObj *dom, @@ -18539,8 +18541,9 @@ qemuDomainGetStatsDirtyRate(virQEMUDriver *driver, if (qemuDomainGetStatsDirtyRateMon(driver, dom, &info) < 0) return -1; =20 - if (virTypedParamListAddInt(params, info.status, - "dirtyrate.calc_status") < 0) + if (virTypedParamListAddString(params, + qemuMonitorDirtyRateStatusTypeToString(= info.status), + "dirtyrate.calc_status") < 0) return -1; =20 if (virTypedParamListAddLLong(params, info.startTime, @@ -18551,7 +18554,7 @@ qemuDomainGetStatsDirtyRate(virQEMUDriver *driver, "dirtyrate.calc_period") < 0) return -1; =20 - if ((info.status =3D=3D VIR_DOMAIN_DIRTYRATE_MEASURED) && + if ((info.status =3D=3D QEMU_MONITOR_DIRTYRATE_STATUS_MEASURED) && virTypedParamListAddLLong(params, info.dirtyRate, "dirtyrate.megabytes_per_second") < 0) return -1; diff --git a/src/qemu/qemu_monitor.h b/src/qemu/qemu_monitor.h index 1d21183..817391c 100644 --- a/src/qemu/qemu_monitor.h +++ b/src/qemu/qemu_monitor.h @@ -1538,10 +1538,24 @@ int qemuMonitorStartDirtyRateCalc(qemuMonitor *mon, int seconds); =20 +/** + * qemuMonitorDirtyRateStatus: + * + * Details on the cause of a dirty page rate calculation status. + */ +typedef enum { + QEMU_MONITOR_DIRTYRATE_STATUS_UNSTARTED =3D 0, /* the dirtyrate calcul= ation has + not been started */ + QEMU_MONITOR_DIRTYRATE_STATUS_MEASURING, /* the dirtyrate calculati= on is + measuring */ + QEMU_MONITOR_DIRTYRATE_STATUS_MEASURED, /* the dirtyrate calculati= on is + completed */ + QEMU_MONITOR_DIRTYRATE_STATUS_LAST, +} qemuMonitorDirtyRateStatus; + typedef struct _qemuMonitorDirtyRateInfo qemuMonitorDirtyRateInfo; struct _qemuMonitorDirtyRateInfo { - int status; /* the status of last dirtyrate calculation, - one of virDomainDirtyRateStatus */ + qemuMonitorDirtyRateStatus status; /* the status of last dirtyrate ca= lculation */ int calcTime; /* the period of dirtyrate calculation */ long long startTime; /* the start time of dirtyrate calculation */ long long dirtyRate; /* the dirtyrate in MiB/s */ diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c index 1de932f..b09ef12 100644 --- a/src/qemu/qemu_monitor_json.c +++ b/src/qemu/qemu_monitor_json.c @@ -8764,7 +8764,7 @@ qemuMonitorJSONStartDirtyRateCalc(qemuMonitor *mon, =20 VIR_ENUM_DECL(qemuMonitorDirtyRateStatus); VIR_ENUM_IMPL(qemuMonitorDirtyRateStatus, - VIR_DOMAIN_DIRTYRATE_LAST, + QEMU_MONITOR_DIRTYRATE_STATUS_LAST, "unstarted", "measuring", "measured"); @@ -8792,7 +8792,7 @@ qemuMonitorJSONExtractDirtyRateInfo(virJSONValue *dat= a, /* `query-dirty-rate` replies `dirty-rate` data only if the status of = the latest * calculation is `measured`. */ - if ((info->status =3D=3D VIR_DOMAIN_DIRTYRATE_MEASURED) && + if ((info->status =3D=3D QEMU_MONITOR_DIRTYRATE_STATUS_MEASURED) && (virJSONValueObjectGetNumberLong(data, "dirty-rate", &info->dirtyR= ate) < 0)) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("query-dirty-rate reply was missing 'dirty-rate' = data")); --=20 1.8.3.1