From nobody Sun Feb 8 17:41:55 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1565274517; cv=none; d=zoho.com; s=zohoarc; b=ZtVAaJjebLii8sH0aGyFAUBH+dQ7gSKyAa0Nd6SNcIbzZx+9/gY47eVYIMAW4UsjdzjH0Io1CnO78a7JGirmGVOduPMOmXhQ+nA8G8jbX4RvQg8yXM1tqx++JlnbIUoYzECH7rO/CT9+P7++0t5L/QbNVb0J+XtmkhaZn/lKO+I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1565274517; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=E0OCxoSPi0EhF97L1LljQ0vv4fYLq7g3fOQg161IFoY=; b=l4yZ1yxttATI0lqWCOz39u5/alkuNmFus053Pl05/LxITYXD0eyoXj1xUNQWt5bb5fVO16jEpPbKVhZGMxSW1rhgcZx+NaW2p0EhA96wd3MCcv0VTBVBWgcAy1gFsxYW+H3wokiBNA/1ePpU4aTUaxgwPBXlTvV7E/wcEYGNfYA= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1565274517048107.10969584960912; Thu, 8 Aug 2019 07:28:37 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id D09AD30A00D8; Thu, 8 Aug 2019 14:28:35 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id A8B125C226; Thu, 8 Aug 2019 14:28:35 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 6EBDD83542; Thu, 8 Aug 2019 14:28:35 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id x78EQquo017488 for ; Thu, 8 Aug 2019 10:26:52 -0400 Received: by smtp.corp.redhat.com (Postfix) id 1FC0A600CC; Thu, 8 Aug 2019 14:26:52 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.188]) by smtp.corp.redhat.com (Postfix) with ESMTPS id E82A46012A for ; Thu, 8 Aug 2019 14:26:48 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id 3AE9C1024EF; Thu, 8 Aug 2019 16:26:47 +0200 (CEST) From: Jiri Denemark To: libvir-list@redhat.com Date: Thu, 8 Aug 2019 16:26:37 +0200 Message-Id: <4b6c6ff342cafbc74e8318a252f0fb866b9c7bec.1565271790.git.jdenemar@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 03/10] qemu: Pass qemuCaps to qemuDomainSaveImageOpen X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.43]); Thu, 08 Aug 2019 14:28:36 +0000 (UTC) Content-Type: text/plain; charset="utf-8" Since qemuDomainDefPostParse callback requires qemuCaps, we need to make sure it gets the capabilities stored in the domain's private data if the domain is running. Passing NULL may cause QEMU capabilities probing to be triggered in case QEMU binary changed in the meantime. When this happens while a running domain object is locked, QMP event delivered to the domain before QEMU capabilities probing finishes will deadlock the event loop. This patch fixes all paths leading to qemuDomainSaveImageOpen. Signed-off-by: Jiri Denemark --- src/qemu/qemu_driver.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 75d6b3a952..14a20029dd 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -6805,6 +6805,7 @@ qemuDomainSaveImageUpdateDef(virQEMUDriverPtr driver, /** * qemuDomainSaveImageOpen: * @driver: qemu driver data + * @qemuCaps: pointer to qemuCaps if the domain is running or NULL * @path: path of the save image * @ret_def: returns domain definition created from the XML stored in the = image * @ret_data: returns structure filled with data from the image header @@ -6819,6 +6820,7 @@ qemuDomainSaveImageUpdateDef(virQEMUDriverPtr driver, */ static int ATTRIBUTE_NONNULL(3) ATTRIBUTE_NONNULL(4) qemuDomainSaveImageOpen(virQEMUDriverPtr driver, + virQEMUCapsPtr qemuCaps, const char *path, virDomainDefPtr *ret_def, virQEMUSaveDataPtr *ret_data, @@ -6943,7 +6945,7 @@ qemuDomainSaveImageOpen(virQEMUDriverPtr driver, } =20 /* Create a domain from this XML */ - if (!(def =3D virDomainDefParseString(data->xml, caps, driver->xmlopt,= NULL, + if (!(def =3D virDomainDefParseString(data->xml, caps, driver->xmlopt,= qemuCaps, VIR_DOMAIN_DEF_PARSE_INACTIVE | VIR_DOMAIN_DEF_PARSE_SKIP_VALIDATE= ))) goto error; @@ -7126,7 +7128,7 @@ qemuDomainRestoreFlags(virConnectPtr conn, =20 virNWFilterReadLockFilterUpdates(); =20 - fd =3D qemuDomainSaveImageOpen(driver, path, &def, &data, + fd =3D qemuDomainSaveImageOpen(driver, NULL, path, &def, &data, (flags & VIR_DOMAIN_SAVE_BYPASS_CACHE) != =3D 0, &wrapperFd, false, false); if (fd < 0) @@ -7223,7 +7225,7 @@ qemuDomainSaveImageGetXMLDesc(virConnectPtr conn, con= st char *path, =20 virCheckFlags(VIR_DOMAIN_SAVE_IMAGE_XML_SECURE, NULL); =20 - fd =3D qemuDomainSaveImageOpen(driver, path, &def, &data, + fd =3D qemuDomainSaveImageOpen(driver, NULL, path, &def, &data, false, NULL, false, false); =20 if (fd < 0) @@ -7261,7 +7263,7 @@ qemuDomainSaveImageDefineXML(virConnectPtr conn, cons= t char *path, else if (flags & VIR_DOMAIN_SAVE_PAUSED) state =3D 0; =20 - fd =3D qemuDomainSaveImageOpen(driver, path, &def, &data, + fd =3D qemuDomainSaveImageOpen(driver, NULL, path, &def, &data, false, NULL, true, false); =20 if (fd < 0) @@ -7345,7 +7347,7 @@ qemuDomainManagedSaveGetXMLDesc(virDomainPtr dom, uns= igned int flags) goto cleanup; } =20 - if ((fd =3D qemuDomainSaveImageOpen(driver, path, &def, &data, + if ((fd =3D qemuDomainSaveImageOpen(driver, priv->qemuCaps, path, &def= , &data, false, NULL, false, false)) < 0) goto cleanup; =20 @@ -7412,7 +7414,7 @@ qemuDomainObjRestore(virConnectPtr conn, virQEMUSaveDataPtr data =3D NULL; virFileWrapperFdPtr wrapperFd =3D NULL; =20 - fd =3D qemuDomainSaveImageOpen(driver, path, &def, &data, + fd =3D qemuDomainSaveImageOpen(driver, NULL, path, &def, &data, bypass_cache, &wrapperFd, false, true); if (fd < 0) { if (fd =3D=3D -3) --=20 2.22.0 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list