0c2ada8136
'qemu-img check' cannot detect if a snapshot's L1 table is corrupted. This patch checks the table's offset and size and reports corruption if the values are not valid. This patch doesn't add code to fix that corruption yet, only to detect and report it. Signed-off-by: Alberto Garcia <berto@igalia.com> Reviewed-by: Eric Blake <eblake@redhat.com> Signed-off-by: Kevin Wolf <kwolf@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: Error while amending options: 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: Error while amending options: 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
|