From nobody Mon Feb 9 08:31:29 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 216.205.24.124 as permitted sender) client-ip=216.205.24.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 216.205.24.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=1621601346; cv=none; d=zohomail.com; s=zohoarc; b=DSGCEgtpfiV8hFg7HGnphSZ3yHQq+Khrsl5qUq+uZLUQOFCX+pzCDJ6fhFsl88xFm/mbAJmaodhIAyiaVPZZ58oCY3i+YECdADAMuJ+xsfCgUzyW0p0xGnVY6cdo/2PuNUmirNSS78k6I/WPsGoIa1jChsP6eidSLKVBIjAdWp8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621601346; 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=4dlddTlFYBvg1GiZTGXdZVrS6spUfGUnltMSuel6nt8=; b=Gunxy65TOsuDmNmvCy8t4gEWUCYy2ay1xJsUq2cq8kWhR/9kgD/Du0py58nRLTe8cpwTkYSgQJBkQql/euwChy+S7HoRsbCpPUep8wdz9XZqg08XsKQZhAoQA5P3NIdXhkP3rehgkhLQ2GTuAOXhnE3C9BUOFf3MCQnLCCAZEaE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 216.205.24.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [216.205.24.124]) by mx.zohomail.com with SMTPS id 1621601346777563.3147790381538; Fri, 21 May 2021 05:49:06 -0700 (PDT) Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-537-3C83iDPPNFeaJcJadIScVA-1; Fri, 21 May 2021 08:48:31 -0400 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id BD6B6A40DE; Fri, 21 May 2021 12:48:25 +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 6A7F518351; Fri, 21 May 2021 12:48:25 +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 240EB44A61; Fri, 21 May 2021 12:48:25 +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 14LCmNds031442 for ; Fri, 21 May 2021 08:48:23 -0400 Received: by smtp.corp.redhat.com (Postfix) id A8E68421F; Fri, 21 May 2021 12:48:23 +0000 (UTC) Received: from speedmetal.lan (unknown [10.40.208.14]) by smtp.corp.redhat.com (Postfix) with ESMTP id 009F669FCE for ; Fri, 21 May 2021 12:48:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1621601345; 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=4dlddTlFYBvg1GiZTGXdZVrS6spUfGUnltMSuel6nt8=; b=JlfbM1MwnV8ld+GZoaQo29NBbXDd4zxQGgja+h5+na32QzOOHeu5pvYjFk7/rixnCvLVM1 lP4cojc5bf1yIdNeUBH23yxJBmu2vMmCvKXT60HP3r4GcNvycpr1gAqH+y71h8zpsYoOB8 RjIXWZxqMoH6Mj8/SYI9P60dk7Ndkn8= X-MC-Unique: 3C83iDPPNFeaJcJadIScVA-1 From: Peter Krempa To: libvir-list@redhat.com Subject: [PATCH 27/35] qemuDomainAttachDiskGeneric: Refactor rollback handling Date: Fri, 21 May 2021 14:47:27 +0200 Message-Id: <3de943d3b6f9ac8cae0ae0dfa03f945ecd90d6a4.1621601161.git.pkrempa@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 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Type: text/plain; charset="utf-8" Modify the rollback section to use it's own monitor context so that we can later split up the hotplug into multiple steps and move the detachment of the extension device into the rollback section rather than doing it inline. Signed-off-by: Peter Krempa Reviewed-by: J=C3=A1n Tomko --- src/qemu/qemu_hotplug.c | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index f8c741c683..3772c5b4b8 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -699,6 +699,8 @@ qemuDomainAttachDiskGeneric(virQEMUDriver *driver, qemuDomainObjPrivate *priv =3D vm->privateData; g_autofree char *devstr =3D NULL; bool blockdev =3D virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_BLOCKDEV); + bool extensionDeviceAttached =3D false; + int rc; if (virStorageSourceGetActualType(disk->src) =3D=3D VIR_STORAGE_TYPE_V= HOST_USER) { if (!(data =3D qemuBuildStorageSourceChainAttachPrepareChardev(dis= k))) @@ -726,16 +728,14 @@ qemuDomainAttachDiskGeneric(virQEMUDriver *driver, qemuDomainObjEnterMonitor(driver, vm); - if (qemuBlockStorageSourceChainAttach(priv->mon, data) < 0) - goto exit_monitor; + rc =3D qemuBlockStorageSourceChainAttach(priv->mon, data); - if (qemuDomainAttachExtensionDevice(priv->mon, &disk->info) < 0) - goto exit_monitor; + if (rc =3D=3D 0 && + (rc =3D qemuDomainAttachExtensionDevice(priv->mon, &disk->info)) = =3D=3D 0) + extensionDeviceAttached =3D true; - if (qemuMonitorAddDevice(priv->mon, devstr) < 0) { - ignore_value(qemuDomainDetachExtensionDevice(priv->mon, &disk->inf= o)); - goto exit_monitor; - } + if (rc =3D=3D 0) + rc =3D qemuMonitorAddDevice(priv->mon, devstr); /* Setup throttling of disk via block_set_io_throttle QMP command. This * is a hack until the 'throttle' blockdev driver will support modific= ation @@ -743,7 +743,7 @@ qemuDomainAttachDiskGeneric(virQEMUDriver *driver, * As there isn't anything sane to do if this fails, let's just return * success. */ - if (blockdev && + if (blockdev && rc =3D=3D 0 && qemuDiskConfigBlkdeviotuneEnabled(disk)) { qemuDomainDiskPrivate *diskPriv =3D QEMU_DOMAIN_DISK_PRIVATE(disk); if (qemuMonitorSetBlockIoThrottle(priv->mon, NULL, diskPriv->qomNa= me, @@ -755,9 +755,17 @@ qemuDomainAttachDiskGeneric(virQEMUDriver *driver, if (qemuDomainObjExitMonitor(driver, vm) < 0) return -2; + if (rc < 0) + goto rollback; + return 0; - exit_monitor: + rollback: + qemuDomainObjEnterMonitor(driver, vm); + + if (extensionDeviceAttached) + ignore_value(qemuDomainDetachExtensionDevice(priv->mon, &disk->inf= o)); + qemuBlockStorageSourceChainDetach(priv->mon, data); if (qemuDomainObjExitMonitor(driver, vm) < 0) --=20 2.31.1