Right now, _filter_img_create just filters out everything that looks format-dependent, and applies some filename filters. That means that we have to add another filter line every time some format gets a new creation option. This can be avoided by instead discarding everything and just keeping what we know is format-independent (format, size, backing file, encryption information[1], preallocation) or just interesting to have in the reference output (external data file path). Furthermore, we probably want to sort these options. Format drivers are not required to define them in any specific order, so the output is effectively random (although this has never bothered us until now). We need a specific order for our reference outputs, though. Unfortunately, just using a plain "sort" would change a lot of existing reference outputs, so we have to pre-filter the option keys to keep our existing order (fmt, size, backing*, data, encryption info, preallocation). Finally, this makes it difficult for _filter_img_create to automagically work for QMP output. Thus, this patch adds a separate _filter_img_create_for_qmp function that echos every line verbatim that does not start with "Formatting", and pipes those "Formatting" lines to _filter_img_create. [1] Actually, the only thing that is really important is whether encryption is enabled or not. A patch by Maxim thus removes all other "encrypt.*" options from the output: https://lists.nongnu.org/archive/html/qemu-block/2020-06/msg00339.html But that patch needs to come later so we can get away with changing as few reference outputs in this patch here as possible. Signed-off-by: Max Reitz <mreitz@redhat.com> Message-Id: <20200625125548.870061-2-mreitz@redhat.com> Reviewed-by: Maxim Levitsky <mlevitsk@redhat.com>
153 lines
5.4 KiB
Plaintext
153 lines
5.4 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
|
|
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
|