summaryrefslogtreecommitdiffstats
path: root/tests/qemu-iotests/061.out
diff options
context:
space:
mode:
authorEric Blake2020-04-28 21:26:47 +0200
committerMax Reitz2020-05-05 13:17:36 +0200
commit7fa140abf69675b7b83af32de07fa8075c1da298 (patch)
tree88045621dcaa68069e1f29e28883b120a0b67307 /tests/qemu-iotests/061.out
parentblock: Add blk_new_with_bs() helper (diff)
downloadqemu-7fa140abf69675b7b83af32de07fa8075c1da298.tar.gz
qemu-7fa140abf69675b7b83af32de07fa8075c1da298.tar.xz
qemu-7fa140abf69675b7b83af32de07fa8075c1da298.zip
qcow2: Allow resize of images with internal snapshots
We originally refused to allow resize of images with internal snapshots because the v2 image format did not require the tracking of snapshot size, making it impossible to safely revert to a snapshot with a different size than the current view of the image. But the snapshot size tracking was rectified in v3, and our recent fixes to qemu-img amend (see 0a85af35) guarantee that we always have a valid snapshot size. Thus, we no longer need to artificially limit image resizes, but it does become one more thing that would prevent a downgrade back to v2. And now that we support different-sized snapshots, it's also easy to fix reverting to a snapshot to apply the new size. Upgrade iotest 61 to cover this (we previously had NO coverage of refusal to resize while snapshots exist). Note that the amend process can fail but still have effects: in particular, since we break things into upgrade, resize, downgrade, a failure during resize does not roll back changes made during upgrade, nor does failure in downgrade roll back a resize. But this situation is pre-existing even without this patch; and without journaling, the best we could do is minimize the chance of partial failure by collecting all changes prior to doing any writes - which adds a lot of complexity but could still fail with EIO. On the other hand, we are careful that even if we have partial modification but then fail, the image is left viable (that is, we are careful to sequence things so that after each successful cluster write, there may be transient leaked clusters but no corrupt metadata). And complicating the code to make it more transaction-like is not worth the effort: a user can always request multiple 'qemu-img amend' changing one thing each, if they need finer-grained control over detecting the first failure than what they get by letting qemu decide how to sequence multiple changes. Signed-off-by: Eric Blake <eblake@redhat.com> Reviewed-by: Max Reitz <mreitz@redhat.com> Message-Id: <20200428192648.749066-3-eblake@redhat.com> Signed-off-by: Max Reitz <mreitz@redhat.com>
Diffstat (limited to 'tests/qemu-iotests/061.out')
-rw-r--r--tests/qemu-iotests/061.out28
1 files changed, 28 insertions, 0 deletions
diff --git a/tests/qemu-iotests/061.out b/tests/qemu-iotests/061.out
index 413cc4e0f4..5a8d36d005 100644
--- a/tests/qemu-iotests/061.out
+++ b/tests/qemu-iotests/061.out
@@ -271,6 +271,34 @@ read 65536/65536 bytes at offset 44040192
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
No errors were found on the image.
+=== Testing resize with snapshots ===
+
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=33554432
+wrote 65536/65536 bytes at offset 25165824
+64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+qemu-img: Can't resize a v2 image which has snapshots
+version 2
+size 33554432
+nb_snapshots 1
+version 3
+size 134217728
+nb_snapshots 1
+Image resized.
+version 3
+size 67108864
+nb_snapshots 2
+qemu-img: Internal snapshots prevent downgrade of image
+version 3
+size 33554432
+nb_snapshots 2
+version 3
+size 134217728
+nb_snapshots 2
+version 2
+size 33554432
+nb_snapshots 1
+No errors were found on the image.
+
=== Testing dirty lazy_refcounts=off ===
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864