d1402b5026
Looking at the qcow2 code that is riddled with error_report() calls, this is really how it should have been from the start. Along the way, turn the target_version/current_version comparisons at the beginning of qcow2_downgrade() into assertions (the caller has to make sure these conditions are met), and rephrase the error message on using compat=1.1 to get refcount widths other than 16 bits. Signed-off-by: Max Reitz <mreitz@redhat.com> Message-id: 20180509210023.20283-3-mreitz@redhat.com Reviewed-by: Eric Blake <eblake@redhat.com> Reviewed-by: John Snow <jsnow@redhat.com> Signed-off-by: Max Reitz <mreitz@redhat.com>
153 lines
5.5 KiB
Plaintext
153 lines
5.5 KiB
Plaintext
QA output created by 112
|
|
|
|
=== refcount_bits limits ===
|
|
|
|
qemu-img: TEST_DIR/t.IMGFMT: Refcount width must be a power of two and may not exceed 64 bits
|
|
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
|
|
qemu-img: TEST_DIR/t.IMGFMT: Refcount width must be a power of two and may not exceed 64 bits
|
|
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 refcount_bits=-1
|
|
qemu-img: TEST_DIR/t.IMGFMT: Refcount width must be a power of two and may not exceed 64 bits
|
|
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
|
|
qemu-img: TEST_DIR/t.IMGFMT: Refcount width must be a power of two and may not exceed 64 bits
|
|
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
|
|
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
|
|
refcount bits: 1
|
|
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
|
|
refcount bits: 64
|
|
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
|
|
refcount bits: 16
|
|
|
|
=== refcount_bits and compat=0.10 ===
|
|
|
|
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
|
|
refcount bits: 16
|
|
qemu-img: TEST_DIR/t.IMGFMT: Different refcount widths than 16 bits require compatibility level 1.1 or above (use version=v3 or greater)
|
|
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
|
|
qemu-img: TEST_DIR/t.IMGFMT: Different refcount widths than 16 bits require compatibility level 1.1 or above (use version=v3 or greater)
|
|
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
|
|
|
|
=== Snapshot limit on refcount_bits=1 ===
|
|
|
|
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
|
|
refcount bits: 1
|
|
wrote 512/512 bytes at offset 0
|
|
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
qemu-img: Could not create snapshot 'foo': -22 (Invalid argument)
|
|
Leaked cluster 6 refcount=1 reference=0
|
|
|
|
1 leaked clusters were found on the image.
|
|
This means waste of disk space, but no harm to data.
|
|
|
|
=== Snapshot limit on refcount_bits=2 ===
|
|
|
|
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
|
|
refcount bits: 2
|
|
wrote 512/512 bytes at offset 0
|
|
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
qemu-img: Could not create snapshot 'baz': -22 (Invalid argument)
|
|
Leaked cluster 7 refcount=1 reference=0
|
|
|
|
1 leaked clusters were found on the image.
|
|
This means waste of disk space, but no harm to data.
|
|
|
|
=== Compressed clusters with refcount_bits=1 ===
|
|
|
|
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
|
|
refcount bits: 1
|
|
wrote 65536/65536 bytes at offset 0
|
|
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
wrote 65536/65536 bytes at offset 65536
|
|
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
No errors were found on the image.
|
|
|
|
=== MSb set in 64 bit refcount ===
|
|
|
|
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
|
|
refcount bits: 64
|
|
wrote 512/512 bytes at offset 0
|
|
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
wrote 512/512 bytes at offset 0
|
|
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
|
|
=== Snapshot on maximum 64 bit refcount value ===
|
|
|
|
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
|
|
refcount bits: 64
|
|
wrote 512/512 bytes at offset 0
|
|
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
qemu-img: Could not create snapshot 'foo': -22 (Invalid argument)
|
|
Leaked cluster 5 refcount=18446744073709551615 reference=1
|
|
Leaked cluster 6 refcount=1 reference=0
|
|
|
|
2 leaked clusters were found on the image.
|
|
This means waste of disk space, but no harm to data.
|
|
|
|
=== Amend from refcount_bits=16 to refcount_bits=1 ===
|
|
|
|
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
|
|
refcount bits: 16
|
|
wrote 33554432/33554432 bytes at offset 16777216
|
|
32 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
No errors were found on the image.
|
|
refcount bits: 1
|
|
|
|
=== Amend from refcount_bits=1 to refcount_bits=64 ===
|
|
|
|
No errors were found on the image.
|
|
refcount bits: 64
|
|
|
|
=== Amend to compat=0.10 ===
|
|
|
|
qemu-img: compat=0.10 requires refcount_bits=16
|
|
refcount bits: 64
|
|
No errors were found on the image.
|
|
refcount bits: 16
|
|
refcount bits: 16
|
|
qemu-img: Refcount widths other than 16 bits require compatibility level 1.1 or above (use compat=1.1 or greater)
|
|
refcount bits: 16
|
|
|
|
=== Amend with snapshot ===
|
|
|
|
wrote 16777216/16777216 bytes at offset 0
|
|
16 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
qemu-img: Cannot decrease refcount entry width to 1 bits: Cluster at offset 0x50000 has a refcount of 2
|
|
No errors were found on the image.
|
|
refcount bits: 16
|
|
No errors were found on the image.
|
|
refcount bits: 2
|
|
|
|
=== Testing too many references for check ===
|
|
|
|
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
|
|
refcount bits: 1
|
|
wrote 65536/65536 bytes at offset 0
|
|
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
ERROR: overflow cluster offset=0x50000
|
|
Use qemu-img amend to increase the refcount entry width or qemu-img convert to create a clean copy if the image cannot be opened for writing
|
|
|
|
1 errors were found on the image.
|
|
Data may be corrupted, or further writes to the image may corrupt it.
|
|
refcount bits: 2
|
|
ERROR cluster 5 refcount=1 reference=2
|
|
Repairing cluster 5 refcount=1 reference=2
|
|
Repairing OFLAG_COPIED data cluster: l2_entry=8000000000050000 refcount=2
|
|
Repairing OFLAG_COPIED data cluster: l2_entry=8000000000050000 refcount=2
|
|
The following inconsistencies were found and repaired:
|
|
|
|
0 leaked clusters
|
|
3 corruptions
|
|
|
|
Double checking the fixed image now...
|
|
No errors were found on the image.
|
|
|
|
=== Multiple walks necessary during amend ===
|
|
|
|
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=65536
|
|
wrote 29696/29696 bytes at offset 0
|
|
29 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
(66.67/100%)
|
|
(50.00/100%)
|
|
refcount bits: 64
|
|
No errors were found on the image.
|
|
*** done
|