From nobody Tue Oct 28 17:31:53 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1760363014; cv=none; d=zohomail.com; s=zohoarc; b=PKNkJUdbRp39bK6Pz9WBUqQWeviZu3o3zm5JB3mr+8SFwIbqPAlNYIUvLiLD7qoo9GDBh7Ko1IXMWDxZxQrD9r/ntbsnWQRFwRqK95WrPBe76xtBju1netPlmRgX5f+NyToUmS8dfW30wY8eHh112/LZbo5gx2p+QoPh+6LCKIA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760363014; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=1R1nV2Btv0sXlyeI5oNTBpB1pnv0nnE+9e53vF+TzW8=; b=HsVYSD0NFgxH3GttfTYq1hqDXlMldBHEa/CFJx6Lv8wk5eVIdiFam5APlQJzHSGwfOtb1diSZyBnpUKK97cbAPf1IhUdNaCCUw9m7twXKTa+YywBiYIORdPrNCFeK+JSik1z82LaeBzlDP1QFC0hxMQAR1MCB2fSV+vGUxp9+BM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1760363014115117.47084001013229; Mon, 13 Oct 2025 06:43:34 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 071303F293; Mon, 13 Oct 2025 09:43:32 -0400 (EDT) Received: from [172.19.199.20] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id 266A9443CD; Mon, 13 Oct 2025 09:41:27 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 23AA643FD5; Mon, 13 Oct 2025 09:41:08 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id A3CBF43FC1 for ; Mon, 13 Oct 2025 09:41:04 -0400 (EDT) Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-543-DQVVZCx9OaWxJaA03_1PQg-1; Mon, 13 Oct 2025 09:41:01 -0400 Received: from mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.111]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 36CF618002CE for ; Mon, 13 Oct 2025 13:41:00 +0000 (UTC) Received: from speedmetal.lan (unknown [10.45.242.15]) by mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 679FC18004D8 for ; Mon, 13 Oct 2025 13:40:59 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-3.1 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_PASS autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1760362863; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=1R1nV2Btv0sXlyeI5oNTBpB1pnv0nnE+9e53vF+TzW8=; b=WqlyHRnJ9qGZmSDJrZtB72KMkNiDTg7GP5tFvALtWDydFpYQjBgSef9EVG3PzKo8TzdV8R bHrtapK3WkwEphp+hZ9I7qnl3h+Et2gankZYGb+tQYXiydcyKKWfqnAdBJIh5GouGD1g9A avJOmVuGsQK8AvyQ7meYVNo+22oGzBw= X-MC-Unique: DQVVZCx9OaWxJaA03_1PQg-1 X-Mimecast-MFC-AGG-ID: DQVVZCx9OaWxJaA03_1PQg_1760362860 To: devel@lists.libvirt.org Subject: [PATCH 1/7] qemu: monitor: Track inactive state of block nodes in 'qemuBlockNamedNodeData' Date: Mon, 13 Oct 2025 15:40:50 +0200 Message-ID: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.111 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: QTN49EPVOPk0XpIz8P7_6mb6KSVgNaM1KMKY7oZwUQw_1760362860 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: AMXPYGMRQVQPDV4SO7LYLBEE5CU2T46Y X-Message-ID-Hash: AMXPYGMRQVQPDV4SO7LYLBEE5CU2T46Y X-MailFrom: pkrempa@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Peter Krempa via Devel Reply-To: Peter Krempa X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1760363016131154100 Content-Type: text/plain; charset="utf-8" From: Peter Krempa New qemus report if given block node is active. We'll be using this data to decide if we need to reactivate them prior to blockjobs. Extract the data as 'inactive' as it's simpler to track and we care only about inactive nodes. Signed-off-by: Peter Krempa --- src/qemu/qemu_monitor.h | 4 ++++ src/qemu/qemu_monitor_json.c | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/src/qemu/qemu_monitor.h b/src/qemu/qemu_monitor.h index 8ef85ceb0a..b257c19c89 100644 --- a/src/qemu/qemu_monitor.h +++ b/src/qemu/qemu_monitor.h @@ -751,6 +751,10 @@ struct _qemuBlockNamedNodeData { /* qcow2 data file 'raw' feature is enabled */ bool qcow2dataFileRaw; + + /* node is deactivated in qemu (reported as 'active' but may be missin= g, + * thus the flag is asserted only when we know it's inactive) */ + bool inactive; }; GHashTable * diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c index 9caade7bc9..d44f5d94ed 100644 --- a/src/qemu/qemu_monitor_json.c +++ b/src/qemu/qemu_monitor_json.c @@ -2714,6 +2714,7 @@ qemuMonitorJSONBlockGetNamedNodeDataWorker(size_t pos= G_GNUC_UNUSED, virJSONValue *bitmaps; virJSONValue *snapshots; virJSONValue *format_specific; + bool active; const char *nodename; g_autoptr(qemuBlockNamedNodeData) ent =3D NULL; @@ -2736,6 +2737,10 @@ qemuMonitorJSONBlockGetNamedNodeDataWorker(size_t po= s G_GNUC_UNUSED, if ((bitmaps =3D virJSONValueObjectGetArray(val, "dirty-bitmaps"))) qemuMonitorJSONBlockGetNamedNodeDataBitmaps(bitmaps, ent); + /* stored as negative as the value may be missing from some qemus */ + if (virJSONValueObjectGetBoolean(val, "active", &active) =3D=3D 0) + ent->inactive =3D !active; + if ((snapshots =3D virJSONValueObjectGetArray(img, "snapshots"))) { size_t nsnapshots =3D virJSONValueArraySize(snapshots); size_t i; --=20 2.51.0