From nobody Mon Feb 9 17:24:27 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=1565963694; cv=none; d=zoho.com; s=zohoarc; b=cY9YG1MNLPI/QmWxG7XOzC/XawKkSBvVfncxofE4vl3dDm40o3F3xF9LiiS6CbnT/n9H+yDJ2rkspXl9A9frmV2VGfDC4WSBrUbJntrv/uoaAnZlFDplCfLvNEdAemRCcEG0ueWb2MS3oBf8vKFKOSeWDsZAsUMus0U1fc7ZE2g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1565963694; h=Content-Type:Content-Transfer-Encoding:Cc: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=8uBjpu3X9EXwWNPAtxQS5w5qnbN7Rukb3KBtLaq7+EM=; b=CisdWGqH/lxGq67geITnP7PfBhT3RS5UxUjs1/I1MKMAhRFD6dyDBVC4o8eyKSThTHzLOYY1YnmO86VVQg6yhoz9BRtGXX75bxVCttWxXS5zu3TwNsZ/3ZQoFvEuOmkgAO4e5rN46uTubhpRjPoGZS6hfCySn2eIirar/3CWXls= 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 1565963694029134.8507320430465; Fri, 16 Aug 2019 06:54:54 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id BDD5C12BB; Fri, 16 Aug 2019 13:54:52 +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 998381001B02; Fri, 16 Aug 2019 13:54:52 +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 5E45D24F33; Fri, 16 Aug 2019 13:54:52 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id x7GDsncJ029080 for ; Fri, 16 Aug 2019 09:54:49 -0400 Received: by smtp.corp.redhat.com (Postfix) id DDDC61001B03; Fri, 16 Aug 2019 13:54:49 +0000 (UTC) Received: from angien.brq.redhat.com (unknown [10.43.2.229]) by smtp.corp.redhat.com (Postfix) with ESMTP id 4395110013A7; Fri, 16 Aug 2019 13:54:49 +0000 (UTC) From: Peter Krempa To: libvir-list@redhat.com Date: Fri, 16 Aug 2019 15:54:35 +0200 Message-Id: <60b2450d021ba056bb000427b818772cf3645933.1565963616.git.pkrempa@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 X-loop: libvir-list@redhat.com Cc: Peter Krempa Subject: [libvirt] [PATCH 01/10] qemu: snapshot: Don't modify persistent XML if disk source is different 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.84 on 10.5.11.22 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.29]); Fri, 16 Aug 2019 13:54:53 +0000 (UTC) Content-Type: text/plain; charset="utf-8" While the VM is running the persistent source of a disk might differ e.g. as the 'newDef' was redefined. Our snapshot code would blindly rewrite the source of such disk if it shared the 'target'. Fix this by checking whether the source is the same in the first place. Signed-off-by: Peter Krempa Reviewed-by: J=C3=A1n Tomko --- src/qemu/qemu_driver.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 11f97dbc65..b6fbb197b8 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -15332,6 +15332,7 @@ qemuDomainSnapshotDiskDataCollect(virQEMUDriverPtr = driver, qemuDomainSnapshotDiskDataPtr dd; char *backingStoreStr; virDomainSnapshotDefPtr snapdef =3D virDomainSnapshotObjGetDef(snap); + virDomainDiskDefPtr persistdisk; int ret =3D -1; if (VIR_ALLOC_N(data, snapdef->ndisks) < 0) @@ -15352,13 +15353,12 @@ qemuDomainSnapshotDiskDataCollect(virQEMUDriverPt= r driver, if (virStorageSourceInitChainElement(dd->src, dd->disk->src, false= ) < 0) goto cleanup; - /* Note that it's unsafe to assume that the disks in the persistent - * definition match up with the disks in the live definition just = by - * checking that the target name is the same. We've done that - * historically this way though. */ + /* modify disk in persistent definition only when the source is th= e same */ if (vm->newDef && - (dd->persistdisk =3D virDomainDiskByName(vm->newDef, dd->disk-= >dst, - false))) { + (persistdisk =3D virDomainDiskByName(vm->newDef, dd->disk->dst= , false)) && + virStorageSourceIsSameLocation(dd->disk->src, persistdisk->src= )) { + + dd->persistdisk =3D persistdisk; if (!(dd->persistsrc =3D virStorageSourceCopy(dd->src, false))) goto cleanup; --=20 2.21.0 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list