From nobody Tue Dec 16 11:07:28 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) client-ip=170.10.133.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 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=1673027554; cv=none; d=zohomail.com; s=zohoarc; b=UzyGpIPkrvPkPfz0ZjF3LwGXEqdluhqHyE3dp9FA+Wlth9KzCd4D+xA+2PX2y15HBKkvImkujaJfyd+0nq42pbrlSL3fQgKH4skca7bd1+zD+Lgi7CNAznouaZVYMVmynox/IPVnvqHDvvXMRNbQyIKVF+c2rSWBo+zLXK1dTz8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1673027554; 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; bh=kjFjsnodDajed35Vx7Qcn7uK7QZqeCxW/AoyxacIWrY=; b=IKXgekq5YxrVxLJddwKplYsV3d+uzsd02g0M3sZAC76TNJ+xndLTnIE3TpTgIhTBgR8wwMQKOD+Thi5nCaE6eWvRTN2NmxOf010/bM1kFvMK4qFm3JAylW+limVh0DSPlyJfCEUv+MQQXCXJPqVnEELRFdOprOkND6WY/u6e4+4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.zohomail.com with SMTPS id 1673027554598296.0590021371921; Fri, 6 Jan 2023 09:52:34 -0800 (PST) Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-302-v45qepdxNJCAYpiG0NKDNA-1; Fri, 06 Jan 2023 12:52:21 -0500 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.rdu2.redhat.com [10.11.54.8]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id E612A3C0253D; Fri, 6 Jan 2023 17:52:18 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id CDC33C15BAD; Fri, 6 Jan 2023 17:52:18 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id A89C91947073; Fri, 6 Jan 2023 17:52:18 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.rdu2.redhat.com [10.11.54.1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 7033F1946586 for ; Fri, 6 Jan 2023 17:52:17 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 6602C40C2007; Fri, 6 Jan 2023 17:52:17 +0000 (UTC) Received: from antique-work.redhat.com (ovpn-193-172.brq.redhat.com [10.40.193.172]) by smtp.corp.redhat.com (Postfix) with ESMTP id 0448640C2005 for ; Fri, 6 Jan 2023 17:52:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1673027553; h=from:from:sender:sender: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:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=kjFjsnodDajed35Vx7Qcn7uK7QZqeCxW/AoyxacIWrY=; b=XMRUXKVqUzXguVBWs+71udM4hWuq0HLgEah1JehVQMurCqASmH+abJ0UvOo745PmBLdTeS Hc5cOgdxzV9AbEvfi6+7MKzGMl8ybKY9L1WNWThJqXWJ+0bn8vIG+UOrcrls8yL28fN1OV IvHcjnjEJn5XBQG96BQCrHn1LNFzXLg= X-MC-Unique: v45qepdxNJCAYpiG0NKDNA-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Pavel Hrdina To: libvir-list@redhat.com Subject: [libvirt PATCH v3 04/32] qemu_block: add async domain job support to qemuBlockCommit Date: Fri, 6 Jan 2023 18:51:39 +0100 Message-Id: <84e64ce20201ca7ec11f55ed285c5f764c6570b1.1673027206.git.phrdina@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.1 on 10.11.54.1 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 3.1 on 10.11.54.8 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1673027555059100014 Content-Type: text/plain; charset="utf-8"; x-default="true" This will allow to use it while having async domain job active which we will use when deleting external snapshots. At the same time we will need to have the block job started as synchronous. Signed-off-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/qemu/qemu_block.c | 23 ++++++++++++++++++++++- src/qemu/qemu_block.h | 1 + src/qemu/qemu_driver.c | 3 ++- 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/src/qemu/qemu_block.c b/src/qemu/qemu_block.c index 6d31269ddd..d2a56ba19c 100644 --- a/src/qemu/qemu_block.c +++ b/src/qemu/qemu_block.c @@ -3198,6 +3198,22 @@ qemuBlockExportAddNBD(virDomainObj *vm, } =20 =20 +/** + * qemuBlockCommit: + * @vm: domain object + * @disk: disk object where we are about to block commit + * @baseSource: disk source within backing chain to commit data into + * @topSource: disk source within backing chain with data we will commit + * @top_parent: disk source that has @topSource as backing disk + * @bandwidth: bandwidth limit, flags determine the unit + * @asyncJob: qemu async job type + * @flags: bitwise-OR of virDomainBlockCommitFlags + * + * Starts a block commit job for @disk. If @asyncJob is different then + * VIR_ASYNC_JOB_NONE the job will be started as synchronous. + * + * Returns -1 on error, 0 on success. + */ int qemuBlockCommit(virDomainObj *vm, virDomainDiskDef *disk, @@ -3205,6 +3221,7 @@ qemuBlockCommit(virDomainObj *vm, virStorageSource *topSource, virStorageSource *top_parent, unsigned long bandwidth, + virDomainAsyncJob asyncJob, unsigned int flags) { qemuDomainObjPrivate *priv =3D vm->privateData; @@ -3336,7 +3353,11 @@ qemuBlockCommit(virDomainObj *vm, !(backingPath =3D qemuBlockGetBackingStoreString(baseSource, false= ))) goto cleanup; =20 - qemuDomainObjEnterMonitor(vm); + if (asyncJob !=3D VIR_ASYNC_JOB_NONE) + qemuBlockJobSyncBegin(job); + + if (qemuDomainObjEnterMonitorAsync(vm, asyncJob) < 0) + goto cleanup; =20 ret =3D qemuMonitorBlockCommit(priv->mon, qemuDomainDiskGetTopNodename(disk), diff --git a/src/qemu/qemu_block.h b/src/qemu/qemu_block.h index 52deb15a3d..a76d9be711 100644 --- a/src/qemu/qemu_block.h +++ b/src/qemu/qemu_block.h @@ -284,6 +284,7 @@ qemuBlockCommit(virDomainObj *vm, virStorageSource *topSource, virStorageSource *top_parent, unsigned long bandwidth, + virDomainAsyncJob asyncJob, unsigned int flags); =20 int diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index c35e5e1a31..f7a7086b3d 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -15025,7 +15025,8 @@ qemuDomainBlockCommit(virDomainPtr dom, base, disk->dst, N= ULL))) goto endjob; =20 - ret =3D qemuBlockCommit(vm, disk, baseSource, topSource, top_parent, b= andwidth, flags); + ret =3D qemuBlockCommit(vm, disk, baseSource, topSource, top_parent, + bandwidth, VIR_ASYNC_JOB_NONE, flags); =20 endjob: virDomainObjEndJob(vm); --=20 2.39.0