db5794f1f1
This function deletes a snapshot from disk, removing its entry from the snapshot table, freeing its L1 table and decreasing the refcounts of all clusters. The L1 table offset and size are however not validated. If we use invalid values in this function we'll probably corrupt the image even more, so we should return an error instead. We now have a function to take care of this, so let's use it. Signed-off-by: Alberto Garcia <berto@igalia.com> Reviewed-by: Eric Blake <eblake@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
88 lines
3.9 KiB
Plaintext
88 lines
3.9 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
|
|
|
|
== 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
|
|
*** done
|