From nobody Fri Apr 19 13:55:22 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1573203284; cv=none; d=zoho.com; s=zohoarc; b=Prb+WfvwaPlkGpYi2yrlDdsHAOBmnTnr8HbELVs0EIrSLHvzWEqpSGy1O0CxYRJkcSwluyuwvlVPdiaJETHTFrqEjYvXItechjBm8znHnpUydmMVs1zmou68yWBzNrtsRIgC75yWiwnXhC18Mnhjc7DeQHXZUAX3LguT4dbHSGE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1573203284; 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; bh=GzxLFzL+9LXuE6dWeSgWf1dukfXzVPj1WHJ1jYgYL1E=; b=VwnNHmlH3K+071XfUFuP82kqpkJmKkkA4spa6Xglo2GRQHHdVnZHGjt/acBL4Q527EQKTyKtZkh+R6Jj57jl4CK0easGk0z8jGKo9dokgpb9zJ0Qlla2oTln6YFRISCyS2eqOpINFIiDIX5xabzc9Aqp8XCnkUEqCcD9adD6uSk= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1573203284851996.1570872715117; Fri, 8 Nov 2019 00:54:44 -0800 (PST) Received: from localhost ([::1]:50720 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iT02V-0006fr-Qq for importer@patchew.org; Fri, 08 Nov 2019 03:54:43 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:58831) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iT01Y-0005kU-Ag for qemu-devel@nongnu.org; Fri, 08 Nov 2019 03:53:45 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iT01X-0007cL-9a for qemu-devel@nongnu.org; Fri, 08 Nov 2019 03:53:44 -0500 Received: from us-smtp-1.mimecast.com ([205.139.110.61]:29237 helo=us-smtp-delivery-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iT01X-0007cB-6T for qemu-devel@nongnu.org; Fri, 08 Nov 2019 03:53:43 -0500 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-380-bq8Gi9NINium1zIHimzYyQ-1; Fri, 08 Nov 2019 03:53:39 -0500 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 57A58107ACC3; Fri, 8 Nov 2019 08:53:38 +0000 (UTC) Received: from linux.fritz.box.com (ovpn-116-227.ams2.redhat.com [10.36.116.227]) by smtp.corp.redhat.com (Postfix) with ESMTP id 1AE85600C9; Fri, 8 Nov 2019 08:53:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1573203222; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=GzxLFzL+9LXuE6dWeSgWf1dukfXzVPj1WHJ1jYgYL1E=; b=Vi6PtecY3/WcGH6Wi4r7sORkgOKd6eiIhaEt78tQwOvIbJxgMnuoC8yw7vdM3bGK9vcRqv 5cgPQ3T5z2f6oOWfixgglRwlUjyeZGP4I9FhzLfYjfNoA1mTdjOhw2Dec3C7isxGBanmvU sse35jV/Bh5auEbY0DoOwazicUWDsLI= From: Kevin Wolf To: qemu-block@nongnu.org Subject: [PATCH 1/2] block: Remove 'backing': null from bs->{explicit_, }options Date: Fri, 8 Nov 2019 09:53:11 +0100 Message-Id: <20191108085312.27049-2-kwolf@redhat.com> In-Reply-To: <20191108085312.27049-1-kwolf@redhat.com> References: <20191108085312.27049-1-kwolf@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-MC-Unique: bq8Gi9NINium1zIHimzYyQ-1 X-Mimecast-Spam-Score: 0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 205.139.110.61 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kwolf@redhat.com, pkrempa@redhat.com, qemu-devel@nongnu.org, mreitz@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" bs->options and bs->explicit_options shouldn't contain any options for child nodes. bdrv_open_inherited() takes care to remove any options that match a child name after opening the image and the same is done when reopening. However, we miss the case of 'backing': null, which is a child option, but results in no child being created. This means that a 'backing': null remains in bs->options and bs->explicit_options. A typical use for 'backing': null is in live snapshots: blockdev-add for the qcow2 overlay makes sure not to open the backing file (because it is already opened and blockdev-snapshot will attach it). After doing a blockdev-snapshot, bs->options and bs->explicit_options become inconsistent with the actual state (bs has a backing file now, but the options still say null). On the next occasion that the image is reopened, e.g. switching it from read-write to read-only when another snapshot is taken, the option will take effect again and the node incorrectly loses its backing file. Fix bdrv_open_inherited() to remove the 'backing' option from bs->options and bs->explicit_options even for the case where it specifies that no backing file is wanted. Reported-by: Peter Krempa Signed-off-by: Kevin Wolf Reviewed-by: Alberto Garcia Tested-by: Peter Krempa --- block.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/block.c b/block.c index dad5a3d8e0..74ba9acb08 100644 --- a/block.c +++ b/block.c @@ -3019,6 +3019,8 @@ static BlockDriverState *bdrv_open_inherit(const char= *filename, "use \"backing\": null instead"); } flags |=3D BDRV_O_NO_BACKING; + qdict_del(bs->explicit_options, "backing"); + qdict_del(bs->options, "backing"); qdict_del(options, "backing"); } =20 --=20 2.20.1 From nobody Fri Apr 19 13:55:22 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1573203365; cv=none; d=zoho.com; s=zohoarc; b=PljQ0ckgnB/179wIi1QeVHsJ4qMbuBmB+xKAiXeG5xKqwRNwuspvt3FN5QM9hTHkZnHJjVj8+KtNSjAUZXOf8oMA6/Z/IdDad2ivCTvrq9zR9++7bcu6CUuS84hgueO/WUOjuOgjS2AVkU7XBcFZqZwhL5oVVhWomgQ+VLxAAWM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1573203365; 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; bh=dTHmPZ0tmXQAFQRegihNXrukHcIoHkQbxivSZDEwY/g=; b=C5lkToQNSF6Ar05u6wI8oujjRtWvBjbBfP1218wcdMW6PjmdBNvXXmTMDjb/4qc/KcQ74PTd0fRms6Ymg8vhjzsCrRyI6JFUdV5hGGalx0cevlCu4VD4FrWLvciSHmy5n43Vwgsq9YYQY8os4dJXoJ8wnphrdGnDDAML9I3qhyU= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1573203365169534.5168225133906; Fri, 8 Nov 2019 00:56:05 -0800 (PST) Received: from localhost ([::1]:50730 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iT03n-0008Ko-1L for importer@patchew.org; Fri, 08 Nov 2019 03:56:03 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:58857) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iT01a-0005oE-SJ for qemu-devel@nongnu.org; Fri, 08 Nov 2019 03:53:48 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iT01Z-0007dH-0c for qemu-devel@nongnu.org; Fri, 08 Nov 2019 03:53:46 -0500 Received: from us-smtp-delivery-1.mimecast.com ([207.211.31.120]:32505 helo=us-smtp-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iT01Y-0007ct-Sr for qemu-devel@nongnu.org; Fri, 08 Nov 2019 03:53:44 -0500 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-267-EP0RvKKIPqObzGP4mW0jZQ-1; Fri, 08 Nov 2019 03:53:40 -0500 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 119C2107ACC5; Fri, 8 Nov 2019 08:53:40 +0000 (UTC) Received: from linux.fritz.box.com (ovpn-116-227.ams2.redhat.com [10.36.116.227]) by smtp.corp.redhat.com (Postfix) with ESMTP id A4C9F600C9; Fri, 8 Nov 2019 08:53:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1573203224; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=dTHmPZ0tmXQAFQRegihNXrukHcIoHkQbxivSZDEwY/g=; b=KeYTzusuB2hVthJTz3QAoZtWcSt1vXqy0giNcjG2aYGmxxWvbEZlKnDX/PhhKnqa0ZdCPx jj60gsU8DpvsivmPFkotr1oWm+9eJRrDgXxXoBucSlQLsC8e3yd1+xRE3YqQWj5oOSeKRc WgQiT/AKsquYHRce6OMi+J/l7oLzrRg= From: Kevin Wolf To: qemu-block@nongnu.org Subject: [PATCH 2/2] iotests: Test multiple blockdev-snapshot calls Date: Fri, 8 Nov 2019 09:53:12 +0100 Message-Id: <20191108085312.27049-3-kwolf@redhat.com> In-Reply-To: <20191108085312.27049-1-kwolf@redhat.com> References: <20191108085312.27049-1-kwolf@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-MC-Unique: EP0RvKKIPqObzGP4mW0jZQ-1 X-Mimecast-Spam-Score: 0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 207.211.31.120 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kwolf@redhat.com, pkrempa@redhat.com, qemu-devel@nongnu.org, mreitz@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Test that doing a second blockdev-snapshot doesn't make the first overlay's backing file go away. Signed-off-by: Kevin Wolf Reviewed-by: Peter Krempa --- tests/qemu-iotests/273 | 76 +++++++++ tests/qemu-iotests/273.out | 337 +++++++++++++++++++++++++++++++++++++ tests/qemu-iotests/group | 1 + 3 files changed, 414 insertions(+) create mode 100755 tests/qemu-iotests/273 create mode 100644 tests/qemu-iotests/273.out diff --git a/tests/qemu-iotests/273 b/tests/qemu-iotests/273 new file mode 100755 index 0000000000..60076de7ce --- /dev/null +++ b/tests/qemu-iotests/273 @@ -0,0 +1,76 @@ +#!/usr/bin/env bash +# +# Test large write to a qcow2 image +# +# Copyright (C) 2019 Red Hat, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +seq=3D$(basename "$0") +echo "QA output created by $seq" + +status=3D1 # failure is the default! + +_cleanup() +{ + _cleanup_test_img +} +trap "_cleanup; exit \$status" 0 1 2 3 15 + +# get standard environment, filters and checks +. ./common.rc +. ./common.filter + +# This is a qcow2 regression test +_supported_fmt qcow2 +_supported_proto file +_supported_os Linux + +do_run_qemu() +{ + echo Testing: "$@" + $QEMU -nographic -qmp-pretty stdio -nodefaults "$@" + echo +} + +run_qemu() +{ + do_run_qemu "$@" 2>&1 | _filter_testdir | _filter_qemu | _filter_qmp | + _filter_generated_node_ids | _filter_imgfmt | _filter_actual_image= _size +} + +TEST_IMG=3D"$TEST_IMG.base" _make_test_img 64M +TEST_IMG=3D"$TEST_IMG.mid" _make_test_img -b "$TEST_IMG.base" +_make_test_img -b "$TEST_IMG.mid" + +run_qemu \ + -blockdev file,node-name=3Dbase,filename=3D"$TEST_IMG.base" \ + -blockdev file,node-name=3Dmidf,filename=3D"$TEST_IMG.mid" \ + -blockdev '{"driver":"qcow2","node-name":"mid","file":"midf","backing= ":null}' \ + -blockdev file,node-name=3Dtopf,filename=3D"$TEST_IMG" \ + -blockdev '{"driver":"qcow2","file":"topf","node-name":"top","backing= ":null}' \ +<