qemu/tests
Eric Blake 7fa140abf6 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>
2020-05-05 13:17:36 +02:00
..
acceptance tests/boot_linux_console: Add ethernet test to SmartFusion2 2020-04-30 11:52:28 +01:00
data acpi: unit-test: Update WAET ACPI Table expected binaries 2020-05-04 10:25:03 -04:00
decode decodetree: Allow !function with no input bits 2019-08-19 08:03:41 -07:00
docker tests/docker: add docs FEATURE flag and use for test-misc 2020-04-15 11:38:23 +01:00
fp testing: don't nest build for fp-test 2020-01-09 11:41:29 +00:00
guest-debug tests/guest-debug: add a simple test runner 2020-03-17 17:38:47 +00:00
image-fuzzer image-fuzzer: Use OSerror.strerror instead of tuple subscript 2019-11-05 16:36:11 +01:00
keys
migration drop "from __future__ import print_function" 2020-02-07 15:15:16 +01:00
multiboot tests/multiboot: Fix load address of test kernels 2019-07-30 12:25:43 +02:00
perf/block/qcow2 tests/perf: Test lseek influence on qcow2 block-status 2019-06-04 15:20:41 +02:00
plugin tests/plugins: make howvec clean-up after itself. 2020-02-25 20:20:23 +00:00
qapi-schema qapi: New special feature flag "deprecated" 2020-03-17 21:42:47 +01:00
qemu-iotests qcow2: Allow resize of images with internal snapshots 2020-05-05 13:17:36 +02:00
qtest acpi: unit-test: Update WAET ACPI Table expected binaries 2020-05-04 10:25:03 -04:00
rocker
tcg tests/tcg: remove extraneous pasting macros 2020-04-07 16:19:49 +01:00
uefi-test-tools edk2 build scripts: work around TianoCore#1607 without forcing Python 2 2019-10-07 15:14:15 +02:00
vm tests/vm: fix basevm config 2020-03-27 13:43:20 +00:00
vmstate-static-checker-data
.gitignore tests/tcg/aarch64: add a gdbstub testcase for SVE registers 2020-03-17 17:38:47 +00:00
atomic64-bench.c tests: use g_usleep instead of rem = sleep(time) 2019-01-14 14:52:30 +00:00
atomic_add-bench.c tests: use g_usleep instead of rem = sleep(time) 2019-01-14 14:52:30 +00:00
benchmark-crypto-cipher.c tests: benchmark crypto with fixed data size, not time period 2019-10-28 13:32:21 +01:00
benchmark-crypto-hash.c tests: benchmark crypto with fixed data size, not time period 2019-10-28 13:32:21 +01:00
benchmark-crypto-hmac.c
check-block-qdict.c
check-block.sh build: move TARGET_GPROF to config-host.mak 2020-02-12 16:29:27 +01:00
check-qdict.c tests: Move qdict-test-data.txt to tests/data/qobject/ 2019-03-07 22:05:54 +01:00
check-qjson.c test: Use g_strndup instead of plain strndup 2019-08-21 10:27:13 +02:00
check-qlist.c qobject: Eliminate qlist_iter(), use QLIST_FOREACH_ENTRY() instead 2020-04-30 06:51:15 +02:00
check-qlit.c
check-qnull.c
check-qnum.c
check-qobject.c
check-qom-interface.c
check-qom-proplist.c
check-qstring.c
crypto-tls-psk-helpers.c
crypto-tls-psk-helpers.h Supply missing header guards 2019-06-12 13:20:21 +02:00
crypto-tls-x509-helpers.c
crypto-tls-x509-helpers.h Supply missing header guards 2019-06-12 13:20:21 +02:00
dbus-vmstate-daemon.sh tests: add dbus-vmstate-test 2020-01-06 18:41:32 +04:00
io-channel-helpers.c
io-channel-helpers.h Normalize position of header guard 2019-06-12 13:20:20 +02:00
iothread.c tests/iothread: Always connect iothread GSource to a GMainContext 2020-01-07 14:32:57 +00:00
iothread.h
Makefile.include qdev: add clock input&output support to devices. 2020-04-30 15:35:40 +01:00
pkix_asn1_tab.c
ptimer-test-stubs.c util/qemu-timer: refactor deadline calculation for external timers 2019-08-20 17:26:21 +02:00
ptimer-test.c tests/ptimer: Remove unnecessary inclusion of libqtest.h 2020-01-12 11:42:40 +01:00
ptimer-test.h
qht-bench.c tests: use g_usleep instead of rem = sleep(time) 2019-01-14 14:52:30 +00:00
rcutorture.c tests/rcutorture: mild documenting refactor of update thread 2020-02-25 17:42:59 +00:00
requirements.txt Acceptance test: add "boot_linux" tests 2020-03-17 18:55:52 -04:00
socket-helpers.c tests: specify the address family when checking bind 2019-08-22 17:30:25 +04:00
socket-helpers.h tests: specify the address family when checking bind 2019-08-22 17:30:25 +04:00
test-aio-multithread.c tests: Do not use "\n" in g_test_message() strings 2019-03-07 22:16:22 +01:00
test-aio.c util/async: make bh_aio_poll() O(1) 2020-02-22 08:26:47 +00:00
test-authz-list.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
test-authz-listfile.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
test-authz-pam.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
test-authz-simple.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
test-base64.c
test-bdrv-drain.c job: drop job_drain 2019-09-10 08:58:43 +02:00
test-bdrv-graph-mod.c Include qemu/main-loop.h less 2019-08-16 13:31:52 +02:00
test-bitcnt.c
test-bitmap.c tests: use g_test_rand_int 2019-12-17 09:05:23 +01:00
test-bitops.c
test-block-backend.c Include qemu/main-loop.h less 2019-08-16 13:31:52 +02:00
test-block-iothread.c block: Add flags to bdrv(_co)_truncate() 2020-04-30 17:51:07 +02:00
test-blockjob-txn.c job: drop job_drain 2019-09-10 08:58:43 +02:00
test-blockjob.c job: take each job's lock individually in job_txn_apply 2020-04-07 14:34:47 +02:00
test-bufferiszero.c
test-char.c chardev: Use QEMUChrEvent enum in IOEventHandler typedef 2020-01-08 11:15:35 +01:00
test-clone-visitor.c tests: Rename UserDefNativeListUnion to UserDefListUnion 2019-03-05 14:43:11 +01:00
test-coroutine.c tests: Do not use "\n" in g_test_message() strings 2019-03-07 22:16:22 +01:00
test-crypto-afsplit.c
test-crypto-block.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
test-crypto-cipher.c
test-crypto-hash.c
test-crypto-hmac.c
test-crypto-ivgen.c
test-crypto-pbkdf.c
test-crypto-secret.c
test-crypto-tlscredsx509.c glib: use portable g_setenv() 2019-12-17 09:05:23 +01:00
test-crypto-tlssession.c glib: use portable g_setenv() 2019-12-17 09:05:23 +01:00
test-crypto-xts.c
test-cutils.c
test-hbitmap.c block/dirty-bitmap: improve _next_dirty_area API 2020-03-18 14:03:46 -04:00
test-image-locking.c Include qemu/main-loop.h less 2019-08-16 13:31:52 +02:00
test-int128.c
test-io-channel-buffer.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
test-io-channel-command.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
test-io-channel-file.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
test-io-channel-socket.c socket: Add num connections to qio_channel_socket_async() 2019-09-03 23:24:42 +02:00
test-io-channel-tls.c glib: use portable g_setenv() 2019-12-17 09:05:23 +01:00
test-io-task.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
test-iov.c
test-keyval.c test-keyval: Tighten test of trailing crap after size 2019-12-18 12:28:44 +01:00
test-logging.c tests/test-logging: Fix test for -dfilter 0..0xffffffffffffffff 2020-04-29 08:01:52 +02:00
test-mul64.c
test-opts-visitor.c
test-qapi-util.c
test-qdev-global-props.c qdev: set properties with device_class_set_props() 2020-01-24 20:59:15 +01:00
test-qdist.c
test-qemu-opts.c test-qemu-opts: Simplify test_has_help_option() after bug fix 2020-04-29 08:01:51 +02:00
test-qga.c tests: use g_test_rand_int 2019-12-17 09:05:23 +01:00
test-qgraph.c tests: test-qgraph: fix a memory leak 2019-03-11 16:33:49 +01:00
test-qht-par.c
test-qht.c
test-qmp-cmds.c qapi: Add feature flags to remaining definitions 2020-03-17 19:58:34 +01:00
test-qmp-event.c tests/test-qmp-event: Check event is actually emitted 2020-03-17 19:58:34 +01:00
test-qobject-input-visitor.c tests: Rename UserDefNativeListUnion to UserDefListUnion 2019-03-05 14:43:11 +01:00
test-qobject-output-visitor.c qapi: Assert output visitors see only valid enum values 2020-04-30 07:26:09 +02:00
test-rcu-list.c tests: Fix a bug with count variables 2020-03-06 10:35:15 +00:00
test-rcu-simpleq.c
test-rcu-slist.c rcu_queue: add QSLIST functions 2020-02-22 08:26:47 +00:00
test-rcu-tailq.c
test-replication.c tests/test-replication.c: Add test for for secondary node continuing replication 2020-03-03 18:04:47 +08:00
test-shift128.c
test-string-input-visitor.c tests: Fix uninitialized byte in test_visitor_in_fuzz 2019-08-20 17:26:19 +02:00
test-string-output-visitor.c qapi: Assert output visitors see only valid enum values 2020-04-30 07:26:09 +02:00
test-thread-pool.c test-thread-pool: be more reliable 2019-06-03 14:03:00 +02:00
test-throttle.c test-throttle: Fix uninitialized use of burst_length 2019-08-20 17:26:19 +02:00
test-timed-average.c
test-util-filemonitor.c tests/test-util-filemonitor: Skip test on non-x86 Travis containers 2019-12-18 20:17:45 +00:00
test-util-sockets.c hmp: Fail gracefully if chardev is already in use 2020-03-06 17:21:28 +01:00
test-uuid.c
test-visitor-serialization.c
test-vmstate.c test-vmstate: Fix memleaks in test_load_qlist 2020-02-28 09:25:49 +01:00
test-write-threshold.c
test-x86-cpuid.c hw/i386: Update structures to save the number of nodes per package 2020-03-17 19:48:10 -04:00
test-xbzrle.c
vhost-user-bridge.c core: replace getpagesize() with qemu_real_host_page_size 2019-10-26 15:38:06 +02:00