From nobody Mon May 6 14:03:37 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; 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=1568997593; cv=none; d=zoho.com; s=zohoarc; b=HpHFesDXYPhECLdSANrtjbGgITgvF/MrplGViKKj3XM1u29Y6tOzPOFwqqRqtPrp65UDZ5AdR3PcHPf/5BDcHRj9vQglHO8p487V7ut1B6rK4jF8beHqGmL2HgHfLKhaMJb9ft2u6jxoxg+6s0jgg52aDFLg5DVS6I6EvwNd9+E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1568997593; h=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=UEXCDgfn21N/Gp+FqHFcuRv5bwYkiX84w2aPYyh2EuI=; b=dATEzvwMF5jJNC067iatAWH0dQhzCb9SNmoqibj7rt7lJDxZFuDMQC+5qETvrJ4i5IzYE5OzwuXdFlhmj4RhqhPeW3PpzZDdZlhtw8hBHIj+syHttvoIt1Car/dcBJkFg8Sp72HS2ia1AZ9OEcww1FyMg79PonExL06LDBfFeks= ARC-Authentication-Results: i=1; mx.zoho.com; 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 1568997593566668.1479577157737; Fri, 20 Sep 2019 09:39:53 -0700 (PDT) Received: from localhost ([::1]:33628 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iBLwl-0006TE-Og for importer@patchew.org; Fri, 20 Sep 2019 12:39:51 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:52898) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iBLel-0007fg-PZ for qemu-devel@nongnu.org; Fri, 20 Sep 2019 12:21:17 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iBLej-0008Cn-MF for qemu-devel@nongnu.org; Fri, 20 Sep 2019 12:21:15 -0400 Received: from mx1.redhat.com ([209.132.183.28]:59744) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iBLed-00089B-P6; Fri, 20 Sep 2019 12:21:09 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id CCB823082E24; Fri, 20 Sep 2019 16:21:05 +0000 (UTC) Received: from localhost.localdomain.com (ovpn-117-81.ams2.redhat.com [10.36.117.81]) by smtp.corp.redhat.com (Postfix) with ESMTP id C6003646A1; Fri, 20 Sep 2019 16:21:04 +0000 (UTC) From: Kevin Wolf To: qemu-block@nongnu.org Subject: [PULL 1/4] block/snapshot: Restrict set of snapshot nodes Date: Fri, 20 Sep 2019 18:20:55 +0200 Message-Id: <20190920162058.29743-2-kwolf@redhat.com> In-Reply-To: <20190920162058.29743-1-kwolf@redhat.com> References: <20190920162058.29743-1-kwolf@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.46]); Fri, 20 Sep 2019 16:21:05 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 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, peter.maydell@linaro.org, qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" Nodes involved in internal snapshots were those that were returned by bdrv_next(), inserted and not read-only. bdrv_next() in turn returns all nodes that are either the root node of a BlockBackend or monitor-owned nodes. With the typical -drive use, this worked well enough. However, in the typical -blockdev case, the user defines one node per option, making all nodes monitor-owned nodes. This includes protocol nodes etc. which often are not snapshottable, so "savevm" only returns an error. Change the conditions so that internal snapshot still include all nodes that have a BlockBackend attached (we definitely want to snapshot anything attached to a guest device and probably also the built-in NBD server; snapshotting block job BlockBackends is more of an accident, but a preexisting one), but other monitor-owned nodes are only included if they have no parents. This makes internal snapshots usable again with typical -blockdev configurations. Cc: qemu-stable@nongnu.org Signed-off-by: Kevin Wolf Reviewed-by: Eric Blake Reviewed-by: Peter Krempa Tested-by: Peter Krempa --- block/snapshot.c | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/block/snapshot.c b/block/snapshot.c index f2f48f926a..8081616ae9 100644 --- a/block/snapshot.c +++ b/block/snapshot.c @@ -31,6 +31,7 @@ #include "qapi/qmp/qerror.h" #include "qapi/qmp/qstring.h" #include "qemu/option.h" +#include "sysemu/block-backend.h" =20 QemuOptsList internal_snapshot_opts =3D { .name =3D "snapshot", @@ -384,6 +385,16 @@ int bdrv_snapshot_load_tmp_by_id_or_name(BlockDriverSt= ate *bs, return ret; } =20 +static bool bdrv_all_snapshots_includes_bs(BlockDriverState *bs) +{ + if (!bdrv_is_inserted(bs) || bdrv_is_read_only(bs)) { + return false; + } + + /* Include all nodes that are either in use by a BlockBackend, or that + * aren't attached to any node, but owned by the monitor. */ + return bdrv_has_blk(bs) || QLIST_EMPTY(&bs->parents); +} =20 /* Group operations. All block drivers are involved. * These functions will properly handle dataplane (take aio_context_acquire @@ -399,7 +410,7 @@ bool bdrv_all_can_snapshot(BlockDriverState **first_bad= _bs) AioContext *ctx =3D bdrv_get_aio_context(bs); =20 aio_context_acquire(ctx); - if (bdrv_is_inserted(bs) && !bdrv_is_read_only(bs)) { + if (bdrv_all_snapshots_includes_bs(bs)) { ok =3D bdrv_can_snapshot(bs); } aio_context_release(ctx); @@ -426,8 +437,9 @@ int bdrv_all_delete_snapshot(const char *name, BlockDri= verState **first_bad_bs, AioContext *ctx =3D bdrv_get_aio_context(bs); =20 aio_context_acquire(ctx); - if (bdrv_can_snapshot(bs) && - bdrv_snapshot_find(bs, snapshot, name) >=3D 0) { + if (bdrv_all_snapshots_includes_bs(bs) && + bdrv_snapshot_find(bs, snapshot, name) >=3D 0) + { ret =3D bdrv_snapshot_delete(bs, snapshot->id_str, snapshot->name, err); } @@ -455,7 +467,7 @@ int bdrv_all_goto_snapshot(const char *name, BlockDrive= rState **first_bad_bs, AioContext *ctx =3D bdrv_get_aio_context(bs); =20 aio_context_acquire(ctx); - if (bdrv_can_snapshot(bs)) { + if (bdrv_all_snapshots_includes_bs(bs)) { ret =3D bdrv_snapshot_goto(bs, name, errp); } aio_context_release(ctx); @@ -481,7 +493,7 @@ int bdrv_all_find_snapshot(const char *name, BlockDrive= rState **first_bad_bs) AioContext *ctx =3D bdrv_get_aio_context(bs); =20 aio_context_acquire(ctx); - if (bdrv_can_snapshot(bs)) { + if (bdrv_all_snapshots_includes_bs(bs)) { err =3D bdrv_snapshot_find(bs, &sn, name); } aio_context_release(ctx); @@ -512,7 +524,7 @@ int bdrv_all_create_snapshot(QEMUSnapshotInfo *sn, if (bs =3D=3D vm_state_bs) { sn->vm_state_size =3D vm_state_size; err =3D bdrv_snapshot_create(bs, sn); - } else if (bdrv_can_snapshot(bs)) { + } else if (bdrv_all_snapshots_includes_bs(bs)) { sn->vm_state_size =3D 0; err =3D bdrv_snapshot_create(bs, sn); } @@ -538,7 +550,7 @@ BlockDriverState *bdrv_all_find_vmstate_bs(void) bool found; =20 aio_context_acquire(ctx); - found =3D bdrv_can_snapshot(bs); + found =3D bdrv_all_snapshots_includes_bs(bs) && bdrv_can_snapshot(= bs); aio_context_release(ctx); =20 if (found) { --=20 2.20.1 From nobody Mon May 6 14:03:37 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; 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=1568998269; cv=none; d=zoho.com; s=zohoarc; b=FDPsB2MmAhnyCZttSqK2QbQGOkaivs85cdpViHIynHS3Qu7TFalnAtzctb0DbzvBqGAEeoX1DVFb7xJ6l85mg7ZE7JMbWKZjEDcPOC4EyRbEPlMAeyvl1o7brYq8h8jh8hp2vna1pSpiVkE6nimNwhmf5WDjLnmQl9MeFlMkxxQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1568998269; h=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=aHbF21yY7GMI4R6msVHcxZgpQz868bIHLwFei/nrKiA=; b=YLgj2hkiIq1kRtkDwkngbeT+X1qBsylhuHqVm7x9dIMYIjpPzGgPWnMqPaF+6q7KOmKfZtvOGFqmbAEpVPA7AyGvcxi0X3L5jdanflsxCdDYSwbSelW8xJ/oVqpVIPMXR6nuzelpFha1MFJZzuOrxbt0ornWc/yV/35Szlg5RBk= ARC-Authentication-Results: i=1; mx.zoho.com; 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 1568998269913100.7137862493704; Fri, 20 Sep 2019 09:51:09 -0700 (PDT) Received: from localhost ([::1]:33780 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iBM7g-0002eN-Mr for importer@patchew.org; Fri, 20 Sep 2019 12:51:08 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:52956) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iBLeq-0007jc-Hb for qemu-devel@nongnu.org; Fri, 20 Sep 2019 12:21:22 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iBLen-0008Eh-N9 for qemu-devel@nongnu.org; Fri, 20 Sep 2019 12:21:20 -0400 Received: from mx1.redhat.com ([209.132.183.28]:40628) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iBLef-00089h-LX; Fri, 20 Sep 2019 12:21:11 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 5551E308624A; Fri, 20 Sep 2019 16:21:07 +0000 (UTC) Received: from localhost.localdomain.com (ovpn-117-81.ams2.redhat.com [10.36.117.81]) by smtp.corp.redhat.com (Postfix) with ESMTP id 2486F646A1; Fri, 20 Sep 2019 16:21:05 +0000 (UTC) From: Kevin Wolf To: qemu-block@nongnu.org Subject: [PULL 2/4] iotests: Test internal snapshots with -blockdev Date: Fri, 20 Sep 2019 18:20:56 +0200 Message-Id: <20190920162058.29743-3-kwolf@redhat.com> In-Reply-To: <20190920162058.29743-1-kwolf@redhat.com> References: <20190920162058.29743-1-kwolf@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.49]); Fri, 20 Sep 2019 16:21:07 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 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, peter.maydell@linaro.org, qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" Signed-off-by: Kevin Wolf Reviewed-by: Peter Krempa Tested-by: Peter Krempa --- tests/qemu-iotests/267 | 168 ++++++++++++++++++++++++++++ tests/qemu-iotests/267.out | 182 +++++++++++++++++++++++++++++++ tests/qemu-iotests/common.filter | 5 +- tests/qemu-iotests/group | 1 + 4 files changed, 352 insertions(+), 4 deletions(-) create mode 100755 tests/qemu-iotests/267 create mode 100644 tests/qemu-iotests/267.out diff --git a/tests/qemu-iotests/267 b/tests/qemu-iotests/267 new file mode 100755 index 0000000000..95f885442f --- /dev/null +++ b/tests/qemu-iotests/267 @@ -0,0 +1,168 @@ +#!/usr/bin/env bash +# +# Test which nodes are involved in internal snapshots +# +# 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 . +# + +# creator +owner=3Dkwolf@redhat.com + +seq=3D`basename $0` +echo "QA output created by $seq" + +status=3D1 # failure is the default! + +_cleanup() +{ + _cleanup_test_img + rm -f "$TEST_DIR/nbd" +} +trap "_cleanup; exit \$status" 0 1 2 3 15 + +# get standard environment, filters and checks +. ./common.rc +. ./common.filter + +_supported_fmt qcow2 +_supported_proto file +_supported_os Linux + +# Internal snapshots are (currently) impossible with refcount_bits=3D1 +_unsupported_imgopts 'refcount_bits=3D1[^0-9]' + +do_run_qemu() +{ + echo Testing: "$@" + ( + if ! test -t 0; then + while read cmd; do + echo $cmd + done + fi + echo quit + ) | $QEMU -nographic -monitor stdio -nodefaults "$@" + echo +} + +run_qemu() +{ + do_run_qemu "$@" 2>&1 | _filter_testdir | _filter_qemu | _filter_hmp | + _filter_generated_node_ids | _filter_imgfmt +} + +size=3D128M + +run_test() +{ + _make_test_img $size + printf "savevm snap0\ninfo snapshots\nloadvm snap0\n" | run_qemu "$@" = | _filter_date +} + + +echo +echo "=3D=3D=3D No block devices at all =3D=3D=3D" +echo + +run_test + +echo +echo "=3D=3D=3D -drive if=3Dnone =3D=3D=3D" +echo + +run_test -drive driver=3Dfile,file=3D"$TEST_IMG",if=3Dnone +run_test -drive driver=3D$IMGFMT,file=3D"$TEST_IMG",if=3Dnone +run_test -drive driver=3D$IMGFMT,file=3D"$TEST_IMG",if=3Dnone -device virt= io-blk,drive=3Dnone0 + +echo +echo "=3D=3D=3D -drive if=3Dvirtio =3D=3D=3D" +echo + +run_test -drive driver=3Dfile,file=3D"$TEST_IMG",if=3Dvirtio +run_test -drive driver=3D$IMGFMT,file=3D"$TEST_IMG",if=3Dvirtio + +echo +echo "=3D=3D=3D Simple -blockdev =3D=3D=3D" +echo + +run_test -blockdev driver=3Dfile,filename=3D"$TEST_IMG",node-name=3Dfile +run_test -blockdev driver=3Dfile,filename=3D"$TEST_IMG",node-name=3Dfile \ + -blockdev driver=3D$IMGFMT,file=3Dfile,node-name=3Dfmt +run_test -blockdev driver=3Dfile,filename=3D"$TEST_IMG",node-name=3Dfile \ + -blockdev driver=3Draw,file=3Dfile,node-name=3Draw \ + -blockdev driver=3D$IMGFMT,file=3Draw,node-name=3Dfmt + +echo +echo "=3D=3D=3D -blockdev with a filter on top =3D=3D=3D" +echo + +run_test -blockdev driver=3Dfile,filename=3D"$TEST_IMG",node-name=3Dfile \ + -blockdev driver=3D$IMGFMT,file=3Dfile,node-name=3Dfmt \ + -blockdev driver=3Dcopy-on-read,file=3Dfmt,node-name=3Dfilter + +echo +echo "=3D=3D=3D -blockdev with a backing file =3D=3D=3D" +echo + +TEST_IMG=3D"$TEST_IMG.base" _make_test_img $size + +IMGOPTS=3D"backing_file=3D$TEST_IMG.base" \ +run_test -blockdev driver=3Dfile,filename=3D"$TEST_IMG.base",node-name=3Db= acking-file \ + -blockdev driver=3Dfile,filename=3D"$TEST_IMG",node-name=3Dfile \ + -blockdev driver=3D$IMGFMT,file=3Dfile,backing=3Dbacking-file,nod= e-name=3Dfmt + +IMGOPTS=3D"backing_file=3D$TEST_IMG.base" \ +run_test -blockdev driver=3Dfile,filename=3D"$TEST_IMG.base",node-name=3Db= acking-file \ + -blockdev driver=3D$IMGFMT,file=3Dbacking-file,node-name=3Dbackin= g-fmt \ + -blockdev driver=3Dfile,filename=3D"$TEST_IMG",node-name=3Dfile \ + -blockdev driver=3D$IMGFMT,file=3Dfile,backing=3Dbacking-fmt,node= -name=3Dfmt + +# A snapshot should be present on the overlay, but not the backing file +echo Internal snapshots on overlay: +$QEMU_IMG snapshot -l "$TEST_IMG" | _filter_date + +echo Internal snapshots on backing file: +$QEMU_IMG snapshot -l "$TEST_IMG.base" | _filter_date + +echo +echo "=3D=3D=3D -blockdev with NBD server on the backing file =3D=3D=3D" +echo + +IMGOPTS=3D"backing_file=3D$TEST_IMG.base" _make_test_img $size +cat < (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 1568997326633857.5716546044766; Fri, 20 Sep 2019 09:35:26 -0700 (PDT) Received: from localhost ([::1]:33584 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iBLsO-0000g1-2y for importer@patchew.org; Fri, 20 Sep 2019 12:35:20 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:52919) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iBLen-0007gD-L3 for qemu-devel@nongnu.org; Fri, 20 Sep 2019 12:21:18 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iBLel-0008Dq-S9 for qemu-devel@nongnu.org; Fri, 20 Sep 2019 12:21:17 -0400 Received: from mx1.redhat.com ([209.132.183.28]:40634) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iBLef-0008Aq-N2; Fri, 20 Sep 2019 12:21:11 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id A6614307CDE7; Fri, 20 Sep 2019 16:21:08 +0000 (UTC) Received: from localhost.localdomain.com (ovpn-117-81.ams2.redhat.com [10.36.117.81]) by smtp.corp.redhat.com (Postfix) with ESMTP id 9FD2A646A1; Fri, 20 Sep 2019 16:21:07 +0000 (UTC) From: Kevin Wolf To: qemu-block@nongnu.org Subject: [PULL 3/4] iotests: Require Python 3.6 or later Date: Fri, 20 Sep 2019 18:20:57 +0200 Message-Id: <20190920162058.29743-4-kwolf@redhat.com> In-Reply-To: <20190920162058.29743-1-kwolf@redhat.com> References: <20190920162058.29743-1-kwolf@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.49]); Fri, 20 Sep 2019 16:21:08 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 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, peter.maydell@linaro.org, qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" Running iotests is not required to build QEMU, so we can have stricter version requirements for Python here and can make use of new features and drop compatibility code earlier. This makes qemu-iotests skip all Python tests if a Python version before 3.6 is used for the build. Suggested-by: Eduardo Habkost Signed-off-by: Kevin Wolf Reviewed-by: Eduardo Habkost Reviewed-by: Thomas Huth Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Vladimir Sementsov-Ogievskiy --- tests/qemu-iotests/check | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/tests/qemu-iotests/check b/tests/qemu-iotests/check index 875399d79f..588c453a94 100755 --- a/tests/qemu-iotests/check +++ b/tests/qemu-iotests/check @@ -633,6 +633,12 @@ then export SOCKET_SCM_HELPER=3D"$build_iotests/socket_scm_helper" fi =20 +python_usable=3Dfalse +if $PYTHON -c 'import sys; sys.exit(0 if sys.version_info >=3D (3,6) else = 1)' +then + python_usable=3Dtrue +fi + default_machine=3D$($QEMU_PROG -machine help | sed -n '/(default)/ s/ .*//= p') default_alias_machine=3D$($QEMU_PROG -machine help | \ sed -n "/(alias of $default_machine)/ { s/ .*//p; q; }") @@ -809,7 +815,12 @@ do start=3D$(_wallclock) =20 if [ "$(head -n 1 "$source_iotests/$seq")" =3D=3D "#!/usr/bin/env = python" ]; then - run_command=3D"$PYTHON $seq" + if $python_usable; then + run_command=3D"$PYTHON $seq" + else + run_command=3D"false" + echo "Unsupported Python version" > $seq.notrun + fi else run_command=3D"./$seq" fi --=20 2.20.1 From nobody Mon May 6 14:03:37 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; 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=1568998207; cv=none; d=zoho.com; s=zohoarc; b=gwtSFQN58O/mcoUfQD0MR+CfUu9ez5pBKrSy5hR3cIGhCh5uotK9KY2SiG7o8agFU7L2g3pfzoX9/2R2U/Os0JTEeZtUYP5dFFOtQVQ70OjCM+dh5u5I2G9EnhybkhmJ8cWzRTZuNTzGf2ppB6FmWpV8zEWx5N8qOpw9uyHArm8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1568998207; 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=HVmUnm0ea/vYvIQn2bl591d0W7AhH0f2ht6mSxwd06I=; b=Y46aHOQcBYH5pwbxXIN96qRr6RxalSPvg+9od0/JaJq/bEr4C2ztB5yrmEGF/vR3KQp8y+xfSeD2zrrDWvQSnF+AY8NiU6TLIzKjayrmVSvh7OwhcMEs24PmtPv9MokZZRwARGRKZL84enEC7/Eei/RqRKiTflFl4jDaoJSFhH0= ARC-Authentication-Results: i=1; mx.zoho.com; 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 1568998207753280.8350987866679; Fri, 20 Sep 2019 09:50:07 -0700 (PDT) Received: from localhost ([::1]:33774 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iBM6g-0001QR-Hb for importer@patchew.org; Fri, 20 Sep 2019 12:50:06 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:52942) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iBLep-0007iT-H5 for qemu-devel@nongnu.org; Fri, 20 Sep 2019 12:21:20 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iBLen-0008El-NG for qemu-devel@nongnu.org; Fri, 20 Sep 2019 12:21:19 -0400 Received: from mx1.redhat.com ([209.132.183.28]:44942) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iBLeh-0008BL-Ns; Fri, 20 Sep 2019 12:21:13 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 03D6981F01; Fri, 20 Sep 2019 16:21:10 +0000 (UTC) Received: from localhost.localdomain.com (ovpn-117-81.ams2.redhat.com [10.36.117.81]) by smtp.corp.redhat.com (Postfix) with ESMTP id F25D4646A1; Fri, 20 Sep 2019 16:21:08 +0000 (UTC) From: Kevin Wolf To: qemu-block@nongnu.org Subject: [PULL 4/4] iotests: Remove Python 2 compatibility code Date: Fri, 20 Sep 2019 18:20:58 +0200 Message-Id: <20190920162058.29743-5-kwolf@redhat.com> In-Reply-To: <20190920162058.29743-1-kwolf@redhat.com> References: <20190920162058.29743-1-kwolf@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Fri, 20 Sep 2019 16:21:10 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 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, peter.maydell@linaro.org, qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" Some scripts check the Python version number and have two code paths to accomodate both Python 2 and 3. Remove the code specific to Python 2 and assert the minimum version of 3.6 instead (check skips Python tests in this case, so the assertion would only ever trigger if a Python script is executed manually). Signed-off-by: Kevin Wolf Reviewed-by: Eduardo Habkost Reviewed-by: Thomas Huth Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: John Snow Reviewed-by: Vladimir Sementsov-Ogievskiy --- tests/qemu-iotests/044 | 3 --- tests/qemu-iotests/163 | 3 --- tests/qemu-iotests/iotests.py | 13 +++---------- tests/qemu-iotests/nbd-fault-injector.py | 7 +++---- 4 files changed, 6 insertions(+), 20 deletions(-) diff --git a/tests/qemu-iotests/044 b/tests/qemu-iotests/044 index 05ea1f49c5..8b2afa2a11 100755 --- a/tests/qemu-iotests/044 +++ b/tests/qemu-iotests/044 @@ -28,9 +28,6 @@ import struct import subprocess import sys =20 -if sys.version_info.major =3D=3D 2: - range =3D xrange - test_img =3D os.path.join(iotests.test_dir, 'test.img') =20 class TestRefcountTableGrowth(iotests.QMPTestCase): diff --git a/tests/qemu-iotests/163 b/tests/qemu-iotests/163 index 081ccc8ac1..d94728e080 100755 --- a/tests/qemu-iotests/163 +++ b/tests/qemu-iotests/163 @@ -21,9 +21,6 @@ import os, random, iotests, struct, qcow2, sys from iotests import qemu_img, qemu_io, image_size =20 -if sys.version_info.major =3D=3D 2: - range =3D xrange - test_img =3D os.path.join(iotests.test_dir, 'test.img') check_img =3D os.path.join(iotests.test_dir, 'check.img') =20 diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py index b26271187c..9fb5181c3d 100644 --- a/tests/qemu-iotests/iotests.py +++ b/tests/qemu-iotests/iotests.py @@ -35,6 +35,7 @@ from collections import OrderedDict sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..', 'pytho= n')) from qemu import qtest =20 +assert sys.version_info >=3D (3,6) =20 # This will not work if arguments contain spaces but is necessary if we # want to support the override options that ./check supports. @@ -250,10 +251,7 @@ def image_size(img): return json.loads(r)['virtual-size'] =20 def is_str(val): - if sys.version_info.major >=3D 3: - return isinstance(val, str) - else: - return isinstance(val, str) or isinstance(val, unicode) + return isinstance(val, str) =20 test_dir_re =3D re.compile(r"%s" % test_dir) def filter_test_dir(msg): @@ -935,12 +933,7 @@ def execute_test(test_function=3DNone, else: # We need to filter out the time taken from the output so that # qemu-iotest can reliably diff the results against master output. - if sys.version_info.major >=3D 3: - output =3D io.StringIO() - else: - # io.StringIO is for unicode strings, which is not what - # 2.x's test runner emits. - output =3D io.BytesIO() + output =3D io.StringIO() =20 logging.basicConfig(level=3D(logging.DEBUG if debug else logging.WARN)) =20 diff --git a/tests/qemu-iotests/nbd-fault-injector.py b/tests/qemu-iotests/= nbd-fault-injector.py index 6b2d659dee..43f095ceef 100755 --- a/tests/qemu-iotests/nbd-fault-injector.py +++ b/tests/qemu-iotests/nbd-fault-injector.py @@ -48,10 +48,9 @@ import sys import socket import struct import collections -if sys.version_info.major >=3D 3: - import configparser -else: - import ConfigParser as configparser +import configparser + +assert sys.version_info >=3D (3,6) =20 FAKE_DISK_SIZE =3D 8 * 1024 * 1024 * 1024 # 8 GB =20 --=20 2.20.1