4172d6971a
- kvm-block-Use-QEMU_IS_ALIGNED.patch [bz#1745922] - kvm-block-qcow2-Fix-corruption-introduced-by-commit-8ac0.patch [bz#1745922] - kvm-block-qcow2-refactor-encryption-code.patch [bz#1745922] - kvm-qemu-iotests-Add-test-for-bz-1745922.patch [bz#1745922] - Resolves: bz#1745922 (Luks-inside-qcow2 snapshot cannot boot after 'qemu-img rebase')
192 lines
6.1 KiB
Diff
192 lines
6.1 KiB
Diff
From a888b935e29a08f0ace84906fee84b41a5f8b95d Mon Sep 17 00:00:00 2001
|
|
From: Maxim Levitsky <mlevitsk@redhat.com>
|
|
Date: Tue, 24 Sep 2019 21:11:52 +0100
|
|
Subject: [PATCH 4/4] qemu-iotests: Add test for bz #1745922
|
|
|
|
RH-Author: Maxim Levitsky <mlevitsk@redhat.com>
|
|
Message-id: <20190924211152.13461-5-mlevitsk@redhat.com>
|
|
Patchwork-id: 90877
|
|
O-Subject: [RHEL-AV-8.1.0 qemu-kvm PATCH v2 4/4] qemu-iotests: Add test for bz #1745922
|
|
Bugzilla: 1745922
|
|
RH-Acked-by: John Snow <jsnow@redhat.com>
|
|
RH-Acked-by: Max Reitz <mreitz@redhat.com>
|
|
RH-Acked-by: Danilo de Paula <ddepaula@redhat.com>
|
|
|
|
Signed-off-by: Maxim Levitsky <mlevitsk@redhat.com>
|
|
Tested-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
|
|
Message-id: 20190915203655.21638-4-mlevitsk@redhat.com
|
|
Reviewed-by: Max Reitz <mreitz@redhat.com>
|
|
Signed-off-by: Max Reitz <mreitz@redhat.com>
|
|
(cherry picked from commit 1825cc0783ccf0ec5d9f0b225a99b340bdd4c68f)
|
|
Signed-off-by: Maxim Levitsky <mlevitsk@redhat.com>
|
|
|
|
Conflicts:
|
|
tests/qemu-iotests/group
|
|
usual conflicts with missing tests
|
|
|
|
Signed-off-by: Danilo C. L. de Paula <ddepaula@redhat.com>
|
|
---
|
|
tests/qemu-iotests/263 | 91 ++++++++++++++++++++++++++++++++++++++++++++++
|
|
tests/qemu-iotests/263.out | 40 ++++++++++++++++++++
|
|
tests/qemu-iotests/group | 1 +
|
|
3 files changed, 132 insertions(+)
|
|
create mode 100755 tests/qemu-iotests/263
|
|
create mode 100644 tests/qemu-iotests/263.out
|
|
|
|
diff --git a/tests/qemu-iotests/263 b/tests/qemu-iotests/263
|
|
new file mode 100755
|
|
index 0000000..d2c030f
|
|
--- /dev/null
|
|
+++ b/tests/qemu-iotests/263
|
|
@@ -0,0 +1,91 @@
|
|
+#!/usr/bin/env bash
|
|
+#
|
|
+# Test encrypted write that crosses cluster boundary of two unallocated clusters
|
|
+# Based on 188
|
|
+#
|
|
+# 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 <http://www.gnu.org/licenses/>.
|
|
+#
|
|
+
|
|
+# creator
|
|
+owner=mlevitsk@redhat.com
|
|
+
|
|
+seq=`basename $0`
|
|
+echo "QA output created by $seq"
|
|
+
|
|
+status=1 # 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
|
|
+
|
|
+_supported_fmt qcow2
|
|
+_supported_proto generic
|
|
+_supported_os Linux
|
|
+
|
|
+
|
|
+size=1M
|
|
+
|
|
+SECRET="secret,id=sec0,data=astrochicken"
|
|
+QEMU_IO_OPTIONS=$QEMU_IO_OPTIONS_NO_FMT
|
|
+
|
|
+
|
|
+_run_test()
|
|
+{
|
|
+ echo "== reading the whole image =="
|
|
+ $QEMU_IO --object $SECRET -c "read -P 0 0 $size" --image-opts "$1" | _filter_qemu_io | _filter_testdir
|
|
+
|
|
+ echo
|
|
+ echo "== write two 512 byte sectors on a cluster boundary =="
|
|
+ $QEMU_IO --object $SECRET -c "write -P 0xAA 0xFE00 0x400" --image-opts "$1" | _filter_qemu_io | _filter_testdir
|
|
+
|
|
+ echo
|
|
+ echo "== verify that the rest of the image is not changed =="
|
|
+ $QEMU_IO --object $SECRET -c "read -P 0x00 0x00000 0xFE00" --image-opts "$1" | _filter_qemu_io | _filter_testdir
|
|
+ $QEMU_IO --object $SECRET -c "read -P 0xAA 0x0FE00 0x400" --image-opts "$1" | _filter_qemu_io | _filter_testdir
|
|
+ $QEMU_IO --object $SECRET -c "read -P 0x00 0x10200 0xEFE00" --image-opts "$1" | _filter_qemu_io | _filter_testdir
|
|
+
|
|
+}
|
|
+
|
|
+
|
|
+echo
|
|
+echo "testing LUKS qcow2 encryption"
|
|
+echo
|
|
+
|
|
+_make_test_img --object $SECRET -o "encrypt.format=luks,encrypt.key-secret=sec0,encrypt.iter-time=10,cluster_size=64K" $size
|
|
+_run_test "driver=$IMGFMT,encrypt.key-secret=sec0,file.filename=$TEST_IMG"
|
|
+_cleanup_test_img
|
|
+
|
|
+echo
|
|
+echo "testing legacy AES qcow2 encryption"
|
|
+echo
|
|
+
|
|
+
|
|
+_make_test_img --object $SECRET -o "encrypt.format=aes,encrypt.key-secret=sec0,cluster_size=64K" $size
|
|
+_run_test "driver=$IMGFMT,encrypt.key-secret=sec0,file.filename=$TEST_IMG"
|
|
+_cleanup_test_img
|
|
+
|
|
+
|
|
+
|
|
+# success, all done
|
|
+echo "*** done"
|
|
+rm -f $seq.full
|
|
+status=0
|
|
diff --git a/tests/qemu-iotests/263.out b/tests/qemu-iotests/263.out
|
|
new file mode 100644
|
|
index 0000000..0c982c5
|
|
--- /dev/null
|
|
+++ b/tests/qemu-iotests/263.out
|
|
@@ -0,0 +1,40 @@
|
|
+QA output created by 263
|
|
+
|
|
+testing LUKS qcow2 encryption
|
|
+
|
|
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576 encrypt.format=luks encrypt.key-secret=sec0 encrypt.iter-time=10
|
|
+== reading the whole image ==
|
|
+read 1048576/1048576 bytes at offset 0
|
|
+1 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
+
|
|
+== write two 512 byte sectors on a cluster boundary ==
|
|
+wrote 1024/1024 bytes at offset 65024
|
|
+1 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
+
|
|
+== verify that the rest of the image is not changed ==
|
|
+read 65024/65024 bytes at offset 0
|
|
+63.500 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
+read 1024/1024 bytes at offset 65024
|
|
+1 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
+read 982528/982528 bytes at offset 66048
|
|
+959.500 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
+
|
|
+testing legacy AES qcow2 encryption
|
|
+
|
|
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576 encrypt.format=aes encrypt.key-secret=sec0
|
|
+== reading the whole image ==
|
|
+read 1048576/1048576 bytes at offset 0
|
|
+1 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
+
|
|
+== write two 512 byte sectors on a cluster boundary ==
|
|
+wrote 1024/1024 bytes at offset 65024
|
|
+1 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
+
|
|
+== verify that the rest of the image is not changed ==
|
|
+read 65024/65024 bytes at offset 0
|
|
+63.500 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
+read 1024/1024 bytes at offset 65024
|
|
+1 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
+read 982528/982528 bytes at offset 66048
|
|
+959.500 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
+*** done
|
|
diff --git a/tests/qemu-iotests/group b/tests/qemu-iotests/group
|
|
index 813db25..4a7e08f 100644
|
|
--- a/tests/qemu-iotests/group
|
|
+++ b/tests/qemu-iotests/group
|
|
@@ -271,3 +271,4 @@
|
|
254 rw backing quick
|
|
255 rw quick
|
|
256 rw quick
|
|
+263 rw quick
|
|
\ No newline at end of file
|
|
--
|
|
1.8.3.1
|
|
|