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>
108 lines
4.7 KiB
Plaintext
108 lines
4.7 KiB
Plaintext
QA output created by 080
|
|
|
|
== Huge header size ==
|
|
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
|
|
can't open device TEST_DIR/t.qcow2: qcow2 header exceeds cluster size
|
|
can't open device TEST_DIR/t.qcow2: qcow2 header exceeds cluster size
|
|
|
|
== Huge unknown header extension ==
|
|
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
|
|
can't open device TEST_DIR/t.qcow2: Invalid backing file offset
|
|
can't open device TEST_DIR/t.qcow2: Header extension too large
|
|
can't open device TEST_DIR/t.qcow2: Header extension too large
|
|
|
|
== Huge refcount table size ==
|
|
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
|
|
can't open device TEST_DIR/t.qcow2: Reference count table too large
|
|
can't open device TEST_DIR/t.qcow2: Reference count table too large
|
|
|
|
== Misaligned refcount table ==
|
|
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
|
|
can't open device TEST_DIR/t.qcow2: Reference count table offset invalid
|
|
|
|
== Huge refcount offset ==
|
|
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
|
|
can't open device TEST_DIR/t.qcow2: Reference count table offset invalid
|
|
|
|
== Invalid snapshot table ==
|
|
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
|
|
can't open device TEST_DIR/t.qcow2: Snapshot table too large
|
|
can't open device TEST_DIR/t.qcow2: Snapshot table too large
|
|
can't open device TEST_DIR/t.qcow2: Snapshot table offset invalid
|
|
can't open device TEST_DIR/t.qcow2: Snapshot table offset invalid
|
|
|
|
== Hitting snapshot table size limit ==
|
|
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
|
|
qemu-img: Could not create snapshot 'test': -27 (File too large)
|
|
read 512/512 bytes at offset 0
|
|
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
|
|
== Invalid L1 table ==
|
|
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
|
|
can't open device TEST_DIR/t.qcow2: Active L1 table too large
|
|
can't open device TEST_DIR/t.qcow2: Active L1 table too large
|
|
can't open device TEST_DIR/t.qcow2: Active L1 table offset invalid
|
|
can't open device TEST_DIR/t.qcow2: Active L1 table offset invalid
|
|
|
|
== Invalid L1 table (with internal snapshot in the image) ==
|
|
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
|
|
qemu-img: Could not open 'TEST_DIR/t.IMGFMT': L1 table is too small
|
|
|
|
== Invalid backing file size ==
|
|
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
|
|
can't open device TEST_DIR/t.qcow2: Backing file name too long
|
|
|
|
== Invalid L2 entry (huge physical offset) ==
|
|
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
|
|
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 'test': -27 (File too large)
|
|
qemu-img: Could not create snapshot 'test': -11 (Resource temporarily unavailable)
|
|
|
|
== Invalid snapshot L1 table offset ==
|
|
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
|
|
wrote 512/512 bytes at offset 0
|
|
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
qemu-img: Failed to load snapshot: Snapshot L1 table offset invalid
|
|
qemu-img: Snapshot L1 table offset invalid
|
|
qemu-img: Failed to turn zero into data clusters: Invalid argument
|
|
Failed to flush the refcount block cache: Invalid argument
|
|
write failed: Invalid argument
|
|
qemu-img: Snapshot L1 table offset invalid
|
|
qemu-img: Could not apply snapshot 'test': Failed to load snapshot: Invalid argument
|
|
qemu-img: Could not delete snapshot 'test': Snapshot L1 table offset invalid
|
|
ERROR snapshot 1 (test) l1_offset=0x400200: L1 table is not cluster aligned; snapshot table entry corrupted
|
|
Leaked cluster 4 refcount=2 reference=1
|
|
Leaked cluster 5 refcount=2 reference=1
|
|
Leaked cluster 6 refcount=1 reference=0
|
|
|
|
1 errors were found on the image.
|
|
Data may be corrupted, or further writes to the image may corrupt it.
|
|
|
|
3 leaked clusters were found on the image.
|
|
This means waste of disk space, but no harm to data.
|
|
|
|
== Invalid snapshot L1 table size ==
|
|
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
|
|
wrote 512/512 bytes at offset 0
|
|
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
qemu-img: Failed to load snapshot: Snapshot L1 table too large
|
|
qemu-img: Snapshot L1 table too large
|
|
qemu-img: Failed to turn zero into data clusters: File too large
|
|
Failed to flush the refcount block cache: File too large
|
|
write failed: File too large
|
|
qemu-img: Snapshot L1 table too large
|
|
qemu-img: Could not apply snapshot 'test': Failed to load snapshot: File too large
|
|
qemu-img: Could not delete snapshot 'test': Snapshot L1 table too large
|
|
ERROR snapshot 1 (test) l1_size=0x10000000: L1 table is too large; snapshot table entry corrupted
|
|
Leaked cluster 4 refcount=2 reference=1
|
|
Leaked cluster 5 refcount=2 reference=1
|
|
Leaked cluster 6 refcount=1 reference=0
|
|
|
|
1 errors were found on the image.
|
|
Data may be corrupted, or further writes to the image may corrupt it.
|
|
|
|
3 leaked clusters were found on the image.
|
|
This means waste of disk space, but no harm to data.
|
|
*** done
|