xemu/tests/qemu-iotests/271.out
Vladimir Sementsov-Ogievskiy ff812c5563 qcow2: handle_dependencies(): relax conflict detection
There is no conflict and no dependency if we have parallel writes to
different subclusters of one cluster when the cluster itself is already
allocated. So, relax extra dependency.

Measure performance:
First, prepare build/qemu-img-old and build/qemu-img-new images.

cd scripts/simplebench
./img_bench_templater.py

Paste the following to stdin of running script:

qemu_img=../../build/qemu-img-{old|new}
$qemu_img create -f qcow2 -o extended_l2=on /ssd/x.qcow2 1G
$qemu_img bench -c 100000 -d 8 [-s 2K|-s 2K -o 512|-s $((1024*2+512))] \
        -w -t none -n /ssd/x.qcow2

The result:

All results are in seconds

------------------  ---------  ---------
                    old        new
-s 2K               6.7 ± 15%  6.2 ± 12%
                                 -7%
-s 2K -o 512        13 ± 3%    11 ± 5%
                                 -16%
-s $((1024*2+512))  9.5 ± 4%   8.4
                                 -12%
------------------  ---------  ---------

So small writes are more independent now and that helps to keep deeper
io queue which improves performance.

271 iotest output becomes racy for three allocation in one cluster.
Second and third writes may finish in different order. Second and
third requests don't depend on each other any more. Still they both
depend on first request anyway. Filter out second and third write
offsets to cover both possible outputs.

Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Message-Id: <20210824101517.59802-4-vsementsov@virtuozzo.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Hanna Reitz <hreitz@redhat.com>
[hreitz: s/ an / and /]
Signed-off-by: Hanna Reitz <hreitz@redhat.com>
2021-09-15 15:54:07 +02:00

727 lines
29 KiB
Plaintext

QA output created by 271
### Standard write tests (backing file: yes) ###
Formatting 'TEST_DIR/t.IMGFMT.raw', fmt=raw size=1048576
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=raw size=1048576
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=raw
write -q -P PATTERN 0 1k
L2 entry #0: 0x8000000000050000 0000000000000001
write -q -P PATTERN 3k 512
L2 entry #0: 0x8000000000050000 0000000000000003
write -q -P PATTERN 5k 1k
L2 entry #0: 0x8000000000050000 0000000000000007
write -q -P PATTERN 6k 2k
L2 entry #0: 0x8000000000050000 000000000000000f
write -q -P PATTERN 8k 6k
L2 entry #0: 0x8000000000050000 000000000000007f
write -q -P PATTERN 15k 4k
L2 entry #0: 0x8000000000050000 00000000000003ff
write -q -P PATTERN 32k 1k
L2 entry #0: 0x8000000000050000 00000000000103ff
write -q -P PATTERN 63k 4k
L2 entry #0: 0x8000000000050000 00000000800103ff
L2 entry #1: 0x8000000000060000 0000000000000003
write -q -z 2k 2k
L2 entry #0: 0x8000000000050000 00000002800103fd
write -q -z 0 64k
L2 entry #0: 0x8000000000050000 ffffffff00000000
write -q -P PATTERN 0 64k
L2 entry #0: 0x8000000000050000 00000000ffffffff
write -q -z -u 0 32k
L2 entry #0: 0x8000000000050000 0000ffffffff0000
write -q -z -u 0 64k
L2 entry #0: 0x0000000000000000 ffffffff00000000
write -q -P PATTERN 3k 512
L2 entry #0: 0x8000000000050000 fffffffd00000002
write -q -P PATTERN 0 64k
L2 entry #0: 0x8000000000050000 00000000ffffffff
discard -q 0 64k
L2 entry #0: 0x0000000000000000 ffffffff00000000
write -q -c -P PATTERN 0 64k
L2 entry #0: 0x4000000000050000 0000000000000000
write -q -P PATTERN 3k 512
L2 entry #0: 0x8000000000070000 00000000ffffffff
### Standard write tests (backing file: no) ###
Formatting 'TEST_DIR/t.IMGFMT.raw', fmt=raw size=1048576
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576
write -q -P PATTERN 0 1k
L2 entry #0: 0x8000000000050000 0000000000000001
write -q -P PATTERN 3k 512
L2 entry #0: 0x8000000000050000 0000000000000003
write -q -P PATTERN 5k 1k
L2 entry #0: 0x8000000000050000 0000000000000007
write -q -P PATTERN 6k 2k
L2 entry #0: 0x8000000000050000 000000000000000f
write -q -P PATTERN 8k 6k
L2 entry #0: 0x8000000000050000 000000000000007f
write -q -P PATTERN 15k 4k
L2 entry #0: 0x8000000000050000 00000000000003ff
write -q -P PATTERN 32k 1k
L2 entry #0: 0x8000000000050000 00000000000103ff
write -q -P PATTERN 63k 4k
L2 entry #0: 0x8000000000050000 00000000800103ff
L2 entry #1: 0x8000000000060000 0000000000000003
write -q -z 2k 2k
L2 entry #0: 0x8000000000050000 00000002800103fd
write -q -z 0 64k
L2 entry #0: 0x8000000000050000 ffffffff00000000
write -q -P PATTERN 0 64k
L2 entry #0: 0x8000000000050000 00000000ffffffff
write -q -z -u 0 32k
L2 entry #0: 0x8000000000050000 0000ffffffff0000
write -q -z -u 0 64k
L2 entry #0: 0x0000000000000000 ffffffff00000000
write -q -P PATTERN 3k 512
L2 entry #0: 0x8000000000050000 fffffffd00000002
write -q -P PATTERN 0 64k
L2 entry #0: 0x8000000000050000 00000000ffffffff
discard -q 0 64k
L2 entry #0: 0x0000000000000000 ffffffff00000000
write -q -c -P PATTERN 0 64k
L2 entry #0: 0x4000000000050000 0000000000000000
write -q -P PATTERN 3k 512
L2 entry #0: 0x8000000000070000 00000000ffffffff
### Overwriting several clusters without COW ###
Formatting 'TEST_DIR/t.IMGFMT.raw', fmt=raw size=1048576
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576
write -q -P PATTERN 24k 40k
L2 entry #0: 0x8000000000050000 00000000fffff000
write -q -P PATTERN 90k 2k
L2 entry #1: 0x8000000000060000 0000000000002000
write -q -P PATTERN 156k 2k
L2 entry #2: 0x8000000000070000 0000000000004000
write -q -z 156k 2k
L2 entry #2: 0x8000000000070000 0000400000000000
write -q -P PATTERN 192k 34k
L2 entry #3: 0x8000000000080000 000000000001ffff
write -q -P PATTERN 24k 192k
L2 entry #0: 0x8000000000050000 00000000fffff000
L2 entry #1: 0x8000000000060000 00000000ffffffff
L2 entry #2: 0x8000000000070000 00000000ffffffff
L2 entry #3: 0x8000000000080000 000000000001ffff
### Writing zeroes 1: unallocated clusters (backing file: yes) ###
Formatting 'TEST_DIR/t.IMGFMT.raw', fmt=raw size=2132992
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=raw size=2132992
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=2132992 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=raw
write -q -z 0 192k
L2 entry #0: 0x0000000000000000 ffffffff00000000
L2 entry #1: 0x0000000000000000 ffffffff00000000
L2 entry #2: 0x0000000000000000 ffffffff00000000
write -q -z 224k 128k
L2 entry #3: 0x0000000000000000 ffff000000000000
L2 entry #4: 0x0000000000000000 ffffffff00000000
L2 entry #5: 0x0000000000000000 0000ffff00000000
write -q -z 415k 128k
L2 entry #6: 0x8000000000050000 ffff000000008000
L2 entry #7: 0x0000000000000000 ffffffff00000000
L2 entry #8: 0x8000000000060000 00007fff00008000
### Writing zeroes 2: allocated clusters (backing file: yes) ###
write -q -P PATTERN 576k 576k
L2 entry #9: 0x8000000000070000 00000000ffffffff
L2 entry #10: 0x8000000000080000 00000000ffffffff
L2 entry #11: 0x8000000000090000 00000000ffffffff
L2 entry #12: 0x80000000000a0000 00000000ffffffff
L2 entry #13: 0x80000000000b0000 00000000ffffffff
L2 entry #14: 0x80000000000c0000 00000000ffffffff
L2 entry #15: 0x80000000000d0000 00000000ffffffff
L2 entry #16: 0x80000000000e0000 00000000ffffffff
L2 entry #17: 0x80000000000f0000 00000000ffffffff
write -q -z 576k 192k
L2 entry #9: 0x8000000000070000 ffffffff00000000
L2 entry #10: 0x8000000000080000 ffffffff00000000
L2 entry #11: 0x8000000000090000 ffffffff00000000
write -q -z 800k 128k
L2 entry #12: 0x80000000000a0000 ffff00000000ffff
L2 entry #13: 0x80000000000b0000 ffffffff00000000
L2 entry #14: 0x80000000000c0000 0000ffffffff0000
write -q -z 991k 128k
L2 entry #15: 0x80000000000d0000 ffff00000000ffff
L2 entry #16: 0x80000000000e0000 ffffffff00000000
L2 entry #17: 0x80000000000f0000 00007fffffff8000
### Writing zeroes 3: compressed clusters (backing file: yes) ###
write -q -c -P PATTERN 1152k 64k
L2 entry #18: 0x4000000000100000 0000000000000000
write -q -c -P PATTERN 1216k 64k
L2 entry #19: 0x4000000000110000 0000000000000000
write -q -c -P PATTERN 1280k 64k
L2 entry #20: 0x4000000000120000 0000000000000000
write -q -c -P PATTERN 1344k 64k
L2 entry #21: 0x4000000000130000 0000000000000000
write -q -c -P PATTERN 1408k 64k
L2 entry #22: 0x4000000000140000 0000000000000000
write -q -c -P PATTERN 1472k 64k
L2 entry #23: 0x4000000000150000 0000000000000000
write -q -c -P PATTERN 1536k 64k
L2 entry #24: 0x4000000000160000 0000000000000000
write -q -c -P PATTERN 1600k 64k
L2 entry #25: 0x4000000000170000 0000000000000000
write -q -c -P PATTERN 1664k 64k
L2 entry #26: 0x4000000000180000 0000000000000000
write -q -c -P PATTERN 1728k 64k
L2 entry #27: 0x4000000000190000 0000000000000000
write -q -c -P PATTERN 1792k 64k
L2 entry #28: 0x40000000001a0000 0000000000000000
write -q -z 1152k 192k
L2 entry #18: 0x0000000000000000 ffffffff00000000
L2 entry #19: 0x0000000000000000 ffffffff00000000
L2 entry #20: 0x0000000000000000 ffffffff00000000
write -q -z 1376k 128k
L2 entry #21: 0x8000000000100000 00000000ffffffff
L2 entry #22: 0x8000000000110000 00000000ffffffff
L2 entry #23: 0x8000000000120000 00000000ffffffff
write -q -z 1567k 129k
L2 entry #24: 0x8000000000130000 00000000ffffffff
L2 entry #25: 0x8000000000140000 00000000ffffffff
L2 entry #26: 0x8000000000150000 00000000ffffffff
write -q -z 1759k 128k
L2 entry #27: 0x8000000000160000 ffff00000000ffff
L2 entry #28: 0x0000000000000000 ffffffff00000000
L2 entry #29: 0x8000000000170000 00007fff00008000
### Writing zeroes 4: other tests (backing file: yes) ###
write -q -z 1951k 8k
L2 entry #30: 0x8000000000180000 0007000000088000
write -q -z 2048k 35k
L2 entry #32: 0x0000000000000000 0003ffff00000000
### Writing zeroes 1: unallocated clusters (backing file: no) ###
Formatting 'TEST_DIR/t.IMGFMT.raw', fmt=raw size=2132992
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=2132992
write -q -z 0 192k
L2 entry #0: 0x0000000000000000 ffffffff00000000
L2 entry #1: 0x0000000000000000 ffffffff00000000
L2 entry #2: 0x0000000000000000 ffffffff00000000
write -q -z 224k 128k
L2 entry #3: 0x0000000000000000 ffff000000000000
L2 entry #4: 0x0000000000000000 ffffffff00000000
L2 entry #5: 0x0000000000000000 0000ffff00000000
write -q -z 415k 128k
L2 entry #6: 0x0000000000000000 ffff800000000000
L2 entry #7: 0x0000000000000000 ffffffff00000000
L2 entry #8: 0x0000000000000000 0000ffff00000000
### Writing zeroes 2: allocated clusters (backing file: no) ###
write -q -P PATTERN 576k 576k
L2 entry #9: 0x8000000000050000 00000000ffffffff
L2 entry #10: 0x8000000000060000 00000000ffffffff
L2 entry #11: 0x8000000000070000 00000000ffffffff
L2 entry #12: 0x8000000000080000 00000000ffffffff
L2 entry #13: 0x8000000000090000 00000000ffffffff
L2 entry #14: 0x80000000000a0000 00000000ffffffff
L2 entry #15: 0x80000000000b0000 00000000ffffffff
L2 entry #16: 0x80000000000c0000 00000000ffffffff
L2 entry #17: 0x80000000000d0000 00000000ffffffff
write -q -z 576k 192k
L2 entry #9: 0x8000000000050000 ffffffff00000000
L2 entry #10: 0x8000000000060000 ffffffff00000000
L2 entry #11: 0x8000000000070000 ffffffff00000000
write -q -z 800k 128k
L2 entry #12: 0x8000000000080000 ffff00000000ffff
L2 entry #13: 0x8000000000090000 ffffffff00000000
L2 entry #14: 0x80000000000a0000 0000ffffffff0000
write -q -z 991k 128k
L2 entry #15: 0x80000000000b0000 ffff00000000ffff
L2 entry #16: 0x80000000000c0000 ffffffff00000000
L2 entry #17: 0x80000000000d0000 00007fffffff8000
### Writing zeroes 3: compressed clusters (backing file: no) ###
write -q -c -P PATTERN 1152k 64k
L2 entry #18: 0x40000000000e0000 0000000000000000
write -q -c -P PATTERN 1216k 64k
L2 entry #19: 0x40000000000f0000 0000000000000000
write -q -c -P PATTERN 1280k 64k
L2 entry #20: 0x4000000000100000 0000000000000000
write -q -c -P PATTERN 1344k 64k
L2 entry #21: 0x4000000000110000 0000000000000000
write -q -c -P PATTERN 1408k 64k
L2 entry #22: 0x4000000000120000 0000000000000000
write -q -c -P PATTERN 1472k 64k
L2 entry #23: 0x4000000000130000 0000000000000000
write -q -c -P PATTERN 1536k 64k
L2 entry #24: 0x4000000000140000 0000000000000000
write -q -c -P PATTERN 1600k 64k
L2 entry #25: 0x4000000000150000 0000000000000000
write -q -c -P PATTERN 1664k 64k
L2 entry #26: 0x4000000000160000 0000000000000000
write -q -c -P PATTERN 1728k 64k
L2 entry #27: 0x4000000000170000 0000000000000000
write -q -c -P PATTERN 1792k 64k
L2 entry #28: 0x4000000000180000 0000000000000000
write -q -z 1152k 192k
L2 entry #18: 0x0000000000000000 ffffffff00000000
L2 entry #19: 0x0000000000000000 ffffffff00000000
L2 entry #20: 0x0000000000000000 ffffffff00000000
write -q -z 1376k 128k
L2 entry #21: 0x80000000000e0000 00000000ffffffff
L2 entry #22: 0x80000000000f0000 00000000ffffffff
L2 entry #23: 0x8000000000100000 00000000ffffffff
write -q -z 1567k 129k
L2 entry #24: 0x8000000000110000 00000000ffffffff
L2 entry #25: 0x8000000000120000 00000000ffffffff
L2 entry #26: 0x8000000000130000 00000000ffffffff
write -q -z 1759k 128k
L2 entry #27: 0x8000000000140000 ffff00000000ffff
L2 entry #28: 0x0000000000000000 ffffffff00000000
L2 entry #29: 0x0000000000000000 0000ffff00000000
### Writing zeroes 4: other tests (backing file: no) ###
write -q -z 1951k 8k
L2 entry #30: 0x0000000000000000 000f800000000000
write -q -z 2048k 35k
L2 entry #32: 0x0000000000000000 0003ffff00000000
### Zero + unmap 1: allocated clusters (backing file: yes) ###
Formatting 'TEST_DIR/t.IMGFMT.raw', fmt=raw size=2132992
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=raw size=2132992
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=2132992 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=raw
write -q -P PATTERN 576k 576k
L2 entry #9: 0x8000000000050000 00000000ffffffff
L2 entry #10: 0x8000000000060000 00000000ffffffff
L2 entry #11: 0x8000000000070000 00000000ffffffff
L2 entry #12: 0x8000000000080000 00000000ffffffff
L2 entry #13: 0x8000000000090000 00000000ffffffff
L2 entry #14: 0x80000000000a0000 00000000ffffffff
L2 entry #15: 0x80000000000b0000 00000000ffffffff
L2 entry #16: 0x80000000000c0000 00000000ffffffff
L2 entry #17: 0x80000000000d0000 00000000ffffffff
write -q -z -u 576k 192k
L2 entry #9: 0x0000000000000000 ffffffff00000000
L2 entry #10: 0x0000000000000000 ffffffff00000000
L2 entry #11: 0x0000000000000000 ffffffff00000000
write -q -z -u 800k 128k
L2 entry #12: 0x8000000000080000 ffff00000000ffff
L2 entry #13: 0x0000000000000000 ffffffff00000000
L2 entry #14: 0x80000000000a0000 0000ffffffff0000
write -q -z -u 991k 128k
L2 entry #15: 0x80000000000b0000 ffff00000000ffff
L2 entry #16: 0x0000000000000000 ffffffff00000000
L2 entry #17: 0x80000000000d0000 00007fffffff8000
### Zero + unmap 2: compressed clusters (backing file: yes) ###
write -q -c -P PATTERN 1152k 64k
L2 entry #18: 0x4000000000050000 0000000000000000
write -q -c -P PATTERN 1216k 64k
L2 entry #19: 0x4000000000060000 0000000000000000
write -q -c -P PATTERN 1280k 64k
L2 entry #20: 0x4000000000070000 0000000000000000
write -q -c -P PATTERN 1344k 64k
L2 entry #21: 0x4000000000090000 0000000000000000
write -q -c -P PATTERN 1408k 64k
L2 entry #22: 0x40000000000c0000 0000000000000000
write -q -c -P PATTERN 1472k 64k
L2 entry #23: 0x40000000000e0000 0000000000000000
write -q -c -P PATTERN 1536k 64k
L2 entry #24: 0x40000000000f0000 0000000000000000
write -q -c -P PATTERN 1600k 64k
L2 entry #25: 0x4000000000100000 0000000000000000
write -q -c -P PATTERN 1664k 64k
L2 entry #26: 0x4000000000110000 0000000000000000
write -q -c -P PATTERN 1728k 64k
L2 entry #27: 0x4000000000120000 0000000000000000
write -q -c -P PATTERN 1792k 64k
L2 entry #28: 0x4000000000130000 0000000000000000
write -q -z -u 1152k 192k
L2 entry #18: 0x0000000000000000 ffffffff00000000
L2 entry #19: 0x0000000000000000 ffffffff00000000
L2 entry #20: 0x0000000000000000 ffffffff00000000
write -q -z -u 1376k 128k
L2 entry #21: 0x8000000000050000 00000000ffffffff
L2 entry #22: 0x8000000000060000 00000000ffffffff
L2 entry #23: 0x8000000000070000 00000000ffffffff
write -q -z -u 1567k 129k
L2 entry #24: 0x8000000000090000 00000000ffffffff
L2 entry #25: 0x80000000000e0000 00000000ffffffff
L2 entry #26: 0x80000000000f0000 00000000ffffffff
write -q -z -u 1759k 128k
L2 entry #27: 0x80000000000c0000 ffff00000000ffff
L2 entry #28: 0x0000000000000000 ffffffff00000000
L2 entry #29: 0x8000000000100000 00007fff00008000
### Zero + unmap 1: allocated clusters (backing file: no) ###
Formatting 'TEST_DIR/t.IMGFMT.raw', fmt=raw size=2132992
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=2132992
write -q -P PATTERN 576k 576k
L2 entry #9: 0x8000000000050000 00000000ffffffff
L2 entry #10: 0x8000000000060000 00000000ffffffff
L2 entry #11: 0x8000000000070000 00000000ffffffff
L2 entry #12: 0x8000000000080000 00000000ffffffff
L2 entry #13: 0x8000000000090000 00000000ffffffff
L2 entry #14: 0x80000000000a0000 00000000ffffffff
L2 entry #15: 0x80000000000b0000 00000000ffffffff
L2 entry #16: 0x80000000000c0000 00000000ffffffff
L2 entry #17: 0x80000000000d0000 00000000ffffffff
write -q -z -u 576k 192k
L2 entry #9: 0x0000000000000000 ffffffff00000000
L2 entry #10: 0x0000000000000000 ffffffff00000000
L2 entry #11: 0x0000000000000000 ffffffff00000000
write -q -z -u 800k 128k
L2 entry #12: 0x8000000000080000 ffff00000000ffff
L2 entry #13: 0x0000000000000000 ffffffff00000000
L2 entry #14: 0x80000000000a0000 0000ffffffff0000
write -q -z -u 991k 128k
L2 entry #15: 0x80000000000b0000 ffff00000000ffff
L2 entry #16: 0x0000000000000000 ffffffff00000000
L2 entry #17: 0x80000000000d0000 00007fffffff8000
### Zero + unmap 2: compressed clusters (backing file: no) ###
write -q -c -P PATTERN 1152k 64k
L2 entry #18: 0x4000000000050000 0000000000000000
write -q -c -P PATTERN 1216k 64k
L2 entry #19: 0x4000000000060000 0000000000000000
write -q -c -P PATTERN 1280k 64k
L2 entry #20: 0x4000000000070000 0000000000000000
write -q -c -P PATTERN 1344k 64k
L2 entry #21: 0x4000000000090000 0000000000000000
write -q -c -P PATTERN 1408k 64k
L2 entry #22: 0x40000000000c0000 0000000000000000
write -q -c -P PATTERN 1472k 64k
L2 entry #23: 0x40000000000e0000 0000000000000000
write -q -c -P PATTERN 1536k 64k
L2 entry #24: 0x40000000000f0000 0000000000000000
write -q -c -P PATTERN 1600k 64k
L2 entry #25: 0x4000000000100000 0000000000000000
write -q -c -P PATTERN 1664k 64k
L2 entry #26: 0x4000000000110000 0000000000000000
write -q -c -P PATTERN 1728k 64k
L2 entry #27: 0x4000000000120000 0000000000000000
write -q -c -P PATTERN 1792k 64k
L2 entry #28: 0x4000000000130000 0000000000000000
write -q -z -u 1152k 192k
L2 entry #18: 0x0000000000000000 ffffffff00000000
L2 entry #19: 0x0000000000000000 ffffffff00000000
L2 entry #20: 0x0000000000000000 ffffffff00000000
write -q -z -u 1376k 128k
L2 entry #21: 0x8000000000050000 00000000ffffffff
L2 entry #22: 0x8000000000060000 00000000ffffffff
L2 entry #23: 0x8000000000070000 00000000ffffffff
write -q -z -u 1567k 129k
L2 entry #24: 0x8000000000090000 00000000ffffffff
L2 entry #25: 0x80000000000e0000 00000000ffffffff
L2 entry #26: 0x80000000000f0000 00000000ffffffff
write -q -z -u 1759k 128k
L2 entry #27: 0x80000000000c0000 ffff00000000ffff
L2 entry #28: 0x0000000000000000 ffffffff00000000
L2 entry #29: 0x0000000000000000 0000ffff00000000
### Discarding clusters with non-zero bitmaps (backing file: yes) ###
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=raw
L2 entry #0: 0x0000000000000000 ffffffff00000000
L2 entry #1: 0x0000000000000000 ffffffff00000000
Image resized.
Image resized.
L2 entry #0: 0x0000000000000000 ffffffff00000000
L2 entry #1: 0x0000000000000000 ffffffff00000000
### Discarding clusters with non-zero bitmaps (backing file: no) ###
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576
L2 entry #0: 0x0000000000000000 ffffffff00000000
L2 entry #1: 0x0000000000000000 ffffffff00000000
Image resized.
Image resized.
L2 entry #0: 0x0000000000000000 0000ffff00000000
L2 entry #1: 0x0000000000000000 0000000000000000
### Corrupted L2 entries - read test (allocated) ###
# 'cluster is zero' bit set on the standard cluster descriptor
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576
L2 entry #0: 0x8000000000050001 0000000000000001
L2 entry #0: 0x8000000000050001 0000000000000001
# Both 'subcluster is zero' and 'subcluster is allocated' bits set
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576
L2 entry #1: 0x8000000000060000 00000001ffffffff
qcow2: Marking image as corrupt: Invalid cluster entry found (L2 offset: 0x40000, L2 index: 0x1); further corruption events will be suppressed
read failed: Input/output error
### Corrupted L2 entries - read test (unallocated) ###
# 'cluster is zero' bit set on the standard cluster descriptor
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576
L2 entry #0: 0x0000000000000001 0000000000000000
L2 entry #0: 0x0000000000000001 0000000000000000
# 'subcluster is allocated' bit set
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576
L2 entry #0: 0x0000000000000000 0000000000000001
qcow2: Marking image as corrupt: Invalid cluster entry found (L2 offset: 0x40000, L2 index: 0); further corruption events will be suppressed
read failed: Input/output error
# Both 'subcluster is zero' and 'subcluster is allocated' bits set
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576
L2 entry #1: 0x0000000000000000 0000000100000001
qcow2: Marking image as corrupt: Invalid cluster entry found (L2 offset: 0x40000, L2 index: 0x1); further corruption events will be suppressed
read failed: Input/output error
### Compressed cluster with subcluster bitmap != 0 - read test ###
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576
L2 entry #0: 0x4000000000050000 0000000180000000
read 65536/65536 bytes at offset 0
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
L2 entry #0: 0x4000000000050000 0000000180000000
### Corrupted L2 entries - write test (allocated) ###
# 'cluster is zero' bit set on the standard cluster descriptor
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576
L2 entry #0: 0x8000000000050001 0000000000000001
L2 entry #0: 0x8000000000050001 0000000000000001
# Both 'subcluster is zero' and 'subcluster is allocated' bits set
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576
L2 entry #1: 0x8000000000060000 00000001ffffffff
qcow2: Marking image as corrupt: Invalid cluster entry found (L2 offset: 0x40000, L2 index: 0x1); further corruption events will be suppressed
write failed: Input/output error
### Corrupted L2 entries - write test (unallocated) ###
# 'cluster is zero' bit set on the standard cluster descriptor
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576
L2 entry #0: 0x0000000000000001 0000000000000000
L2 entry #0: 0x8000000000060000 0000000000000001
# 'subcluster is allocated' bit set
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576
L2 entry #0: 0x0000000000000000 0000000000000001
qcow2: Marking image as corrupt: Invalid cluster entry found (L2 offset: 0x40000, L2 index: 0); further corruption events will be suppressed
write failed: Input/output error
# Both 'subcluster is zero' and 'subcluster is allocated' bits set
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576
L2 entry #1: 0x0000000000000000 0000000100000001
qcow2: Marking image as corrupt: Invalid cluster entry found (L2 offset: 0x40000, L2 index: 0x1); further corruption events will be suppressed
write failed: Input/output error
### Compressed cluster with subcluster bitmap != 0 - write test ###
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576
L2 entry #0: 0x4000000000050000 0000000180000000
wrote 65536/65536 bytes at offset 0
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
L2 entry #0: 0x8000000000060000 00000000ffffffff
### Detect and repair unaligned clusters ###
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=raw size=131072
# Corrupted L2 entry, allocated subcluster #
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=131072 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=raw
ERROR offset=50200: Data cluster is not properly aligned; L2 entry corrupted.
ERROR cluster 6 refcount=0 reference=1
Rebuilding refcount structure
ERROR offset=50200: Data cluster is not properly aligned; L2 entry corrupted.
Repairing cluster 1 refcount=1 reference=0
Repairing cluster 2 refcount=1 reference=0
ERROR offset=50200: Data cluster is not properly aligned; L2 entry corrupted.
The following inconsistencies were found and repaired:
0 leaked clusters
1 corruptions
Double checking the fixed image now...
1 errors were found on the image.
Data may be corrupted, or further writes to the image may corrupt it.
qcow2: Marking image as corrupt: Cluster allocation offset 0x50200 unaligned (L2 offset: 0x40000, L2 index: 0); further corruption events will be suppressed
read failed: Input/output error
# Corrupted L2 entry, no allocated subclusters #
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=131072 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=raw
Repairing offset=50200: Preallocated cluster is not properly aligned; L2 entry corrupted.
Leaked cluster 5 refcount=1 reference=0
Repairing cluster 5 refcount=1 reference=0
The following inconsistencies were found and repaired:
1 leaked clusters
1 corruptions
Double checking the fixed image now...
No errors were found on the image.
### Image creation options ###
# cluster_size < 16k
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576
qemu-img: TEST_DIR/t.IMGFMT: Extended L2 entries are only supported with cluster sizes of at least 16384 bytes
# backing file and preallocation=metadata
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=raw size=1048576
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=524288 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=raw preallocation=metadata
Image resized.
read 524288/524288 bytes at offset 0
512 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
read 524288/524288 bytes at offset 524288
512 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
Offset Length Mapped to File
0 0x80000 0 TEST_DIR/t.qcow2.base
# backing file and preallocation=falloc
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=524288 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=raw preallocation=falloc
Image resized.
read 524288/524288 bytes at offset 0
512 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
read 524288/524288 bytes at offset 524288
512 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
Offset Length Mapped to File
0 0x80000 0 TEST_DIR/t.qcow2.base
# backing file and preallocation=full
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=524288 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=raw preallocation=full
Image resized.
read 524288/524288 bytes at offset 0
512 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
read 524288/524288 bytes at offset 524288
512 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
Offset Length Mapped to File
0 0x80000 0 TEST_DIR/t.qcow2.base
### Image resizing with preallocation and backing files ###
# resize --preallocation=metadata
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=515072 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=raw
Image resized.
read 515072/515072 bytes at offset 0
503 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
read 522240/522240 bytes at offset 515072
510 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
# resize --preallocation=falloc
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=515072 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=raw
Image resized.
read 515072/515072 bytes at offset 0
503 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
read 522240/522240 bytes at offset 515072
510 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
# resize --preallocation=full
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=515072 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=raw
Image resized.
read 515072/515072 bytes at offset 0
503 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
read 522240/522240 bytes at offset 515072
510 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
### Image resizing with preallocation without backing files ###
# resize --preallocation=metadata
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=515072
wrote 515072/515072 bytes at offset 0
503 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
Image resized.
read 515072/515072 bytes at offset 0
503 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
read 522240/522240 bytes at offset 515072
510 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
# resize --preallocation=falloc
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=515072
wrote 515072/515072 bytes at offset 0
503 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
Image resized.
read 515072/515072 bytes at offset 0
503 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
read 522240/522240 bytes at offset 515072
510 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
# resize --preallocation=full
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=515072
wrote 515072/515072 bytes at offset 0
503 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
Image resized.
read 515072/515072 bytes at offset 0
503 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
read 522240/522240 bytes at offset 515072
510 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
### qemu-img measure ###
# 512MB, extended_l2=off
required size: 327680
fully allocated size: 537198592
# 512MB, extended_l2=on
required size: 393216
fully allocated size: 537264128
# 16K clusters, 64GB, extended_l2=off
required size: 42008576
fully allocated size: 68761485312
# 16K clusters, 64GB, extended_l2=on
required size: 75579392
fully allocated size: 68795056128
# 8k clusters
qemu-img: Extended L2 entries are only supported with cluster sizes of at least 16384 bytes
# 1024 TB
required size: 309285027840
fully allocated size: 1126209191870464
# 1025 TB
qemu-img: The image size is too large (try using a larger cluster size)
### qemu-img amend ###
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576
qemu-img: Invalid parameter 'extended_l2'
This option is only supported for image creation
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576
qemu-img: Invalid parameter 'extended_l2'
This option is only supported for image creation
### Test copy-on-write on an image with snapshots ###
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576
L2 entry #0: 0x8000000000050000 0000008000042000
L2 entry #1: 0x8000000000060000 0000008000042000
L2 entry #2: 0x8000000000070000 0000008000042000
L2 entry #3: 0x8000000000080000 0000008000042000
L2 entry #4: 0x8000000000090000 0000008000042000
L2 entry #5: 0x80000000000a0000 0000008000042000
L2 entry #6: 0x80000000000b0000 0000008000042000
L2 entry #7: 0x80000000000c0000 0000008000042000
L2 entry #8: 0x80000000000d0000 0000008000042000
L2 entry #9: 0x80000000000e0000 0000008000042000
L2 entry #0: 0x8000000000120000 000000800007e000
L2 entry #1: 0x8000000000130000 000000800007fc00
L2 entry #2: 0x8000000000140000 00000080001fe000
L2 entry #3: 0x8000000000150000 000000800007e000
L2 entry #4: 0x8000000000160000 000000000007ff80
L2 entry #5: 0x8000000000170000 000000000007ffff
L2 entry #6: 0x00000000000b0000 0001808000042000
L2 entry #7: 0x00000000000c0000 0000208000040000
L2 entry #8: 0x8000000000180000 000000800007e000
L2 entry #9: 0x00000000000e0000 000000c000042000
### Test concurrent requests ###
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576
blkdebug: Suspended request 'A'
blkdebug: Resuming request 'A'
wrote 2048/2048 bytes at offset 30720
2 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
wrote 2048/2048 bytes at offset OFFSET
2 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
wrote 2048/2048 bytes at offset OFFSET
2 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
*** done