From nobody Wed Jun 24 21:39:43 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) client-ip=38.145.34.151; 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 38.145.34.151 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=1781533649; cv=none; d=zohomail.com; s=zohoarc; b=HZ7Peh+pPefYCnG0kjcDOpYdFdmWHsINIqjoWp0/NH6gJrrIsGUW1dezjfx7WTiDDrB8XKTFihHPxs8+LBQFGFz7iI7pvL1xB44pnoOhbTjxbPJT8CrIFiSy4jdOYMnMcaNdL1Y6Wz9rG6SUJHlYjc6MACcgIWbkcCm6OzPVKlw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781533649; 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=FygKrBdRpCSTDxobgB7yWU5qe5PfE6tywKHz2NSa5xY=; b=OEyZll2AY5dmy2wl8Vua+bj0tPNXz7L4Io5rILf52ThVPdppHva5PO+IIOMrR7V7efA6kcUmh/C8YMRU/EfBPGtWtjWjt2hK4YjHI14Te8aufwV/JAYe7ATcmjp1AHXdc/xypZ6FNaUF5M08t6QScEbZYoo6wglj1CmySc0YGUA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 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 [38.145.34.151]) by mx.zohomail.com with SMTPS id 1781533649308838.2155232729226; Mon, 15 Jun 2026 07:27:29 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 0ECE441A90; Mon, 15 Jun 2026 10:27:28 -0400 (EDT) Received: from [172.19.199.4] (unknown [10.16.107.18]) by lists.libvirt.org (Postfix) with ESMTP id 9AD1C41BAD; Mon, 15 Jun 2026 10:24:40 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 1AABB3F935; Mon, 15 Jun 2026 10:24:17 -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 2CB8241A4F for ; Mon, 15 Jun 2026 10:24:16 -0400 (EDT) Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-673-e4VSuTjFOJuROsv2DGxfLQ-1; Mon, 15 Jun 2026 10:24:12 -0400 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (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-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 811BA1955E9A for ; Mon, 15 Jun 2026 14:24:11 +0000 (UTC) Received: from speedmetal.lan (unknown [10.44.22.21]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id B90771955BC1 for ; Mon, 15 Jun 2026 14:24:10 +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=0.6 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL,RCVD_IN_SBL_CSS,SPF_HELO_PASS autolearn=no autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781533455; 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=FygKrBdRpCSTDxobgB7yWU5qe5PfE6tywKHz2NSa5xY=; b=SuABwXRuWSYu60E783MpMGWI9BQvUlXGT8fKkxyVFQbBRYKONtI7llhGFlf76/M1HbRB6T rCou3GwRF+xp7PrkCSre9gnh8Ooe6QgPdDXu+YTSSobcc9yz81Rg8kquvw5rG/J3X2xBf9 pcj/fBjTqVgqUVGMZRRkn+kBoPAH4eg= X-MC-Unique: e4VSuTjFOJuROsv2DGxfLQ-1 X-Mimecast-MFC-AGG-ID: e4VSuTjFOJuROsv2DGxfLQ_1781533451 To: devel@lists.libvirt.org Subject: [PATCH 01/14] qemu: Ensure proper shutdown ordering of virtlockd/virtlogd daemons Date: Mon, 15 Jun 2026 16:23:55 +0200 Message-ID: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: 5VJ9J82OczDEgdgriV5x1H3oX4psD-OsFr6I5o5WjL4_1781533451 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: 55YYXNDVARVT3A23TQUH73GWLDTKAQ3B X-Message-ID-Hash: 55YYXNDVARVT3A23TQUH73GWLDTKAQ3B 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: 1781533651437158500 Content-Type: text/plain; charset="utf-8" From: Peter Krempa For socket activation to work our systemd unit files use the following pattern: [virtlogd.socket] <----(After)--- [virtlogd.service] [virtqemud.socket] <----(After)--- [virtqemud.service] Now the qemu daemon also wants to use the services provided by those daemons so we have dependency between the two too: [virtlogd.socket] <----(After)--- [virtlogd.service] ^ +-------------(After+Requires)-------+ | [virtqemud.socket] <----(After)--- [virtqemud.service] Now on startup everything is fine, because with socket activation, when 'virtqemud.service' wants to use 'virtlogd' services the socket is already up due to the dependency+ordering and opening a connection will cause 'virtlogd.service' to be socket-activated. On shutdown though there's no transitive 'After' ordering between 'virtqemud.service' and 'virtlogd.service' and thus nothing explicitly telling systemd that if virtlogd was started. In fact systemd is free to translate it that 'virtlogd' and 'virtqemud' need to be stopped before stopping 'virtlogd.socket'. To illustrate what happens consider the following scenario: A host is running a VM under virtqemud. 'virtqemud' is configured to attempt shutdown on the VMs before killing them (daemon-based guest shutdown, but the same reproduces also with libvirt-guests). The host is being rebooted. (virtqemud attempts to shut down guests, but guest takes more than the configured shutdown inhibition timeout, journald output follows): 06:44:02 fedora systemd-logind[664]: Delay lock is active (UID 0/root, P= ID 991/virtqemud) but inhibitor timeout is reached. 06:44:02 fedora systemd-logind[664]: System is rebooting. [...] 06:44:02 fedora virtlogd[802]: 802: debug : virSystemdNotify:667 : Notif= y 'STOPPING=3D1' 06:44:02 fedora systemd[1]: Stopping virtlogd.service - libvirt logging = daemon... 06:44:02 fedora systemd[1]: Stopping virtqemud.service - libvirt QEMU da= emon... 06:44:02 fedora virtqemud[991]: 991: debug : virSystemdNotify:667 : Noti= fy 'STOPPING=3D1' 06:44:02 fedora systemd[1]: virtlogd.service: Deactivated successfully. 06:44:02 fedora systemd[1]: Stopped virtlogd.service - libvirt logging d= aemon. (the shutdown times out, virtqemud kills the unresponsive vm) 06:44:27 fedora virtqemud[991]: 1053: debug : qemuProcessStop:8916 : Shu= tting down vm=3D0x7f71ac032670 name=3Dvirt-vm1 id=3D1 pid=3D805, reason=3Dd= estroyed, asyncJob=3Dnone, flags=3D0x0 06:44:27 fedora virtqemud[991]: 1053: debug : qemuDomainLogAppendMessage= :5757 : Append log message (vm=3D'virt-vm1' message=3D'2026-06-15 10:44:27.= 427+0000: shutting down, reason=3Ddestroyed ) stdioLogD=3D1 06:44:27 fedora virtqemud[991]: 1053: error : virNetSocketReadWire:1767 = : Cannot recv data: Connection reset by peer 06:44:27 fedora virtqemud[991]: 1053: debug : qemuProcessKill:8811 : vm= =3D0x7f71ac032670 name=3Dvirt-vm1 pid=3D805 flags=3D0x5 Now the log shows that we want to add VM log file message in 'qemuDomainLogAppendMessage' but it fails because virtlogd is dead already. Now the same happens also with 'virtlockd' but with much worse outcome, especially if the configured action is to save the VMs because shutdown of 'virtlockd' when locks are held ends up 'fencing' the VMs by killing them. The same also happens when libvirt-guests is used to shutdown the guests instead. This patch adds an explicit 'After=3Dvirtlo[ck|g]d.service' to the daemons containing the qemu driver to ensure that the shutdown ordering makes sense. This doesn't break socket activation (e.g. the log/lock daemons are not started unless first invoked). Signed-off-by: Peter Krempa Reviewed-by: Jiri Denemark --- src/qemu/virtqemud.service.extra.in | 4 ++++ src/remote/libvirtd.service.in | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/src/qemu/virtqemud.service.extra.in b/src/qemu/virtqemud.servi= ce.extra.in index cc16b6a9bb..3cc2edcfd0 100644 --- a/src/qemu/virtqemud.service.extra.in +++ b/src/qemu/virtqemud.service.extra.in @@ -6,6 +6,10 @@ Requires=3Dvirtlogd.socket Wants=3Dvirtlockd.socket After=3Dvirtlogd.socket After=3Dvirtlockd.socket +# To ensure that our helper daemons are not shut down before the main daem= on +# shuts down we need also explicit ordering with the .service unit +After=3Dvirtlogd.service +After=3Dvirtlock.service Wants=3Dsystemd-machined.service After=3Dsystemd-machined.service After=3Dremote-fs.target diff --git a/src/remote/libvirtd.service.in b/src/remote/libvirtd.service.in index b0a062e885..f26494d646 100644 --- a/src/remote/libvirtd.service.in +++ b/src/remote/libvirtd.service.in @@ -15,6 +15,10 @@ Requires=3Dvirtlogd.socket Wants=3Dvirtlockd.socket After=3Dvirtlogd.socket After=3Dvirtlockd.socket +# To ensure that our helper daemons are not shut down before the main daem= on +# shuts down we need also explicit ordering with the .service unit +After=3Dvirtlogd.service +After=3Dvirtlock.service Wants=3Dsystemd-machined.service After=3Dnetwork.target After=3Ddbus.service --=20 2.54.0 From nobody Wed Jun 24 21:39:43 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) client-ip=38.145.34.151; 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 38.145.34.151 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=1781533785; cv=none; d=zohomail.com; s=zohoarc; b=ddGp/G0Xm6aZZbdpxPGj/kmwLzNmK+4y/djYp8nCLzAfE530LEQhtMxX2xti40fE85YIIZa2NPK88yRQggAI8Q4mh1eP/+b5gNqW26Mh+bz7v2oA4Tr0G7VTyrqy3OawcMz6vyC6KniiALaEhdaym2mEtUEmIauYgxeQEzakNlY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781533785; 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=kixaFZmQMYMRTy7IiTJaSUiAkV49vRMKjFrh5qQaFF0=; b=M704PxtyiJLf6ad0PKe3kfgM4n6DhiWsE06t8vcmDKbjwkRGn1usl57XmpECBtyF+zgyC0ZIU3L/rGw0jklfDsb78gUp8lvnPFvN0Qc/USI5XYfUw8IyCMnvdgiw+CSV608t22pUT+tMMvBGR1m3HB0OADkYHgu+mO7KylVtBac= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 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 [38.145.34.151]) by mx.zohomail.com with SMTPS id 1781533785820932.0280121443353; Mon, 15 Jun 2026 07:29:45 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 7446E41CA1; Mon, 15 Jun 2026 10:29:44 -0400 (EDT) Received: from [172.19.199.4] (unknown [10.16.107.18]) by lists.libvirt.org (Postfix) with ESMTP id 700BD41C4A; Mon, 15 Jun 2026 10:24:54 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 89B983F935; Mon, 15 Jun 2026 10:24:18 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.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 1629B41A90 for ; Mon, 15 Jun 2026 10:24:17 -0400 (EDT) Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-332-oJxSArqRPKid8pGcF-1r9Q-1; Mon, 15 Jun 2026 10:24:13 -0400 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (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-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id C788C1955BF8 for ; Mon, 15 Jun 2026 14:24:12 +0000 (UTC) Received: from speedmetal.lan (unknown [10.44.22.21]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 001791954B03 for ; Mon, 15 Jun 2026 14:24:11 +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=0.6 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H5, RCVD_IN_MSPIKE_WL,RCVD_IN_SBL_CSS,SPF_HELO_PASS autolearn=no autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781533456; 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=kixaFZmQMYMRTy7IiTJaSUiAkV49vRMKjFrh5qQaFF0=; b=Omu7hKulFChUBK7RYpua3qn8HiNewQtf8tRQl9+OBjqdwkRrn495bj7tmFHU7l0KyxO9Kb rNXtRuL2QPCsOIO/LOuTyMEWkqa3ETozcL/jPis5+g9xmk+Rl6lqAWBldZE+qxl+IRd052 wSMnpvSg9vlRTRkcPHb2QqXW2yieki8= X-MC-Unique: oJxSArqRPKid8pGcF-1r9Q-1 X-Mimecast-MFC-AGG-ID: oJxSArqRPKid8pGcF-1r9Q_1781533452 To: devel@lists.libvirt.org Subject: [PATCH 02/14] qemuDomainAttachLease: Directly insert the lease Date: Mon, 15 Jun 2026 16:23:56 +0200 Message-ID: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: _ZwFE-jHcOiLCRT1GEYDES2Pdp7yy36d2wOA_f6AZ1M_1781533452 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: G6W4YOZFPZDLMXHURR47STZLMN5UFRJ3 X-Message-ID-Hash: G6W4YOZFPZDLMXHURR47STZLMN5UFRJ3 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: 1781533786276158500 Content-Type: text/plain; charset="utf-8" From: Peter Krempa Avoid the 'virDomainLeaseInsertPreAlloc' + 'virDomainLeaseInsertPreAlloced' dance. It's now not needed since allocation failure will crash the daemon anyways. Signed-off-by: Peter Krempa --- src/qemu/qemu_hotplug.c | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index 5be567b510..3d25b4c7d0 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -3421,15 +3421,11 @@ qemuDomainAttachLease(virQEMUDriver *driver, { g_autoptr(virQEMUDriverConfig) cfg =3D virQEMUDriverGetConfig(driver); - virDomainLeaseInsertPreAlloc(vm->def); - - if (virDomainLockLeaseAttach(driver->lockManager, cfg->uri, - vm, lease) < 0) { - virDomainLeaseInsertPreAlloced(vm->def, NULL); + if (virDomainLockLeaseAttach(driver->lockManager, cfg->uri, vm, lease)= < 0) return -1; - } - virDomainLeaseInsertPreAlloced(vm->def, lease); + virDomainLeaseInsert(vm->def, lease); + return 0; } --=20 2.54.0 From nobody Wed Jun 24 21:39:43 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) client-ip=38.145.34.151; 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 38.145.34.151 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=1781533936; cv=none; d=zohomail.com; s=zohoarc; b=f/arDKBXRWJR0Nosy5BfcHvZwUS0m9nakYgsI14Q94GlrTOD0E1dA2szq+WOacbXDsC1tJSJlEJdirM50nBsKXjSxKbA4QiQeUdh1dmfVdZFrdqla0I8MHdYh5YQnPqzyGheuQj808eaEyZ0ObMoez18gRl6yQ7ZnqxhmeZ1MXw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781533936; 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=YAoWt3f3iFHuAteq802ne9ZXl6yZ3qvPGCelmDfxPV0=; b=YdDun6AF+Yzlk174l9fX0XrZxNVA36S5SCFrQhUmnM/J6GRIScUX1pk0jIwoy6WhgYqa0oUp//Vp09IlfMtU1FxTtUTLxlfan54u4dEFiskzBbmZ5ToM9qpx3qsXXTgC1O6+ockD5mVCVJToFbhTFbft5TLrdLvvMXLFFj9GkiQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 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 [38.145.34.151]) by mx.zohomail.com with SMTPS id 1781533936629845.0651978888392; Mon, 15 Jun 2026 07:32:16 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 5FD5B41B64; Mon, 15 Jun 2026 10:32:15 -0400 (EDT) Received: from [172.19.199.4] (unknown [10.16.107.18]) by lists.libvirt.org (Postfix) with ESMTP id 17B9B41B8D; Mon, 15 Jun 2026 10:25:04 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id B76934197E; Mon, 15 Jun 2026 10:24:20 -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 BA0D43F935 for ; Mon, 15 Jun 2026 10:24:19 -0400 (EDT) Received: from mx-prod-mc-06.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-91-yeXmoYdJPgaH_VGKpF7bAQ-1; Mon, 15 Jun 2026 10:24:14 -0400 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (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-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id EEC4E180064B for ; Mon, 15 Jun 2026 14:24:13 +0000 (UTC) Received: from speedmetal.lan (unknown [10.44.22.21]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 447C41955BC1 for ; Mon, 15 Jun 2026 14:24:13 +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=-2.7 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL,SPF_HELO_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=1781533459; 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=YAoWt3f3iFHuAteq802ne9ZXl6yZ3qvPGCelmDfxPV0=; b=hWmz01O7ORXyy9z09Jxb6QPuy+AWaCH5BrQsflgqMEiy79NTSsW+We2mEp9Id0QLGpX+cf HYzVNxpLabx4kiXX69kHl2o2TxLxlSRBIqM5CnwnusZlW2ElfaOM/pYG2qQEer6M+dBxrQ fqtwkedY8X2t7OmT1tzprvZNEBcX6Vw= X-MC-Unique: yeXmoYdJPgaH_VGKpF7bAQ-1 X-Mimecast-MFC-AGG-ID: yeXmoYdJPgaH_VGKpF7bAQ_1781533454 To: devel@lists.libvirt.org Subject: [PATCH 03/14] Remove virDomainLeaseInsertPreAlloc/virDomainLeaseInsertPreAlloced Date: Mon, 15 Jun 2026 16:23:57 +0200 Message-ID: <3618d13cc5cbe2754b7e6e3859db0315926c5cc5.1781533237.git.pkrempa@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: fuRyI9Tv3Ais18bO9ljqGlagfrkzwJ2SijvZJnuBQa8_1781533454 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: SJY43QXYJEG4LJSIO7TPZTHWKZUYDXTA X-Message-ID-Hash: SJY43QXYJEG4LJSIO7TPZTHWKZUYDXTA 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: 1781533938102158500 Content-Type: text/plain; charset="utf-8" From: Peter Krempa Replace the implementation in 'virDomainLeaseInsert' by VIR_APPEND_ELEMENT and remove the unneeded helpers. Signed-off-by: Peter Krempa --- src/conf/domain_conf.c | 22 ++++------------------ src/conf/domain_conf.h | 4 +--- src/libvirt_private.syms | 2 -- 3 files changed, 5 insertions(+), 23 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 2d3e646bcb..6375eecffb 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -16158,25 +16158,11 @@ int virDomainLeaseIndex(virDomainDef *def, } -void virDomainLeaseInsertPreAlloc(virDomainDef *def) -{ - VIR_EXPAND_N(def->leases, def->nleases, 1); -} - -void virDomainLeaseInsert(virDomainDef *def, virDomainLeaseDef *lease) -{ - virDomainLeaseInsertPreAlloc(def); - virDomainLeaseInsertPreAlloced(def, lease); -} - - -void virDomainLeaseInsertPreAlloced(virDomainDef *def, - virDomainLeaseDef *lease) +void +virDomainLeaseInsert(virDomainDef *def, + virDomainLeaseDef *lease) { - if (lease =3D=3D NULL) - VIR_SHRINK_N(def->leases, def->nleases, 1); - else - def->leases[def->nleases-1] =3D lease; + VIR_APPEND_ELEMENT(def->leases, def->nleases, lease); } diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index d17f6352bd..3fec157a26 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -4200,9 +4200,7 @@ const char *virDomainControllerAliasFind(const virDom= ainDef *def, int virDomainLeaseIndex(virDomainDef *def, virDomainLeaseDef *lease); void virDomainLeaseInsert(virDomainDef *def, virDomainLeaseDef *lease); -void virDomainLeaseInsertPreAlloc(virDomainDef *def); -void virDomainLeaseInsertPreAlloced(virDomainDef *def, - virDomainLeaseDef *lease); + virDomainLeaseDef * virDomainLeaseRemoveAt(virDomainDef *def, size_t i); virDomainLeaseDef * diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 30c4564456..be073ced43 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -515,8 +515,6 @@ virDomainLaunchSecurityTypeToString; virDomainLeaseDefFree; virDomainLeaseIndex; virDomainLeaseInsert; -virDomainLeaseInsertPreAlloc; -virDomainLeaseInsertPreAlloced; virDomainLeaseRemove; virDomainLeaseRemoveAt; virDomainLifecycleActionTypeFromString; --=20 2.54.0 From nobody Wed Jun 24 21:39:43 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) client-ip=38.145.34.151; 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 38.145.34.151 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=1781533729; cv=none; d=zohomail.com; s=zohoarc; b=N6+5v6FxudrDWu9VBSdfouMNxLTafv0JV0Kedr1OKhZDelA8o+4VeEm2qxso1pIqBXvHEvA4THBA7bxNwJmKw+rQ+GrWUdQQf6/uNdrcQ2JzcRFlhXUzLlivBUkNP693SxCgHNc8diOzb1wZDzqZpodeZRukcK5+ktxmMQDXQmc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781533729; 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=VdN3Ksv3LzbxW17tAlphKpHiafqpjKzKdGFDaJ2hcDA=; b=TB+sKKAw+xtoQTuUB7wS7s5G/66+zKzyxMYkr5DL27JBLoZNIew0h1nhy2rOk/Dzg56ZQJtxNC7hsW9ndO/J5T46QsE7uRNQBd7QHNU6F7VVGz95frHbUBZIdldGaMLQ0f7brLNhuEMf4caHrHRomSjlak7tozvq20OXf4+3htk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 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 [38.145.34.151]) by mx.zohomail.com with SMTPS id 1781533729529447.7620407123409; Mon, 15 Jun 2026 07:28:49 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id E454441B93; Mon, 15 Jun 2026 10:28:47 -0400 (EDT) Received: from [172.19.199.4] (unknown [10.16.107.18]) by lists.libvirt.org (Postfix) with ESMTP id C8C2741BCF; Mon, 15 Jun 2026 10:24:47 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 7935641A2F; Mon, 15 Jun 2026 10:24:18 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.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 8DD9241AAF for ; Mon, 15 Jun 2026 10:24:17 -0400 (EDT) Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-118-qeNUcXBCNm2MFJwM6wB0EQ-1; Mon, 15 Jun 2026 10:24:16 -0400 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (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-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 3F8FE1955F26 for ; Mon, 15 Jun 2026 14:24:15 +0000 (UTC) Received: from speedmetal.lan (unknown [10.44.22.21]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 69B371955BCE for ; Mon, 15 Jun 2026 14:24:14 +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=0.6 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H5, RCVD_IN_MSPIKE_WL,RCVD_IN_SBL_CSS,SPF_HELO_PASS autolearn=no autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781533457; 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=VdN3Ksv3LzbxW17tAlphKpHiafqpjKzKdGFDaJ2hcDA=; b=S1690oNjzjv//yMEC80bQNJ6c2rdMRzjSyVC/N3wv9JQ3wadjVNcJyaqJPxUkQCkwIP471 w8ZJZkuhpl02NeTEQn9z7j/uxwPo97eDa+GO82UlANCnPZytUt2rqTahIyjTpmKqi0FyD3 opZXX4bNagqIYxZSatZgsTc+rjKMr88= X-MC-Unique: qeNUcXBCNm2MFJwM6wB0EQ-1 X-Mimecast-MFC-AGG-ID: qeNUcXBCNm2MFJwM6wB0EQ_1781533455 To: devel@lists.libvirt.org Subject: [PATCH 04/14] qemu.conf: Explain that no locking happens if 'lock_manager' is unset Date: Mon, 15 Jun 2026 16:23:58 +0200 Message-ID: <09cb2a85464a5e46ff91c1ba6eda767a45166233.1781533237.git.pkrempa@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: ef3HLwNPZYZzMb-Fah8rb7n9j1_2Mup25QJ3k0YFzBo_1781533455 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: CZ73TIQJKYZTYZQD2WLQ3CRMTITMCPVU X-Message-ID-Hash: CZ73TIQJKYZTYZQD2WLQ3CRMTITMCPVU 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: 1781533731787158501 Content-Type: text/plain; charset="utf-8" From: Peter Krempa Clarify that libvirt will not do any locking on images if the 'lock_manager' field is unset and that qemu still will use the 'flock' based locks on images, which are actually not related to the setting. Signed-off-by: Peter Krempa --- src/qemu/qemu.conf.in | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/qemu/qemu.conf.in b/src/qemu/qemu.conf.in index 97b0141cf6..8ad30a909e 100644 --- a/src/qemu/qemu.conf.in +++ b/src/qemu/qemu.conf.in @@ -901,6 +901,11 @@ # virtlockd, is then our own implementation. Accepted values # are "sanlock" and "lockd". # +# NOTE: This lock mechanism is not related to QEMU's flock() +# based image locking. +# +# If unset no locking will happen on libvirt level. +# #lock_manager =3D "lockd" --=20 2.54.0 From nobody Wed Jun 24 21:39:43 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) client-ip=38.145.34.151; 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 38.145.34.151 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=1781533851; cv=none; d=zohomail.com; s=zohoarc; b=Cl6XXgHs6pQMMpqU/nzGl0gLaizN8tp7kRf6KXXjlbIAO61OIztbHJmu4d6Dku1RMHgxksy+mQSgn3/DSyGleJyR8yY/VBFFy+lIGS106IdYLWrt7PQHNgsIqn8pGZ8qC5sATkGH2dfE/zLNH8ngHe/Fh0YeYhkwx4Idfj7qXCc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781533851; 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=8Nb1SsZZ/lIlHiXaGDOExIuLEx22APBXv1C82SzYk/g=; b=fnREtMjgy4CckLheG5ZzOKMd0hbeBMX15NmlaxchRrZ6bGyaCWfjPmlWVIRRipcywdzk9ZQE2kUFr1Fp21+HgbypsdKMYnAJxRSRrFakrVT1FH4d2YqJhvWjhTB3RuoltxAvTw5ge0JhX65IEk5+C5jYjkdYiDiaUOpymL3XAdI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 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 [38.145.34.151]) by mx.zohomail.com with SMTPS id 1781533851371287.5980342065528; Mon, 15 Jun 2026 07:30:51 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 3A66341B06; Mon, 15 Jun 2026 10:30:50 -0400 (EDT) Received: from [172.19.199.4] (unknown [10.16.107.18]) by lists.libvirt.org (Postfix) with ESMTP id 5BC7141DC0; Mon, 15 Jun 2026 10:24:59 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 8022B3F935; Mon, 15 Jun 2026 10:24:19 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.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 DA3AF4197E for ; Mon, 15 Jun 2026 10:24:18 -0400 (EDT) Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-486-6cIHZrWGPm-QwFhZzLoukg-1; Mon, 15 Jun 2026 10:24:17 -0400 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (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-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 6844F1955F0B for ; Mon, 15 Jun 2026 14:24:16 +0000 (UTC) Received: from speedmetal.lan (unknown [10.44.22.21]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id B26901955BCE for ; Mon, 15 Jun 2026 14:24:15 +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=0.6 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H5, RCVD_IN_MSPIKE_WL,RCVD_IN_SBL_CSS,SPF_HELO_PASS autolearn=no autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781533458; 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=8Nb1SsZZ/lIlHiXaGDOExIuLEx22APBXv1C82SzYk/g=; b=ThfCWUEm+v1uu8+OaNsWYK6bQ5NHQEVPnhOo/ZleK6jtSUzADFQwJ2PP9Qf3FVojxVuaQM MHnLVqWtdNnnaHhjESioXYrJev4dvXjZt2GB/bGeqbCnJfYdJrgx3ovqsprIfEKCpIeasl IjCsalaGE7TE6uRC6LASBghFa82tDmY= X-MC-Unique: 6cIHZrWGPm-QwFhZzLoukg-1 X-Mimecast-MFC-AGG-ID: 6cIHZrWGPm-QwFhZzLoukg_1781533456 To: devel@lists.libvirt.org Subject: [PATCH 05/14] virDomainLeaseDefParseXML: Report error if '' element is missing Date: Mon, 15 Jun 2026 16:23:59 +0200 Message-ID: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: SnYYBNRwypYs-XOiwtOM7sMAjAElZM-JWuLHwf_IDDg_1781533456 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: 4RTVAAIEUNJRWKNKQ3YMXNJBJMLQQB4P X-Message-ID-Hash: 4RTVAAIEUNJRWKNKQ3YMXNJBJMLQQB4P 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: 1781533853094158500 Content-Type: text/plain; charset="utf-8" From: Peter Krempa Historically the parser for the '' device type didn't require the presence of '', although the schema requires it. Commit 8d635a0bf24c refactored the parser and added a failure state if the fetching of '' fails, including the case when it's missing but didn't report an error, thus generating useless error message. Since the intention based on the docs, schema and implementation in the daemons seems to require 'lockspace' add a proper error message. Fixes: 8d635a0bf24cd1dabcbfc020b9a833a1d06d87a2 Signed-off-by: Peter Krempa --- src/conf/domain_conf.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 6375eecffb..262aeca26c 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -7381,8 +7381,11 @@ virDomainLeaseDefParseXML(xmlNodePtr node, goto error; } - if (!(lockspace =3D virXPathString("string(./lockspace)", ctxt))) + if (!(lockspace =3D virXPathString("string(./lockspace)", ctxt))) { + virReportError(VIR_ERR_XML_ERROR, "%s", + _("Missing 'lockspace' element for lease")); goto error; + } if (!(targetNode =3D virXPathNode("./target", ctxt))) { virReportError(VIR_ERR_XML_ERROR, "%s", --=20 2.54.0 From nobody Wed Jun 24 21:39:43 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) client-ip=38.145.34.151; 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 38.145.34.151 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=1781534029; cv=none; d=zohomail.com; s=zohoarc; b=Z7p1mpfJi+j4qgHrVTWrBEPzSeuC4liT73beTo0mH6x5ag16qQGgYz8Qxvjxu/O5+Sth0XsVgSDGCwNnOS+K6X03ppECAFBpnVA2bMdEKtyl2tBP4taQ/glbUsCu2VHvP21RMW3b6tPEJ9a1FZOnuJgsrl7IgIJBjkHy5DzCQdc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781534029; 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=58C7FcXnCYymwsK5d5y3k1/JBjvqh9ty3sBb+qJxLTk=; b=OqWa/mfjYkfKMmrGPFxnXuiteNpjfXVcPGDRtyjkBn/J947IurAfsNLVcCVUPgFabnni9Ei1QGzeNkWqELyjdycAsk3ime1y4rQ28hJ4cXS/WJ3BV9kOAZpMzhKGrHQiST93Y6Lu3c1zVtKSIOE3hN6+28zhbVM2GxuXx3LZavQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 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 [38.145.34.151]) by mx.zohomail.com with SMTPS id 1781534029770641.5680419610746; Mon, 15 Jun 2026 07:33:49 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 8DDD941C33; Mon, 15 Jun 2026 10:33:48 -0400 (EDT) Received: from [172.19.199.4] (unknown [10.16.107.18]) by lists.libvirt.org (Postfix) with ESMTP id BF75741CFC; Mon, 15 Jun 2026 10:25:09 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 9D33341A88; Mon, 15 Jun 2026 10:24:21 -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 D2C8341A2F for ; Mon, 15 Jun 2026 10:24:20 -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-583-8xLnwNvFNH-B4zZlq-Q9tg-1; Mon, 15 Jun 2026 10:24:18 -0400 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (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 8373C1805A0B for ; Mon, 15 Jun 2026 14:24:17 +0000 (UTC) Received: from speedmetal.lan (unknown [10.44.22.21]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id CD4201955BCE for ; Mon, 15 Jun 2026 14:24:16 +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=-2.7 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL,SPF_HELO_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=1781533460; 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=58C7FcXnCYymwsK5d5y3k1/JBjvqh9ty3sBb+qJxLTk=; b=UUaTJIrnmSeaHruGf/UkiUavTs1UvunuJJU5rFp/ew1UM0so7vekH944V3pmseukVTRw9E UgBPF8MTFpsl/n9nk23hRivloAg+6miJ/ABtkzePvFMpNlhxfpkvNYj30rr+7fIpB05nEe kA2yXrt1P24faPLiHxvojVwpIJ5+Ems= X-MC-Unique: 8xLnwNvFNH-B4zZlq-Q9tg-1 X-Mimecast-MFC-AGG-ID: 8xLnwNvFNH-B4zZlq-Q9tg_1781533457 To: devel@lists.libvirt.org Subject: [PATCH 06/14] virDomainLeaseDefParseXML: Avoid unneeded temporary variables Date: Mon, 15 Jun 2026 16:24:00 +0200 Message-ID: <51828b6e1c154454460c7421d681fc516712e035.1781533237.git.pkrempa@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: FKKzGON9mMNohivR0elJvdG1VRQfKO9hfEncQBWX6iE_1781533457 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: XVWJOBRVEHUBE5SQ3H2A4ICPZXDI4DI3 X-Message-ID-Hash: XVWJOBRVEHUBE5SQ3H2A4ICPZXDI4DI3 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: 1781534032626158500 Content-Type: text/plain; charset="utf-8" From: Peter Krempa The contents of the object we're parsing are freed so no need to have intermediate variables. Signed-off-by: Peter Krempa --- src/conf/domain_conf.c | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 262aeca26c..a9ee5b47d8 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -7366,22 +7366,19 @@ virDomainLeaseDefParseXML(xmlNodePtr node, xmlXPathContextPtr ctxt) { virDomainLeaseDef *def; - g_autofree char *lockspace =3D NULL; - g_autofree char *key =3D NULL; - g_autofree char *path =3D NULL; xmlNodePtr targetNode =3D NULL; VIR_XPATH_NODE_AUTORESTORE(ctxt) ctxt->node =3D node; def =3D g_new0(virDomainLeaseDef, 1); - if (!(key =3D virXPathString("string(./key)", ctxt))) { + if (!(def->key =3D virXPathString("string(./key)", ctxt))) { virReportError(VIR_ERR_XML_ERROR, "%s", _("Missing 'key' element for lease")); goto error; } - if (!(lockspace =3D virXPathString("string(./lockspace)", ctxt))) { + if (!(def->lockspace =3D virXPathString("string(./lockspace)", ctxt)))= { virReportError(VIR_ERR_XML_ERROR, "%s", _("Missing 'lockspace' element for lease")); goto error; @@ -7393,7 +7390,7 @@ virDomainLeaseDefParseXML(xmlNodePtr node, goto error; } - if (!(path =3D virXMLPropString(targetNode, "path"))) { + if (!(def->path =3D virXMLPropString(targetNode, "path"))) { virReportError(VIR_ERR_XML_ERROR, "%s", _("Missing 'path' attribute to 'target' element for= lease")); goto error; @@ -7403,10 +7400,6 @@ virDomainLeaseDefParseXML(xmlNodePtr node, VIR_XML_PROP_NONE, &def->offset) < 0) goto error; - def->key =3D g_steal_pointer(&key); - def->lockspace =3D g_steal_pointer(&lockspace); - def->path =3D g_steal_pointer(&path); - return def; error: --=20 2.54.0 From nobody Wed Jun 24 21:39:43 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) client-ip=38.145.34.151; 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 38.145.34.151 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=1781534088; cv=none; d=zohomail.com; s=zohoarc; b=k9H1VjYvxh9YdKyFM9lk29Cm+RUKgei3AeqigeBuBbDOZ3oz1pIGmnKhfk+vC9bPVHoGTCLZBcp6I4rZtanTmRtH7+vH4hcJCYKdCHzRAzwJRwepU/nDhA8lX0SXShzElOhQWgnjvthgfCPwBGN28K/u2LgBu/xK58V2XdLd1Ck= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781534088; 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=iNdZjcjBGvNlsEmWcaJWgRcaT1Wm0j5vXHaLrbpU/XE=; b=be0TGZGIUvvrvrqDeiS1lW2MWWuwnJosUSarjEBssQGO+Cwxj+KukWoAs2sj2yDsmFqeWYHb1DsplIkaRp5zn9OLiEOg+aMWV5xXyvxybHHaHHWAG3bBu0D931xjNtHrYxh1EYXG6ZDs+z+0ahxbh9bzZ4g4PlpzT/Fd51Q2Q68= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 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 [38.145.34.151]) by mx.zohomail.com with SMTPS id 1781534087874357.3440312635008; Mon, 15 Jun 2026 07:34:47 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 9711C41BD8; Mon, 15 Jun 2026 10:34:46 -0400 (EDT) Received: from [172.19.199.4] (unknown [10.16.107.18]) by lists.libvirt.org (Postfix) with ESMTP id 1D1F241D33; Mon, 15 Jun 2026 10:25:15 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id D72C741A2F; Mon, 15 Jun 2026 10:24:21 -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 3EBB23F935 for ; Mon, 15 Jun 2026 10:24:21 -0400 (EDT) Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-315-eqRbpU6lNiuAXYXVmYAjbg-1; Mon, 15 Jun 2026 10:24:19 -0400 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (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-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id C440A1955F68 for ; Mon, 15 Jun 2026 14:24:18 +0000 (UTC) Received: from speedmetal.lan (unknown [10.44.22.21]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id F22B91955BC1 for ; Mon, 15 Jun 2026 14:24:17 +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=0.6 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL,RCVD_IN_SBL_CSS,SPF_HELO_PASS autolearn=no autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781533460; 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=iNdZjcjBGvNlsEmWcaJWgRcaT1Wm0j5vXHaLrbpU/XE=; b=Gxg8RBpKDVV9M9MeqI5OemnN1ymqVIF0uMXWaezfCfcFE3fBvF/NAjVPkr5mi2D1CNV2ZL eZK1zmbVlCVtPhJ7cBNojWRQ0sPGLvJZKtc0ppdbo4BjHRngQv+2jAGOL4NkRW6dIU/n/9 0RyHSXGb4oEne12rSFjYEsoz9Dz6LGM= X-MC-Unique: eqRbpU6lNiuAXYXVmYAjbg-1 X-Mimecast-MFC-AGG-ID: eqRbpU6lNiuAXYXVmYAjbg_1781533458 To: devel@lists.libvirt.org Subject: [PATCH 07/14] qemuxmlconftest: Add with missing offset Date: Mon, 15 Jun 2026 16:24:01 +0200 Message-ID: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: kcE9AXt77EFZdV3KXabD3YHrVSzwhFRgc_nvnIykcaY_1781533458 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: RPI5LM3GQTKD2R5M5HLJEIC4RCSNKB6P X-Message-ID-Hash: RPI5LM3GQTKD2R5M5HLJEIC4RCSNKB6P 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: 1781534089260158502 Content-Type: text/plain; charset="utf-8" From: Peter Krempa Offset is optional in the schema, add an example in the tests. Signed-off-by: Peter Krempa --- tests/qemuxmlconfdata/lease.x86_64-latest.xml | 5 +++++ tests/qemuxmlconfdata/lease.xml | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/tests/qemuxmlconfdata/lease.x86_64-latest.xml b/tests/qemuxmlc= onfdata/lease.x86_64-latest.xml index d400fb1fef..5d231c30c7 100644 --- a/tests/qemuxmlconfdata/lease.x86_64-latest.xml +++ b/tests/qemuxmlconfdata/lease.x86_64-latest.xml @@ -42,6 +42,11 @@ thequickbrownfoxjumpedoverthelazydog + + else + ble + + + + else + ble + + --=20 2.54.0 From nobody Wed Jun 24 21:39:43 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) client-ip=38.145.34.151; 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 38.145.34.151 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=1781534145; cv=none; d=zohomail.com; s=zohoarc; b=COBII+aXArsakPxTvLmMHo40Dh12EWnosr2tOBf85wG4uCuWYfrFhG3IdSMLHiBVzLj60/jvWta2hAhaucGfc5a89qHQ1tV2L/mwrN6ZduyuxfjL8AMFvYKqwRqpXsv+TBDzgYFgaY2JND9+iCsbEvAO7QDa4vNxgRX3W74eq0A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781534145; 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=b6Rvo7LJBppDL1qZGkekXrFcVOGoyUDxo5usaGugC9o=; b=Gc/lP2zlPVQvCIpSakqbZF633oRZ+iHfJbI7GreL4TvyEOjweWoMq7MaV51iuAJo2teaDvTV3QK7bcfwjkzi38Is05hNA0xm0Rc0VbAVDdaUlQZwp95VYkB5l+usF6TUXucbpDyHI8tLJjvhy6co6UPbBWctHVnSlK+wEKimer4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 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 [38.145.34.151]) by mx.zohomail.com with SMTPS id 1781534145050391.4043350454846; Mon, 15 Jun 2026 07:35:45 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id E38514197E; Mon, 15 Jun 2026 10:35:43 -0400 (EDT) Received: from [172.19.199.4] (unknown [10.16.107.18]) by lists.libvirt.org (Postfix) with ESMTP id 772674241F; Mon, 15 Jun 2026 10:25:21 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 020BD41AC1; Mon, 15 Jun 2026 10:24:35 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.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 81D9B41B3B for ; Mon, 15 Jun 2026 10:24:23 -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-240-ddk83bjZMxKXBrszr30R4A-1; Mon, 15 Jun 2026 10:24:20 -0400 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (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 DF4A61800581 for ; Mon, 15 Jun 2026 14:24:19 +0000 (UTC) Received: from speedmetal.lan (unknown [10.44.22.21]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 35A501955BC1 for ; Mon, 15 Jun 2026 14:24:19 +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=-2.7 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H5, RCVD_IN_MSPIKE_WL,SPF_HELO_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=1781533463; 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=b6Rvo7LJBppDL1qZGkekXrFcVOGoyUDxo5usaGugC9o=; b=LyiiOniT6VvL2TYvCecri7klZxqnLkrvBvpamE2NbP5imOIP7Fe5jgZW0oawaL/BlNMAB1 ga4JhK7VzJM8ZOFm5uLwn310sGgss8ypCR5u28q2m83sgXK4vp1Qp0ptR+OSY1+VPRBrHY rbRaoa5Zy91qB1E6cCgVXsuRafiNBwo= X-MC-Unique: ddk83bjZMxKXBrszr30R4A-1 X-Mimecast-MFC-AGG-ID: ddk83bjZMxKXBrszr30R4A_1781533460 To: devel@lists.libvirt.org Subject: [PATCH 08/14] locking: Debug lockspace creation Date: Mon, 15 Jun 2026 16:24:02 +0200 Message-ID: <4caa665de0095fa3b66203ebb5e00a8b6cce614f.1781533237.git.pkrempa@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: PZ0uG8tYRg6JcB2cmdEOzrLXL1EbFmg2AhrLKaBprgI_1781533460 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: B3G5Y4EVKMYFJHRUDPPLWWTAPSJCIMMG X-Message-ID-Hash: B3G5Y4EVKMYFJHRUDPPLWWTAPSJCIMMG 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: 1781534147756158500 Content-Type: text/plain; charset="utf-8" From: Peter Krempa Add debug statement when adding a lockspace in the daemon and log the pointer when creating a new lockspace so that it can be inferred from the log what parameters were used. Signed-off-by: Peter Krempa --- src/locking/lock_daemon.c | 3 +++ src/util/virlockspace.c | 6 ++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/locking/lock_daemon.c b/src/locking/lock_daemon.c index 1017fc65b1..2cb7e85b39 100644 --- a/src/locking/lock_daemon.c +++ b/src/locking/lock_daemon.c @@ -280,6 +280,9 @@ int virLockDaemonAddLockSpace(virLockDaemon *lockd, virLockSpace *lockspace) { int ret; + + VIR_DEBUG("path=3D'%s' lockspace=3D'%p'", NULLSTR(path), lockspace); + virLockDaemonLock(lockd); ret =3D virHashAddEntry(lockd->lockspaces, path, lockspace); virLockDaemonUnlock(lockd); diff --git a/src/util/virlockspace.c b/src/util/virlockspace.c index 19aacf61bc..d3c95840b3 100644 --- a/src/util/virlockspace.c +++ b/src/util/virlockspace.c @@ -231,11 +231,9 @@ static void virLockSpaceResourceDataFree(void *opaque) virLockSpace *virLockSpaceNew(const char *directory) { - virLockSpace *lockspace; - - VIR_DEBUG("directory=3D%s", NULLSTR(directory)); + virLockSpace *lockspace =3D g_new0(virLockSpace, 1); - lockspace =3D g_new0(virLockSpace, 1); + VIR_DEBUG("lockspace=3D%p directory=3D'%s'", lockspace, NULLSTR(direct= ory)); if (virMutexInit(&lockspace->lock) < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", --=20 2.54.0 From nobody Wed Jun 24 21:39:43 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) client-ip=38.145.34.151; 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 38.145.34.151 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=1781534204; cv=none; d=zohomail.com; s=zohoarc; b=VXm+toRRF0pZ7ru2jDrxq7pUtnwOVOAAjDhzdmRGXTmF95dfkVHP88oOQuphNR5mx4sgBqFBIfYY7zeSjxVU4vK7e2CPnTvkbEeqP6AG5ZGz3kb8paVv1foPT1tPx8xJ3IJJmv9GBHCE+VTr2BBG0iYaE71rbntf5FiJizRg2I8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781534204; 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=UXwopa4dlDrZHTVttx1HNoWuZyoFgKgvHkgV3kBbtl4=; b=TinCKRAoYopTiBoBxElA/kR2oIhNCvTsKdP8hbTaM7MXvniGMuIT2G+qISv08PSyRsqmW7r39zg7EipSAnL7pFk7VmMduMPYu/bpddQwCRpCPjbdZS4fnzXKBBvMAohii859LJfS7H35rEbPjWmkOdNhh+mVYX1rE2LE+T88Yco= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 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 [38.145.34.151]) by mx.zohomail.com with SMTPS id 1781534203966796.1886825926124; Mon, 15 Jun 2026 07:36:43 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id CFD9B41B6D; Mon, 15 Jun 2026 10:36:42 -0400 (EDT) Received: from [172.19.199.4] (unknown [10.16.107.18]) by lists.libvirt.org (Postfix) with ESMTP id 2CB7543DF9; Mon, 15 Jun 2026 10:25:25 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 38A0641AC1; Mon, 15 Jun 2026 10:24:37 -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 ACE2241B63 for ; Mon, 15 Jun 2026 10:24:23 -0400 (EDT) Received: from mx-prod-mc-06.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-515-vB03f0nQPV27iwwwfhjrow-1; Mon, 15 Jun 2026 10:24:21 -0400 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (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-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 295D4180058A for ; Mon, 15 Jun 2026 14:24:21 +0000 (UTC) Received: from speedmetal.lan (unknown [10.44.22.21]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 617751955BC1 for ; Mon, 15 Jun 2026 14:24:20 +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=-2.7 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL,SPF_HELO_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=1781533463; 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=UXwopa4dlDrZHTVttx1HNoWuZyoFgKgvHkgV3kBbtl4=; b=DyjveTvTAOO/hIDup5PDegNMXLpKiTciO8fJx2we0FrRJiyta89wSOOpf8HrP2loyS/e85 Br+ZFmKFPh04DN0HpQV/Fuhv/aBAPwP5RieADn8lt0COqju0O2twJxXZ/WC4fde7qlfgN8 ZZChF02zYciUqePwswqwMM/gSsRjo+s= X-MC-Unique: vB03f0nQPV27iwwwfhjrow-1 X-Mimecast-MFC-AGG-ID: vB03f0nQPV27iwwwfhjrow_1781533461 To: devel@lists.libvirt.org Subject: [PATCH 09/14] lock_daemon: Log arguments for all dispatched APIs Date: Mon, 15 Jun 2026 16:24:03 +0200 Message-ID: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: Rk2ZHR4AnsBpFdzXcZHfzVHVTRAp01GY-gMASd8fJD0_1781533461 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: EDQQXERQ4SWY2TNEUZ4EYVKT53Q7YE2Y X-Message-ID-Hash: EDQQXERQ4SWY2TNEUZ4EYVKT53Q7YE2Y 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: 1781534206030158500 Content-Type: text/plain; charset="utf-8" From: Peter Krempa Log the individual values in the 'args' structs. Signed-off-by: Peter Krempa --- src/locking/lock_daemon_dispatch.c | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/src/locking/lock_daemon_dispatch.c b/src/locking/lock_daemon_d= ispatch.c index 22c450acd9..f82cfc494d 100644 --- a/src/locking/lock_daemon_dispatch.c +++ b/src/locking/lock_daemon_dispatch.c @@ -48,6 +48,9 @@ virLockSpaceProtocolDispatchAcquireResource(virNetServer = *server G_GNUC_UNUSED, virLockSpace *lockspace; unsigned int newFlags; + VIR_DEBUG("args: path=3D'%s', name=3D'%s', flags=3D0x%x", + args->path, args->name, args->flags); + g_mutex_lock(&priv->lock); virCheckFlagsGoto(VIR_LOCK_SPACE_PROTOCOL_ACQUIRE_RESOURCE_SHARED | @@ -107,6 +110,9 @@ virLockSpaceProtocolDispatchCreateResource(virNetServer= *server G_GNUC_UNUSED, virNetServerClientGetPrivateData(client); virLockSpace *lockspace; + VIR_DEBUG("args: path=3D'%s', name=3D'%s', flags=3D0x%x", + args->path, args->name, args->flags); + g_mutex_lock(&priv->lock); virCheckFlagsGoto(0, cleanup); @@ -156,6 +162,9 @@ virLockSpaceProtocolDispatchDeleteResource(virNetServer= *server G_GNUC_UNUSED, virNetServerClientGetPrivateData(client); virLockSpace *lockspace; + VIR_DEBUG("args: path=3D'%s', name=3D'%s', flags=3D0x%x", + args->path, args->name, args->flags); + g_mutex_lock(&priv->lock); virCheckFlagsGoto(0, cleanup); @@ -205,6 +214,9 @@ virLockSpaceProtocolDispatchNew(virNetServer *server G_= GNUC_UNUSED, virNetServerClientGetPrivateData(client); virLockSpace *lockspace; + VIR_DEBUG("args: path=3D'%s', flags=3D0x%x", + args->path, args->flags); + g_mutex_lock(&priv->lock); virCheckFlagsGoto(0, cleanup); @@ -260,6 +272,9 @@ virLockSpaceProtocolDispatchRegister(virNetServer *serv= er G_GNUC_UNUSED, virLockDaemonClient *priv =3D virNetServerClientGetPrivateData(client); + VIR_DEBUG("args: owner.name=3D'%s' owner.id=3D%d owner.pid=3D%lld flag= s=3D0x%x", + args->owner.name, args->owner.id, (long long) args->owner.pi= d, args->flags); + g_mutex_lock(&priv->lock); virCheckFlagsGoto(0, cleanup); @@ -280,8 +295,6 @@ virLockSpaceProtocolDispatchRegister(virNetServer *serv= er G_GNUC_UNUSED, memcpy(priv->ownerUUID, args->owner.uuid, VIR_UUID_BUFLEN); priv->ownerId =3D args->owner.id; priv->ownerPid =3D args->owner.pid; - VIR_DEBUG("ownerName=3D%s ownerId=3D%d ownerPid=3D%lld", - priv->ownerName, priv->ownerId, (unsigned long long)priv->ow= nerPid); rv =3D 0; @@ -306,6 +319,9 @@ virLockSpaceProtocolDispatchReleaseResource(virNetServe= r *server G_GNUC_UNUSED, virNetServerClientGetPrivateData(client); virLockSpace *lockspace; + VIR_DEBUG("args: path=3D'%s', name=3D'%s', flags=3D0x%x", + args->path, args->name, args->flags); + g_mutex_lock(&priv->lock); virCheckFlagsGoto(0, cleanup); @@ -356,6 +372,8 @@ virLockSpaceProtocolDispatchRestrict(virNetServer *serv= er G_GNUC_UNUSED, virLockDaemonClient *priv =3D virNetServerClientGetPrivateData(client); + VIR_DEBUG("args: flags=3D0x%x", args->flags); + g_mutex_lock(&priv->lock); virCheckFlagsGoto(0, cleanup); @@ -395,6 +413,8 @@ virLockSpaceProtocolDispatchCreateLockSpace(virNetServe= r *server G_GNUC_UNUSED, virNetServerClientGetPrivateData(client); virLockSpace *lockspace; + VIR_DEBUG("args: path=3D'%s'", args->path); + g_mutex_lock(&priv->lock); if (priv->restricted) { --=20 2.54.0 From nobody Wed Jun 24 21:39:43 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) client-ip=38.145.34.151; 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 38.145.34.151 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=1781534271; cv=none; d=zohomail.com; s=zohoarc; b=gCYcnLSI2wOP5EaELHr0YeiqD2DM0B5+1zTvtK5/M0yY9LX8O5TA1Ca16Jo2WboodmspcBCIAHpDVJ6BV+7HYSUOzNUwCQIsSwcEk4HVms3Tmu+XCPyB5FEUIT5FKi7/Gic988jY4WMqJjDz3RwO5+yrobfgR07f1CC6PHz/7TM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781534271; 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=DL578zob/o5fyjGry1hjmbeo6uur8vzfbXglq5h4pQU=; b=awjUk60UjEz7w3rv66ji0dApPNd0QahUOPNM/q2QNp8M84vu01j+QIxiTXVmzduwFz3vACmOxSbI/K7ZlEWcaRB0mdtMIaRRqYLOtyDV4473tlTfzdLvIaZCidpT0XTG/pIlbf203sGiz1JRVszUW4eEDWg/lka3Rl/VUU4ZfJo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 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 [38.145.34.151]) by mx.zohomail.com with SMTPS id 1781534271559700.8123272311583; Mon, 15 Jun 2026 07:37:51 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 6AE0041C5A; Mon, 15 Jun 2026 10:37:50 -0400 (EDT) Received: from [172.19.199.4] (unknown [10.16.107.18]) by lists.libvirt.org (Postfix) with ESMTP id 9352C43E38; Mon, 15 Jun 2026 10:25:29 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 9FB9B41D29; Mon, 15 Jun 2026 10:24:45 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.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 DD95241B80 for ; Mon, 15 Jun 2026 10:24:24 -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-206-FvMmvxn2ODC4AbAAEqgXdw-1; Mon, 15 Jun 2026 10:24:23 -0400 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (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 692CE1800581 for ; Mon, 15 Jun 2026 14:24:22 +0000 (UTC) Received: from speedmetal.lan (unknown [10.44.22.21]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 9C8331955BC1 for ; Mon, 15 Jun 2026 14:24:21 +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=-2.7 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H5, RCVD_IN_MSPIKE_WL,SPF_HELO_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=1781533464; 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=DL578zob/o5fyjGry1hjmbeo6uur8vzfbXglq5h4pQU=; b=HFsWnguqdZXRZ4i8FkVR6QGDD2TKvCzsfMA4oyAAc4HYPJL9cAp2qEphVsJ+ENJsa2Me1K gjilsY4agdOT03hSZbi/OQ2c8tMhS7+YYjPckgH31EfX0fr5XXNvD9zbd4jUKsFH3WHjb7 YM0+A69nGXIvhT2kepFLZOEYee4buhc= X-MC-Unique: FvMmvxn2ODC4AbAAEqgXdw-1 X-Mimecast-MFC-AGG-ID: FvMmvxn2ODC4AbAAEqgXdw_1781533462 To: devel@lists.libvirt.org Subject: [PATCH 10/14] lockd driver: Allow registering additional lockspaces for manual s Date: Mon, 15 Jun 2026 16:24:04 +0200 Message-ID: <70d116fa338018e617bfbfc0674d29c3ed3bd163.1781533237.git.pkrempa@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: g43EEcufAPfZvyDHjssvzoBoniYbPk48yQF7RvDkPYg_1781533462 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: 6F2NIKHWPFBJXSE54EFXMP3UKSUSRUCK X-Message-ID-Hash: 6F2NIKHWPFBJXSE54EFXMP3UKSUSRUCK 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: 1781534272753158500 Content-Type: text/plain; charset="utf-8" From: Peter Krempa Add configuration option so additional lockspaces can be registered. These are useful to use manual , which can't be used on the default approach of registering the lease against a file. With this it's also now possible to use virtlockd in manual mode (disabling auto_disk_leases). Signed-off-by: Peter Krempa --- src/locking/libvirt_lockd.aug | 8 ++++++++ src/locking/lock_driver_lockd.c | 13 +++++++++++++ src/locking/lockd.conf | 10 ++++++++++ src/locking/test_libvirt_lockd.aug.in | 4 ++++ 4 files changed, 35 insertions(+) diff --git a/src/locking/libvirt_lockd.aug b/src/locking/libvirt_lockd.aug index 8cdb71a8a4..8f4fbb5713 100644 --- a/src/locking/libvirt_lockd.aug +++ b/src/locking/libvirt_lockd.aug @@ -7,13 +7,20 @@ module Libvirt_lockd =3D let value_sep =3D del /[ \t]*=3D[ \t]*/ " =3D " let indent =3D del /[ \t]*/ "" + let array_sep =3D del /,[ \t\n]*/ ", " + let array_start =3D del /\[[ \t\n]*/ "[ " + let array_end =3D del /\]/ "]" + let str_val =3D del /\"/ "\"" . store /[^\"]*/ . del /\"/ "\"" let bool_val =3D store /0|1/ let int_val =3D store /[0-9]+/ + let str_array_element =3D [ seq "el" . str_val ] . del /[ \t\n]*/ "" + let str_array_val =3D counter "el" . array_start . ( str_array_element = . ( array_sep . str_array_element ) * ) ? . array_end let str_entry (kw:string) =3D [ key kw . value_sep . str_val ] let bool_entry (kw:string) =3D [ key kw . value_sep . bool_val ] let int_entry (kw:string) =3D [ key kw . value_sep . int_val ] + let str_array_entry (kw:string) =3D [ key kw . value_sep . str_array_va= l ] (* Each entry in the config is one of the following three ... *) @@ -22,6 +29,7 @@ module Libvirt_lockd =3D | str_entry "file_lockspace_dir" | str_entry "lvm_lockspace_dir" | str_entry "scsi_lockspace_dir" + | str_array_entry "extra_lockspace_dirs" let comment =3D [ label "#comment" . del /#[ \t]*/ "# " . store /([^ \= t\n][^\n]*)?/ . del /\n/ "\n" ] let empty =3D [ label "#empty" . eol ] diff --git a/src/locking/lock_driver_lockd.c b/src/locking/lock_driver_lock= d.c index a3bb285eec..09149bded5 100644 --- a/src/locking/lock_driver_lockd.c +++ b/src/locking/lock_driver_lockd.c @@ -74,6 +74,8 @@ struct _virLockManagerLockDaemonDriver { char *fileLockSpaceDir; char *lvmLockSpaceDir; char *scsiLockSpaceDir; + + char **extraLockSpaceDirs; }; static virLockManagerLockDaemonDriver *driver; @@ -111,6 +113,10 @@ static int virLockManagerLockDaemonLoadConfig(const ch= ar *configFile) if (virConfGetValueBool(conf, "require_lease_for_disks", &driver->requ= ireLeaseForDisks) < 0) return -1; + if (virConfGetValueStringList(conf, "extra_lockspace_dirs", false, + &driver->extraLockSpaceDirs) < 0) + return -1; + return 0; } @@ -288,6 +294,7 @@ static int virLockManagerLockDaemonInit(unsigned int ve= rsion, const char *configFile, unsigned int flags) { + char **n; VIR_DEBUG("version=3D%u configFile=3D%s flags=3D0x%x", version, NULLST= R(configFile), flags); virCheckFlags(0, -1); @@ -317,6 +324,11 @@ static int virLockManagerLockDaemonInit(unsigned int v= ersion, goto error; } + for (n =3D driver->extraLockSpaceDirs; n && *n; n++) { + if (virLockManagerLockDaemonSetupLockspace(*n) < 0) + goto error; + } + return 0; error: @@ -332,6 +344,7 @@ static int virLockManagerLockDaemonDeinit(void) VIR_FREE(driver->scsiLockSpaceDir); VIR_FREE(driver->lvmLockSpaceDir); VIR_FREE(driver->fileLockSpaceDir); + g_strfreev(driver->extraLockSpaceDirs); VIR_FREE(driver); return 0; diff --git a/src/locking/lockd.conf b/src/locking/lockd.conf index fa437604e6..ed7703ee06 100644 --- a/src/locking/lockd.conf +++ b/src/locking/lockd.conf @@ -65,3 +65,13 @@ # storage. # #scsi_lockspace_dir =3D "/var/lib/libvirt/lockd/scsivolumes" + + +# +# Additional lockspaces used for manual locks via the element. +# +# Typically these directories would be located on a shared +# filesystem visible to all hosts accessing the same +# storage. +# +#extra_lockspace_dirs =3D [ "/custom/lockspace1", "/custom/lockspace2" ] diff --git a/src/locking/test_libvirt_lockd.aug.in b/src/locking/test_libvi= rt_lockd.aug.in index 0f3b57eb34..249f765916 100644 --- a/src/locking/test_libvirt_lockd.aug.in +++ b/src/locking/test_libvirt_lockd.aug.in @@ -7,3 +7,7 @@ module Test_libvirt_lockd =3D { "file_lockspace_dir" =3D "/var/lib/libvirt/lockd/files" } { "lvm_lockspace_dir" =3D "/var/lib/libvirt/lockd/lvmvolumes" } { "scsi_lockspace_dir" =3D "/var/lib/libvirt/lockd/scsivolumes" } +{ "extra_lockspace_dirs" + { "1" =3D "/custom/lockspace1" } + { "2" =3D "/custom/lockspace2" } +} --=20 2.54.0 From nobody Wed Jun 24 21:39:43 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) client-ip=38.145.34.151; 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 38.145.34.151 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=1781534341; cv=none; d=zohomail.com; s=zohoarc; b=g9sY0CSOrWPyS7YrJnMnCn09R+J2iGCYuBYYS2db8V/MlUDLvzLGJlpsj4sSOg7sf2Gy6q5nmYKbVMwmAHKhm9A3mGSOBmQqyql4gdJSCNoFBvTyHLSDEWiVSVMFiMG8yMplhDkCICqQHt+ackXAbre/Aj4LDBIsyGWzgBWO9cM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781534341; 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=01yEFP0BzF/8ri8sN03L01VQyV48NRykjvYa+bfzXkY=; b=dKfQMB/7MC9VdI7ZJ0oNL6ByN3RQZM7X3TFZYwX3NyWxqw4YMTg3x8lwTvVme8g9QCMwz9hTPV+Nx/kklmrBfL10YbYg1EGGzvRw+PV2BNQgwBBlcYAjpGkUgbmsCQ5Ci8vj0dnbQwoVNkEPBNTskAo9lfUymVKm3BINItU7OAY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 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 [38.145.34.151]) by mx.zohomail.com with SMTPS id 1781534341271145.84135889830986; Mon, 15 Jun 2026 07:39:01 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 21A6341BD1; Mon, 15 Jun 2026 10:39:00 -0400 (EDT) Received: from [172.19.199.4] (unknown [10.16.107.18]) by lists.libvirt.org (Postfix) with ESMTP id 89F4641CE2; Mon, 15 Jun 2026 10:25:34 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 6940D41D43; Mon, 15 Jun 2026 10:24:49 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.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 00F7A41C13 for ; Mon, 15 Jun 2026 10:24:25 -0400 (EDT) Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-372-ROkjhXSqMqqIelvW3xUdEA-1; Mon, 15 Jun 2026 10:24:24 -0400 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (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-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 881C51954B3A for ; Mon, 15 Jun 2026 14:24:23 +0000 (UTC) Received: from speedmetal.lan (unknown [10.44.22.21]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id D0F7B1955BC1 for ; Mon, 15 Jun 2026 14:24:22 +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=0.6 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H5, RCVD_IN_MSPIKE_WL,RCVD_IN_SBL_CSS,SPF_HELO_PASS autolearn=no autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781533465; 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=01yEFP0BzF/8ri8sN03L01VQyV48NRykjvYa+bfzXkY=; b=GYyulqKgGeIfO/ray/1iCmlAWnlQdF7VOPFwZSiUIpaWbyXdSSn6jOfdluNRVqxqijGe/H bFGbSodl4Ao4v+ncAjXV3dZvqBL6EfKgbJ7k6jkXVb1bNQIfNRYyqax9MPeHrpNr8GlNLm +OxWS/pV68c49h5zbP9tjPHfZTq3J60= X-MC-Unique: ROkjhXSqMqqIelvW3xUdEA-1 X-Mimecast-MFC-AGG-ID: ROkjhXSqMqqIelvW3xUdEA_1781533463 To: devel@lists.libvirt.org Subject: [PATCH 11/14] qemu: hotplug: Don't acquire lock on hotplugged when VM is paused Date: Mon, 15 Jun 2026 16:24:05 +0200 Message-ID: <4b9486e665fda4a978f723e92efdc1d8c37384b4.1781533237.git.pkrempa@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: volyfyBhCmsL1dHHwm954kEEIil9offQaCLQY59REng_1781533463 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: TLYCDWEBEJSLL3VGWZGBAZWTQFKGSR42 X-Message-ID-Hash: TLYCDWEBEJSLL3VGWZGBAZWTQFKGSR42 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: 1781534343188158500 Content-Type: text/plain; charset="utf-8" From: Peter Krempa Locking the on hotplug into a paused VM will prevent the VM from being resumed since the resource is already locked: $ virsh start cd --paused Domain 'cd' started $ virsh attach-device --live cd lease2.xml Device attached successfully $ virsh resume cd error: Failed to resume domain 'cd' error: resource busy: Lockspace resource 'qw2' is locked Don't lock the , just insert it when the VM is paused. Similarly don't try to unlock it on hot-unplug when the VM is paused and thus the resource is unlocked. Closes: https://gitlab.com/libvirt/libvirt/-/work_items/877 Signed-off-by: Peter Krempa --- src/qemu/qemu_hotplug.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index 3d25b4c7d0..31726daf62 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -3421,8 +3421,12 @@ qemuDomainAttachLease(virQEMUDriver *driver, { g_autoptr(virQEMUDriverConfig) cfg =3D virQEMUDriverGetConfig(driver); - if (virDomainLockLeaseAttach(driver->lockManager, cfg->uri, vm, lease)= < 0) - return -1; + /* If the VM is paused or in another state we don't actually want to + * lock the lease yet. It will be done when the VM is resumed */ + if (virDomainObjGetState(vm, NULL) =3D=3D VIR_DOMAIN_RUNNING) { + if (virDomainLockLeaseAttach(driver->lockManager, cfg->uri, vm, le= ase) < 0) + return -1; + } virDomainLeaseInsert(vm->def, lease); @@ -6462,8 +6466,12 @@ qemuDomainDetachDeviceLease(virQEMUDriver *driver, return -1; } - if (virDomainLockLeaseDetach(driver->lockManager, vm, lease) < 0) - return -1; + /* If the VM is paused or in another state we don't actually want to + * release the lease because it's no longer locked. */ + if (virDomainObjGetState(vm, NULL) =3D=3D VIR_DOMAIN_RUNNING) { + if (virDomainLockLeaseDetach(driver->lockManager, vm, lease) < 0) + return -1; + } det_lease =3D virDomainLeaseRemoveAt(vm->def, idx); virDomainLeaseDefFree(det_lease); --=20 2.54.0 From nobody Wed Jun 24 21:39:43 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) client-ip=38.145.34.151; 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 38.145.34.151 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=1781534507; cv=none; d=zohomail.com; s=zohoarc; b=cwX2CPo0lMp0vVTJOIF+YGkg7fmUsfI45VFbceQMldIMMrvKNUn8R6pI9JLogd3kbkZbxpqvfnBsfiXbGXJQnq3w3BpRZ1hDnQcOzb1jsZjTPUCD90nMiom5ayOUDDNaGillN3bjQsYUe9Ib6Su4myx8z4flBFsZvEXZHHzf1SA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781534507; 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=sGbaNCgCcWwGi8C4iHgNvAAEAVy6AkKYzvhhCYZUo6M=; b=mvog1zgCzA59PkxDGHLJMoLiPHdxw1iGLrR/cJJzFL1wCWa4w2oqRHFS96I1Iy5jgodjLROf5AfuHEJoawUma+qA/fa+6ASq0oewmBaXs9mrY2g5gp7E7oSdAZNXtEfMk2SD4v6DmW13/wfrZjHtkD62KVHcjE6iivCRYcZWUvU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 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 [38.145.34.151]) by mx.zohomail.com with SMTPS id 1781534507395149.51502609373256; Mon, 15 Jun 2026 07:41:47 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 2C1A541976; Mon, 15 Jun 2026 10:41:46 -0400 (EDT) Received: from [172.19.199.4] (unknown [10.16.107.18]) by lists.libvirt.org (Postfix) with ESMTP id 9E7E143F23; Mon, 15 Jun 2026 10:25:43 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id F282041DFB; Mon, 15 Jun 2026 10:25:04 -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 257B541C49 for ; Mon, 15 Jun 2026 10:24:28 -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-617-0nBju-bCOjur2zU3dpTgNA-1; Mon, 15 Jun 2026 10:24:25 -0400 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (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 9F1601801BDD for ; Mon, 15 Jun 2026 14:24:24 +0000 (UTC) Received: from speedmetal.lan (unknown [10.44.22.21]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id ED7991955BC1 for ; Mon, 15 Jun 2026 14:24:23 +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=-2.7 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL,SPF_HELO_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=1781533467; 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=sGbaNCgCcWwGi8C4iHgNvAAEAVy6AkKYzvhhCYZUo6M=; b=IOhrasdHCOvShs7EbYIT4xCZot1nsFjUqKCzYNf5Rw4z9CWvNAhEdlMlH0pe4B3l5OIIhA PmWqfW15+u1qbKtQoKG2Do0+4PTsmO3blG8mTt23j1z+MVl0S9DwTaScvnEQ0O7cb4bP9x 3kSyUCKHucNi6PSFLwxyqsdWssB0OF8= X-MC-Unique: 0nBju-bCOjur2zU3dpTgNA-1 X-Mimecast-MFC-AGG-ID: 0nBju-bCOjur2zU3dpTgNA_1781533464 To: devel@lists.libvirt.org Subject: [PATCH 12/14] locking: Add API to query whether automatic disk leases are enabled Date: Mon, 15 Jun 2026 16:24:06 +0200 Message-ID: <102d03cc5bb69fdf6576adff3ff0bb6da87ceb77.1781533237.git.pkrempa@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: nApZcvH6rDko7xMFO_uOecHB4ZbGWbCMNH56chiye8Y_1781533464 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: JGCRS5JAIZBKTGB7AKNRGBKHFJ5NMCET X-Message-ID-Hash: JGCRS5JAIZBKTGB7AKNRGBKHFJ5NMCET 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: 1781534508220158500 Content-Type: text/plain; charset="utf-8" From: Peter Krempa Blockjobs break when automatic disk locking is in use. Add an API to query whether that's the case so that we can forbid blockjobs. Signed-off-by: Peter Krempa --- src/libvirt_private.syms | 1 + src/locking/lock_driver.h | 10 ++++++++++ src/locking/lock_driver_lockd.c | 9 +++++++++ src/locking/lock_driver_sanlock.c | 9 +++++++++ src/locking/lock_manager.c | 10 ++++++++++ src/locking/lock_manager.h | 2 ++ 6 files changed, 41 insertions(+) diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index be073ced43..38375109f8 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -1838,6 +1838,7 @@ virLockManagerAddResource; virLockManagerFree; virLockManagerInquire; virLockManagerNew; +virLockManagerPluginAutoDiskLeases; virLockManagerPluginGetName; virLockManagerPluginNew; virLockManagerPluginRef; diff --git a/src/locking/lock_driver.h b/src/locking/lock_driver.h index 087a918882..ded6090033 100644 --- a/src/locking/lock_driver.h +++ b/src/locking/lock_driver.h @@ -281,6 +281,14 @@ typedef int (*virLockDriverInquire)(virLockManager *ma= n, unsigned int flags); +/** + * virLockDriverAutoDiskLeases: + * + * Returns 'true' if automatic disk leases are in use. + */ +typedef bool (*virLockDriverAutoDiskLeases)(void); + + struct _virLockManager { virLockDriver *driver; void *privateData; @@ -309,4 +317,6 @@ struct _virLockDriver { virLockDriverAcquire drvAcquire; virLockDriverRelease drvRelease; virLockDriverInquire drvInquire; + + virLockDriverAutoDiskLeases drvAutoDiskLeases; }; diff --git a/src/locking/lock_driver_lockd.c b/src/locking/lock_driver_lock= d.c index 09149bded5..0a03eeeada 100644 --- a/src/locking/lock_driver_lockd.c +++ b/src/locking/lock_driver_lockd.c @@ -775,6 +775,13 @@ static int virLockManagerLockDaemonInquire(virLockMana= ger *lock G_GNUC_UNUSED, return 0; } + +static bool virLockManagerLockDaemonAutoDiskLease(void) +{ + return driver->autoDiskLease; +} + + virLockDriver virLockDriverImpl =3D { .version =3D VIR_LOCK_MANAGER_VERSION, @@ -792,4 +799,6 @@ virLockDriver virLockDriverImpl =3D .drvRelease =3D virLockManagerLockDaemonRelease, .drvInquire =3D virLockManagerLockDaemonInquire, + + .drvAutoDiskLeases =3D virLockManagerLockDaemonAutoDiskLease, }; diff --git a/src/locking/lock_driver_sanlock.c b/src/locking/lock_driver_sa= nlock.c index a07f3652c1..2e4cfaf548 100644 --- a/src/locking/lock_driver_sanlock.c +++ b/src/locking/lock_driver_sanlock.c @@ -1098,6 +1098,13 @@ static int virLockManagerSanlockInquire(virLockManag= er *lock, return 0; } + +static bool virLockManagerSandlocAutoDiskLease(void) +{ + return sanlockDriver->autoDiskLease; +} + + virLockDriver virLockDriverImpl =3D { .version =3D VIR_LOCK_MANAGER_VERSION, @@ -1115,4 +1122,6 @@ virLockDriver virLockDriverImpl =3D .drvAcquire =3D virLockManagerSanlockAcquire, .drvRelease =3D virLockManagerSanlockRelease, .drvInquire =3D virLockManagerSanlockInquire, + + .drvAutoDiskLeases =3D virLockManagerSandlocAutoDiskLease, }; diff --git a/src/locking/lock_manager.c b/src/locking/lock_manager.c index 6f5a7efdbc..70b1c6c286 100644 --- a/src/locking/lock_manager.c +++ b/src/locking/lock_manager.c @@ -277,6 +277,16 @@ virLockDriver *virLockManagerPluginGetDriver(virLockMa= nagerPlugin *plugin) return plugin->driver; } +bool virLockManagerPluginAutoDiskLeases(virLockManagerPlugin *plugin) +{ + VIR_DEBUG("plugin=3D%p", plugin); + + if (!plugin->driver->drvAutoDiskLeases()) + return false; + + return plugin->driver->drvAutoDiskLeases(); +} + /** * virLockManagerNew: * @driver: the lock manager implementation to use diff --git a/src/locking/lock_manager.h b/src/locking/lock_manager.h index 774931f7d6..814a8cabde 100644 --- a/src/locking/lock_manager.h +++ b/src/locking/lock_manager.h @@ -38,6 +38,8 @@ bool virLockManagerPluginUsesState(virLockManagerPlugin *= plugin); virLockDriver *virLockManagerPluginGetDriver(virLockManagerPlugin *plugin); +bool virLockManagerPluginAutoDiskLeases(virLockManagerPlugin *plugin); + virLockManager *virLockManagerNew(virLockDriver *driver, unsigned int type, size_t nparams, --=20 2.54.0 From nobody Wed Jun 24 21:39:43 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) client-ip=38.145.34.151; 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 38.145.34.151 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=1781534443; cv=none; d=zohomail.com; s=zohoarc; b=EISWSuav+g1nMlOPZ1OlrAxhkJUYpVesauYFH6fpOgHKMMR2VyZAYU11B/aZiUlN8XyYqNCv5qERWc/0DeyAetiezliJ4mh037wlqzIk/BDCFfZHVEUhBlaDB6zgd70Ywq9w3nmXUAYlj1y83tkzig6S5YnZaNNVF+UBEzGStKQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781534443; 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=gZ3sODubbXN2x/yezJk/ctQ+iGByWyV/z4myrm0+FGA=; b=ZsK+zP4E2hjEpNha1+9RB7jYH3Iqra8JYI7e294lvDHTGih/h3nnxEJg3FgAgGUcJEM0AXKYAVY8edBAXTNtv3LM0DmabYwxCF2aHtsgJEAJHtrXYySxrNXfs58TTM1xtOvqNPHCNSsHadZdqVjyjgHHF1blKdbgw5QRxR4ABiQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 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 [38.145.34.151]) by mx.zohomail.com with SMTPS id 1781534443484394.75321248284376; Mon, 15 Jun 2026 07:40:43 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 391FB41B26; Mon, 15 Jun 2026 10:40:42 -0400 (EDT) Received: from [172.19.199.4] (unknown [10.16.107.18]) by lists.libvirt.org (Postfix) with ESMTP id 1E7D443EE5; Mon, 15 Jun 2026 10:25:39 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id CB9BE41CC6; Mon, 15 Jun 2026 10:25:03 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.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 10DD441C77 for ; Mon, 15 Jun 2026 10:24:28 -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-504-rPXPWgAYNKa5207V6blBqw-1; Mon, 15 Jun 2026 10:24:26 -0400 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (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 B4C7A18002C5 for ; Mon, 15 Jun 2026 14:24:25 +0000 (UTC) Received: from speedmetal.lan (unknown [10.44.22.21]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 0FFC51955BC1 for ; Mon, 15 Jun 2026 14:24:24 +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=-2.7 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H5, RCVD_IN_MSPIKE_WL,SPF_HELO_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=1781533467; 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=gZ3sODubbXN2x/yezJk/ctQ+iGByWyV/z4myrm0+FGA=; b=FBvQT42hn6GftgHZQn3UGj+2jkZmxh0g1uBAQicqMJVi8HSBmfQcISUyqzq/6xtyXZLf0Y MIwIQWmQv7ERdNT9VwHfMhNTki76YFmsI3tbc1wCZAqYh48xFfuld70cQrPOiCDTrPWR0n Qyjdd/n0mTXTTT7HvRMLYLk5LAUx23M= X-MC-Unique: rPXPWgAYNKa5207V6blBqw-1 X-Mimecast-MFC-AGG-ID: rPXPWgAYNKa5207V6blBqw_1781533465 To: devel@lists.libvirt.org Subject: [PATCH 13/14] qemu: Refuse block jobs if automatic disk leases are enabled in the locking plugin Date: Mon, 15 Jun 2026 16:24:07 +0200 Message-ID: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: lQC_uLlep-hz3U3BIUoqS7pNKRzCCWbyPujVd6-p3OE_1781533465 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: 3A7XXA6WA4JT3Y42KP6B4SFA7W6KRZSG X-Message-ID-Hash: 3A7XXA6WA4JT3Y42KP6B4SFA7W6KRZSG 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: 1781534446025158500 Content-Type: text/plain; charset="utf-8" From: Peter Krempa The current design of the lock drivers holds the locks on the disk images only while the VM is running. There's no concept of 'read' locks. Block jobs can be used also when the VM is paused which is when the automatic locks are released. Allowing block jobs would either corrupt the data for anyone else holding the lock or the job could read garbage if another VM is using it in write mode. As of such there's no way libvirt can declare that block jobs are compatible with what we want to declare in regards to locking. Add a statement to the lock driver config that this is incompatible with blockjobs and forbid blockjobs when disk locks are in use. While the locking backend could be improved, there isn't enough justification to spend that amount of work required especially since now qemu has image locking which includes read locks. Signed-off-by: Peter Krempa --- src/locking/lockd.conf | 4 ++++ src/locking/sanlock.conf | 4 ++++ src/qemu/qemu_backup.c | 2 +- src/qemu/qemu_block.c | 2 +- src/qemu/qemu_checkpoint.c | 2 +- src/qemu/qemu_domain.c | 9 ++++++++- src/qemu/qemu_domain.h | 3 ++- src/qemu/qemu_driver.c | 4 ++-- src/qemu/qemu_snapshot.c | 25 +++++++++++++++---------- 9 files changed, 38 insertions(+), 17 deletions(-) diff --git a/src/locking/lockd.conf b/src/locking/lockd.conf index ed7703ee06..a83be8b599 100644 --- a/src/locking/lockd.conf +++ b/src/locking/lockd.conf @@ -4,6 +4,10 @@ # application wishes to instead manually manage leases in # the guest XML, then this parameter can be disabled # +# Beware that block jobs (external disk snapshots, pull, +# commit, backup) do not work when automatic disk leases +# are enabled. +# #auto_disk_leases =3D 0 # diff --git a/src/locking/sanlock.conf b/src/locking/sanlock.conf index 3c356bef9c..743921f6c3 100644 --- a/src/locking/sanlock.conf +++ b/src/locking/sanlock.conf @@ -10,6 +10,10 @@ # # Uncomment this to enable automatic lease creation. # +# Beware that block jobs (external disk snapshots, pull, +# commit, backup) do not work when automatic disk leases +# are enabled. +# # NB: the 'host_id' parameter must be set if enabling this # #auto_disk_leases =3D 1 diff --git a/src/qemu/qemu_backup.c b/src/qemu/qemu_backup.c index a0544c83dc..45f8544957 100644 --- a/src/qemu/qemu_backup.c +++ b/src/qemu/qemu_backup.c @@ -287,7 +287,7 @@ qemuBackupDiskPrepareDataOne(virDomainObj *vm, return -1; } - if (!qemuDomainDiskBlockJobIsSupported(dd->domdisk)) + if (!qemuDomainDiskBlockJobIsSupported(priv->driver, dd->domdisk)) return -1; if (dd->store->format =3D=3D VIR_STORAGE_FILE_NONE) { diff --git a/src/qemu/qemu_block.c b/src/qemu/qemu_block.c index 324c2635b4..ce957c2e05 100644 --- a/src/qemu/qemu_block.c +++ b/src/qemu/qemu_block.c @@ -3686,7 +3686,7 @@ qemuBlockCommit(virDomainObj *vm, if (virDomainObjCheckActive(vm) < 0) return NULL; - if (!qemuDomainDiskBlockJobIsSupported(disk)) + if (!qemuDomainDiskBlockJobIsSupported(driver, disk)) return NULL; if (virStorageSourceIsEmpty(disk->src)) { diff --git a/src/qemu/qemu_checkpoint.c b/src/qemu/qemu_checkpoint.c index f063b5a5c0..705086d88e 100644 --- a/src/qemu/qemu_checkpoint.c +++ b/src/qemu/qemu_checkpoint.c @@ -371,7 +371,7 @@ qemuCheckpointPrepare(virQEMUDriver *driver, return -1; } - if (!qemuDomainDiskBlockJobIsSupported(vm->def->disks[i])) + if (!qemuDomainDiskBlockJobIsSupported(priv->driver, vm->def->disk= s[i])) return -1; } diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 2f1d220966..3751deb85d 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -10513,7 +10513,8 @@ qemuDomainDiskHasLatencyHistogram(virDomainDiskDef = *disk) * Note that this does not verify whether other block jobs are running etc. */ bool -qemuDomainDiskBlockJobIsSupported(virDomainDiskDef *disk) +qemuDomainDiskBlockJobIsSupported(virQEMUDriver *driver, + virDomainDiskDef *disk) { if (qemuDiskBusIsSD(disk->bus)) { virReportError(VIR_ERR_OPERATION_UNSUPPORTED, @@ -10536,6 +10537,12 @@ qemuDomainDiskBlockJobIsSupported(virDomainDiskDef= *disk) return false; } + if (virLockManagerPluginAutoDiskLeases(driver->lockManager)) { + virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s", + _("block jobs are not supported when automatic disk= locking is activated via sanlock/lockd")); + return false; + } + return true; } diff --git a/src/qemu/qemu_domain.h b/src/qemu/qemu_domain.h index 24e62dd2e7..da1914979c 100644 --- a/src/qemu/qemu_domain.h +++ b/src/qemu/qemu_domain.h @@ -1079,7 +1079,8 @@ bool qemuDomainDiskHasLatencyHistogram(virDomainDiskDef *disk); bool -qemuDomainDiskBlockJobIsSupported(virDomainDiskDef *disk); +qemuDomainDiskBlockJobIsSupported(virQEMUDriver *driver, + virDomainDiskDef *disk); int qemuDomainDefNumaCPUsRectify(virDomainDef *def, diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 544955ecf9..d271853515 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -14015,7 +14015,7 @@ qemuDomainBlockPullCommon(virDomainObj *vm, if (qemuDomainDiskBlockJobIsActive(disk)) goto endjob; - if (!qemuDomainDiskBlockJobIsSupported(disk)) + if (!qemuDomainDiskBlockJobIsSupported(priv->driver, disk)) goto endjob; if (base && @@ -14543,7 +14543,7 @@ qemuDomainBlockCopyCommon(virDomainObj *vm, if (qemuDomainDiskBlockJobIsActive(disk)) goto endjob; - if (!qemuDomainDiskBlockJobIsSupported(disk)) + if (!qemuDomainDiskBlockJobIsSupported(priv->driver, disk)) goto endjob; if (virStorageSourceIsFD(mirror)) { diff --git a/src/qemu/qemu_snapshot.c b/src/qemu/qemu_snapshot.c index 07548ca62e..988ecb965a 100644 --- a/src/qemu/qemu_snapshot.c +++ b/src/qemu/qemu_snapshot.c @@ -726,7 +726,8 @@ qemuSnapshotPrepareDiskExternalInactive(virDomainSnapsh= otDiskDef *snapdisk, static int -qemuSnapshotPrepareDiskExternalActive(virDomainSnapshotDiskDef *snapdisk, +qemuSnapshotPrepareDiskExternalActive(virQEMUDriver *driver, + virDomainSnapshotDiskDef *snapdisk, virDomainDiskDef *domdisk) { virStorageType actualType =3D virStorageSourceGetActualType(snapdisk->= src); @@ -740,7 +741,7 @@ qemuSnapshotPrepareDiskExternalActive(virDomainSnapshot= DiskDef *snapdisk, return -1; } - if (!qemuDomainDiskBlockJobIsSupported(domdisk)) + if (!qemuDomainDiskBlockJobIsSupported(driver, domdisk)) return -1; switch (actualType) { @@ -771,7 +772,8 @@ qemuSnapshotPrepareDiskExternalActive(virDomainSnapshot= DiskDef *snapdisk, static int -qemuSnapshotPrepareDiskExternal(virDomainDiskDef *disk, +qemuSnapshotPrepareDiskExternal(virQEMUDriver *driver, + virDomainDiskDef *disk, virDomainSnapshotDiskDef *snapdisk, bool active, bool reuse) @@ -805,7 +807,7 @@ qemuSnapshotPrepareDiskExternal(virDomainDiskDef *disk, if (qemuSnapshotPrepareDiskExternalInactive(snapdisk, disk) < 0) return -1; } else { - if (qemuSnapshotPrepareDiskExternalActive(snapdisk, disk) < 0) + if (qemuSnapshotPrepareDiskExternalActive(driver, snapdisk, disk) = < 0) return -1; } @@ -937,6 +939,7 @@ qemuSnapshotPrepare(virDomainObj *vm, unsigned int *flags) { size_t i; + qemuDomainObjPrivate *priv =3D vm->privateData; bool active =3D virDomainObjIsActive(vm); bool reuse =3D (*flags & VIR_DOMAIN_SNAPSHOT_CREATE_REUSE_EXT) !=3D 0; bool found_internal =3D false; @@ -977,7 +980,8 @@ qemuSnapshotPrepare(virDomainObj *vm, break; case VIR_DOMAIN_SNAPSHOT_LOCATION_EXTERNAL: - if (qemuSnapshotPrepareDiskExternal(dom_disk, disk, active, re= use) < 0) + if (qemuSnapshotPrepareDiskExternal(priv->driver, dom_disk, di= sk, + active, reuse) < 0) return -1; external++; @@ -2445,6 +2449,7 @@ qemuSnapshotRevertExternalPrepare(virDomainObj *vm, virDomainDef *inactiveConfig, qemuSnapshotRevertMemoryData *memdata) { + qemuDomainObjPrivate *priv =3D vm->privateData; size_t i; bool active =3D virDomainObjIsActive(vm); virDomainDef *domdef =3D NULL; @@ -2477,20 +2482,20 @@ qemuSnapshotRevertExternalPrepare(virDomainObj *vm, if (snapdisk->snapshot !=3D VIR_DOMAIN_SNAPSHOT_LOCATION_EXTERNAL) continue; - if (qemuSnapshotPrepareDiskExternal(domdisk, snapdisk, active, fal= se) < 0) + if (qemuSnapshotPrepareDiskExternal(priv->driver, domdisk, snapdis= k, + active, false) < 0) return -1; } if (memdata && snapdef->memorysnapshotfile) { - virQEMUDriver *driver =3D ((qemuDomainObjPrivate *) vm->privateDat= a)->driver; g_autoptr(virDomainDef) savedef =3D NULL; memdata->path =3D snapdef->memorysnapshotfile; - if (qemuSaveImageGetMetadata(driver, NULL, memdata->path, NULL, NU= LL, + if (qemuSaveImageGetMetadata(priv->driver, NULL, memdata->path, NU= LL, NULL, &savedef, &memdata->data) < 0) return -1; - memdata->fd =3D qemuSaveImageOpen(driver, memdata->path, + memdata->fd =3D qemuSaveImageOpen(priv->driver, memdata->path, false, &memdata->wrapperFd, false); if (memdata->fd < 0) return -1; @@ -2500,7 +2505,7 @@ qemuSnapshotRevertExternalPrepare(virDomainObj *vm, if (qemuSaveImageFDSkipHeader(memdata->fd) < 0) return -1; - if (!virDomainDefCheckABIStability(savedef, domdef, driver->xmlopt= )) + if (!virDomainDefCheckABIStability(savedef, domdef, priv->driver->= xmlopt)) return -1; } --=20 2.54.0 From nobody Wed Jun 24 21:39:43 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) client-ip=38.145.34.151; 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 38.145.34.151 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=1781534576; cv=none; d=zohomail.com; s=zohoarc; b=Tv/B5JtzpWfqBzGYeP7h5gJHdPGFvTz8D7Ebg0FPNMUm2ZCO3FlCQ31zTBMSrYlmPFOmWqq4mPr8592Jnna9KlmFdgycX1CKwamuRPkXrMbWwc5JxXoDGeH5m/59+vAh7N09dwNzYUfndny/kZBHkVNYg2+Nz3WH7pfcV/iHszk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781534576; 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=6WFAkQWOQYqOxiz42Z+KS9AGEBIbEYwQAHfklWI3Zn4=; b=dpNbdyVF/a8F/sUHaQ2Qp3OkqRzIqEjpBRzXMjj0vrLtW3aoYK1EwCL9L135CgydqZZ+A++a3O8gi1Ia+7fZQhaO/QVPsLI4GK2y5sZUmKkAkMzvmNXVTgzxTBmtFfzqmkFLRgeySdt69Gd8kQ1lhEiVnCa28qi0mnsv76mPbGM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 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 [38.145.34.151]) by mx.zohomail.com with SMTPS id 1781534576390858.2607821302247; Mon, 15 Jun 2026 07:42:56 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 309EC41AC1; Mon, 15 Jun 2026 10:42:55 -0400 (EDT) Received: from [172.19.199.4] (unknown [10.16.107.18]) by lists.libvirt.org (Postfix) with ESMTP id 0DEC643F5A; Mon, 15 Jun 2026 10:25:49 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 6835C41E68; Mon, 15 Jun 2026 10:25:13 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.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 D41CF41AB1 for ; Mon, 15 Jun 2026 10:24:29 -0400 (EDT) Received: from mx-prod-mc-06.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-554-VrlLvFk2MX29Vo7E4Uc_Pg-1; Mon, 15 Jun 2026 10:24:27 -0400 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (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-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id CE40818001E3 for ; Mon, 15 Jun 2026 14:24:26 +0000 (UTC) Received: from speedmetal.lan (unknown [10.44.22.21]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 28B7F1955BC1 for ; Mon, 15 Jun 2026 14:24:25 +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=-2.7 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H5, RCVD_IN_MSPIKE_WL,SPF_HELO_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=1781533469; 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=6WFAkQWOQYqOxiz42Z+KS9AGEBIbEYwQAHfklWI3Zn4=; b=fYQ+ueumt1WgWA5GrRnSiIjiD+l5sYTi0Mz74STPEiaCt7kQA+WvgbpzLPYHR27ATurUAR tuI752QjcUE6iqRPTfakPPvHAvV8tJ1Lkuya4E6CCaljeNxMXniZnFi0WCoCTQJfTynYGD RFAUt4KlsHn7ux4mugjxJpXUNK/2jBg= X-MC-Unique: VrlLvFk2MX29Vo7E4Uc_Pg-1 X-Mimecast-MFC-AGG-ID: VrlLvFk2MX29Vo7E4Uc_Pg_1781533466 To: devel@lists.libvirt.org Subject: [PATCH 14/14] qemu: Fix lock manager usage for disks Date: Mon, 15 Jun 2026 16:24:08 +0200 Message-ID: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: OGmJkNlUrZkEZt1CXK_GRxDGFqXf_3W9Lo75wyvHTtM_1781533466 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: KZKGCOLJESY3CYR5HDQ7EZUFPBMKTIFO X-Message-ID-Hash: KZKGCOLJESY3CYR5HDQ7EZUFPBMKTIFO 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: 1781534576725158500 Content-Type: text/plain; charset="utf-8" From: Peter Krempa Since we only do image locking on disk level 'qemuDomainStorageSourceAccessModify' is not the correct place as that is used also from various places which partially modify the image state e.g. with blockjobs. Move the locking code only to disk hot(un)plug code paths and directly apply the same fix as with where we don't acquire the lock if the VM isn't running. Locking is then handled when resuming the VM. Signed-off-by: Peter Krempa --- src/qemu/qemu_domain.c | 12 ------------ src/qemu/qemu_hotplug.c | 34 +++++++++++++++++++++++++++++++++- 2 files changed, 33 insertions(+), 13 deletions(-) diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 3751deb85d..f6e36acb0f 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -6736,7 +6736,6 @@ qemuDomainStorageSourceAccessModify(virQEMUDriver *dr= iver, bool revoke_label =3D false; bool revoke_namespace =3D false; bool revoke_nvme =3D false; - bool revoke_lockspace =3D false; bool revoke_nbdkit =3D false; VIR_DEBUG("src=3D'%s' readonly=3D%d force_ro=3D%d force_rw=3D%d revoke= =3D%d chain=3D%d", @@ -6755,17 +6754,11 @@ qemuDomainStorageSourceAccessModify(virQEMUDriver *= driver, revoke_label =3D true; revoke_namespace =3D true; revoke_nvme =3D true; - revoke_lockspace =3D true; revoke_nbdkit =3D true; ret =3D 0; goto revoke; } - if (virDomainLockImageAttach(driver->lockManager, cfg->uri, vm, src) <= 0) - goto revoke; - - revoke_lockspace =3D true; - if (!(flags & QEMU_DOMAIN_STORAGE_SOURCE_ACCESS_MODIFY_ACCESS)) { if (qemuDomainStorageSourceAccessModifyNVMe(driver, vm, src, false= ) < 0) goto revoke; @@ -6826,11 +6819,6 @@ qemuDomainStorageSourceAccessModify(virQEMUDriver *d= river, if (revoke_nvme) qemuDomainStorageSourceAccessModifyNVMe(driver, vm, src, true); - if (revoke_lockspace) { - if (virDomainLockImageDetach(driver->lockManager, vm, src) < 0) - VIR_WARN("Unable to release lock on %s", srcstr); - } - if (revoke_nbdkit) qemuNbdkitStopStorageSource(src, vm, chain); diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index 31726daf62..64226438fa 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -612,6 +612,7 @@ qemuDomainChangeEjectableMedia(virQEMUDriver *driver, qemuDomainObjPrivate *priv =3D vm->privateData; virStorageSource *oldsrc =3D disk->src; qemuDomainDiskPrivate *diskPriv =3D QEMU_DOMAIN_DISK_PRIVATE(disk); + bool locked =3D false; int rc; if (diskPriv->blockjob && qemuBlockJobIsRunning(diskPriv->blockjob)) { @@ -634,6 +635,15 @@ qemuDomainChangeEjectableMedia(virQEMUDriver *driver, if (qemuDomainStorageSourceChainAccessAllow(driver, vm, newsrc) < 0) goto rollback; + /* If the VM is paused or in another state we don't actually want to + * lock the image yet. It will be done when the VM is resumed */ + if (virDomainObjGetState(vm, NULL) =3D=3D VIR_DOMAIN_RUNNING) { + if (virDomainLockImageAttach(driver->lockManager, cfg->uri, vm, ne= wsrc) < 0) + goto rollback; + + locked =3D true; + } + if (qemuHotplugAttachManagedPR(vm, newsrc, VIR_ASYNC_JOB_NONE) < 0) goto rollback; @@ -655,6 +665,9 @@ qemuDomainChangeEjectableMedia(virQEMUDriver *driver, rollback: ignore_value(qemuDomainStorageSourceChainAccessRevoke(driver, vm, news= rc)); + if (locked) + ignore_value(virDomainLockImageDetach(driver->lockManager, vm, new= src)); + qemuHotplugRemoveManagedPR(vm, newsrc, VIR_ASYNC_JOB_NONE); /* revert old image do the disk definition */ @@ -982,6 +995,7 @@ qemuDomainAttachDeviceDiskLiveInternal(virQEMUDriver *d= river, bool releaseUSB =3D false; bool releaseVirtio =3D false; bool releaseSeclabel =3D false; + bool releaseLock =3D false; int ret =3D -1; if (disk->device =3D=3D VIR_DOMAIN_DISK_DEVICE_FLOPPY) { @@ -1083,6 +1097,15 @@ qemuDomainAttachDeviceDiskLiveInternal(virQEMUDriver= *driver, releaseSeclabel =3D true; + /* If the VM is paused or in another state we don't actually want = to + * lock the image yet. It will be done when the VM is resumed */ + if (virDomainObjGetState(vm, NULL) =3D=3D VIR_DOMAIN_RUNNING) { + if (virDomainLockImageAttach(driver->lockManager, cfg->uri, vm= , disk->src) < 0) + goto cleanup; + + releaseLock =3D true; + } + if (qemuProcessPrepareHostStorageDisk(vm, disk) < 0) goto cleanup; @@ -1110,6 +1133,9 @@ qemuDomainAttachDeviceDiskLiveInternal(virQEMUDriver = *driver, if (releaseSeclabel) ignore_value(qemuDomainStorageSourceChainAccessRevoke(driver, = vm, disk->src)); + if (releaseLock) + ignore_value(virDomainLockImageDetach(driver->lockManager, vm,= disk->src)); + qemuHotplugRemoveManagedPR(vm, disk->src, VIR_ASYNC_JOB_NONE); } qemuDomainSecretDiskDestroy(disk); @@ -4895,9 +4921,15 @@ qemuDomainRemoveDiskDevice(virQEMUDriver *driver, qemuDomainReleaseDeviceAddress(vm, &disk->info); /* tear down disk security access */ - if (diskBackend) + if (diskBackend) { qemuDomainStorageSourceChainAccessRevoke(driver, vm, disk->src); + /* If the VM is paused or in another state the image is not locked= anymore */ + if (virDomainObjGetState(vm, NULL) =3D=3D VIR_DOMAIN_RUNNING) { + ignore_value(virDomainLockImageDetach(driver->lockManager, vm,= disk->src)); + } + } + qemuHotplugRemoveManagedPR(vm, disk->src, VIR_ASYNC_JOB_NONE); qemuNbdkitStopStorageSource(disk->src, vm, true); --=20 2.54.0