qemu with hax to log dma reads & writes jcs.org/2018/11/12/vfio

iotests: Test reverse sub-cluster qcow2 writes

This exercises the regression introduced in commit
50ba5b2d994853b38fed10e0841b119da0f8b8e5. On my machine, it has close
to a 50 % false-negative rate, but that should still be sufficient to
test the fix.

Signed-off-by: Max Reitz <mreitz@redhat.com>
Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>
Reviewed-by: John Snow <jsnow@redhat.com>
Tested-by: Stefano Garzarella <sgarzare@redhat.com>
Tested-by: John Snow <jsnow@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>

authored by

Max Reitz and committed by
Kevin Wolf
ae6ef019 b2c6f23f

+74
+67
tests/qemu-iotests/265
··· 1 + #!/usr/bin/env bash 2 + # 3 + # Test reverse-ordered qcow2 writes on a sub-cluster level 4 + # 5 + # Copyright (C) 2019 Red Hat, Inc. 6 + # 7 + # This program is free software; you can redistribute it and/or modify 8 + # it under the terms of the GNU General Public License as published by 9 + # the Free Software Foundation; either version 2 of the License, or 10 + # (at your option) any later version. 11 + # 12 + # This program is distributed in the hope that it will be useful, 13 + # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 + # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 + # GNU General Public License for more details. 16 + # 17 + # You should have received a copy of the GNU General Public License 18 + # along with this program. If not, see <http://www.gnu.org/licenses/>. 19 + # 20 + 21 + seq=$(basename $0) 22 + echo "QA output created by $seq" 23 + 24 + status=1 # failure is the default! 25 + 26 + _cleanup() 27 + { 28 + _cleanup_test_img 29 + } 30 + trap "_cleanup; exit \$status" 0 1 2 3 15 31 + 32 + # get standard environment, filters and checks 33 + . ./common.rc 34 + . ./common.filter 35 + 36 + # qcow2-specific test 37 + _supported_fmt qcow2 38 + _supported_proto file 39 + _supported_os Linux 40 + 41 + echo '--- Writing to the image ---' 42 + 43 + # Reduce cluster size so we get more and quicker I/O 44 + IMGOPTS='cluster_size=4096' _make_test_img 1M 45 + (for ((kb = 1024 - 4; kb >= 0; kb -= 4)); do \ 46 + echo "aio_write -P 42 $((kb + 1))k 2k"; \ 47 + done) \ 48 + | $QEMU_IO "$TEST_IMG" > /dev/null 49 + 50 + echo '--- Verifying its content ---' 51 + 52 + (for ((kb = 0; kb < 1024; kb += 4)); do \ 53 + echo "read -P 0 ${kb}k 1k"; \ 54 + echo "read -P 42 $((kb + 1))k 2k"; \ 55 + echo "read -P 0 $((kb + 3))k 1k"; \ 56 + done) \ 57 + | $QEMU_IO "$TEST_IMG" | _filter_qemu_io | grep 'verification' 58 + 59 + # Status of qemu-io 60 + if [ ${PIPESTATUS[1]} = 0 ]; then 61 + echo 'Content verified.' 62 + fi 63 + 64 + # success, all done 65 + echo "*** done" 66 + rm -f $seq.full 67 + status=0
+6
tests/qemu-iotests/265.out
··· 1 + QA output created by 265 2 + --- Writing to the image --- 3 + Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576 4 + --- Verifying its content --- 5 + Content verified. 6 + *** done
+1
tests/qemu-iotests/group
··· 274 274 257 rw 275 275 258 rw quick 276 276 262 rw quick migration 277 + 265 rw auto quick