On Mon, 2019-09-09 at 11:35 +0100, Daniel P. Berrangé wrote: > On Fri, Sep 06, 2019 at 10:57:50PM +0300, Maxim Levitsky wrote: > > Signed-off-by: Maxim Levitsky <mlevi...@redhat.com> > > --- > > tests/qemu-iotests/263 | 75 ++++++++++++++++++++++++++++++++++++++ > > tests/qemu-iotests/263.out | 19 ++++++++++ > > tests/qemu-iotests/group | 1 + > > 3 files changed, 95 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 0000000000..36951ff7b4 > > --- /dev/null > > +++ b/tests/qemu-iotests/263 > > @@ -0,0 +1,75 @@ > > +#!/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=mlevi...@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" > > + > > +_make_test_img --object $SECRET -o > > "encrypt.format=luks,encrypt.key-secret=sec0,encrypt.iter-time=10,cluster_size=64K" > > $size > > + > > +IMGSPEC="driver=$IMGFMT,encrypt.key-secret=sec0,file.filename=$TEST_IMG" > > + > > +QEMU_IO_OPTIONS=$QEMU_IO_OPTIONS_NO_FMT > > + > > +echo > > +echo "== reading the whole image ==" > > +$QEMU_IO --object $SECRET -c "read -P 0 0 $size" --image-opts $IMGSPEC | > > _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 > > $IMGSPEC | _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 > > $IMGSPEC | _filter_qemu_io | _filter_testdir > > +$QEMU_IO --object $SECRET -c "read -P 0xAA 0x0FE00 0x400" --image-opts > > $IMGSPEC | _filter_qemu_io | _filter_testdir > > +$QEMU_IO --object $SECRET -c "read -P 0x00 0x10200 0xEFE00" --image-opts > > $IMGSPEC | _filter_qemu_io | _filter_testdir > > This tests LUKS encryption, but the code you'r changing/fixing also used > for the traditionl qcow2 encryption. The difference in IV handling for > these two methods is what made this code confusing, so I'd like to see > that the test also covers traditional qcow2 encryption. This is very good idea. Done.
> > Also can you confirm that the test succeeds when run on a qemu > built against 8c1ecb590497b0349c550607db923972b37f6963 (the change > immediately before Vladimir's threading series) ? Yes, the test fails with this commit. It also fails on master and works with my fix (both encryption case). > > > Regards, > Daniel Best regards, Maxim Levitsky