qemu-e2k/block
Kevin Wolf 05f4aced65 block/snapshot: Restrict set of snapshot nodes
Nodes involved in internal snapshots were those that were returned by
bdrv_next(), inserted and not read-only. bdrv_next() in turn returns all
nodes that are either the root node of a BlockBackend or monitor-owned
nodes.

With the typical -drive use, this worked well enough. However, in the
typical -blockdev case, the user defines one node per option, making all
nodes monitor-owned nodes. This includes protocol nodes etc. which often
are not snapshottable, so "savevm" only returns an error.

Change the conditions so that internal snapshot still include all nodes
that have a BlockBackend attached (we definitely want to snapshot
anything attached to a guest device and probably also the built-in NBD
server; snapshotting block job BlockBackends is more of an accident, but
a preexisting one), but other monitor-owned nodes are only included if
they have no parents.

This makes internal snapshots usable again with typical -blockdev
configurations.

Cc: qemu-stable@nongnu.org
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
Tested-by: Peter Krempa <pkrempa@redhat.com>
2019-10-04 11:52:40 +02:00
..
accounting.c
backup.c job: drop job_drain 2019-09-10 08:58:43 +02:00
blkdebug.c blkdebug: Inject errors on .bdrv_co_block_status() 2019-06-14 14:16:57 +02:00
blklogwrites.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
blkreplay.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
blkverify.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
block-backend.c Block layer patches: 2019-08-16 16:43:46 +01:00
bochs.c block: Use QEMU_IS_ALIGNED 2019-09-16 14:48:30 +02:00
cloop.c block: Use QEMU_IS_ALIGNED 2019-09-16 14:48:30 +02:00
commit.c job: drop job_drain 2019-09-10 08:58:43 +02:00
copy-on-read.c block/copy-on-read: Fix permissions for inactive node 2019-07-30 12:25:43 +02:00
create.c block/create: Do not abort if a block driver is not available 2019-09-13 12:18:37 +02:00
crypto.c LUKS: support preallocation 2019-08-19 17:13:26 +02:00
crypto.h
curl.c curl: Check curl_multi_add_handle()'s return code 2019-09-16 15:31:12 +02:00
dirty-bitmap.c qapi: implement block-dirty-bitmap-remove transaction action 2019-08-16 16:28:03 -04:00
dmg-bz2.c Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
dmg-lzfse.c
dmg.c block: Use QEMU_IS_ALIGNED 2019-09-16 14:48:30 +02:00
dmg.h Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
file-posix.c file-posix: Fix has_write_zeroes after NO_FALLBACK 2019-09-10 08:58:43 +02:00
file-win32.c block: Implement .bdrv_has_zero_init_truncate() 2019-08-19 17:13:26 +02:00
gluster.c block: Implement .bdrv_has_zero_init_truncate() 2019-08-19 17:13:26 +02:00
io.c block: Use QEMU_IS_ALIGNED 2019-09-16 14:48:30 +02:00
iscsi-opts.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
iscsi.c iscsi: base all handling of check condition on scsi_sense_to_errno 2019-07-15 11:20:42 +02:00
linux-aio.c Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
Makefile.objs ssh: switch from libssh2 to libssh 2019-06-24 16:01:04 +02:00
mirror.c job: drop job_drain 2019-09-10 08:58:43 +02:00
nbd.c nbd: Implement client use of NBD FAST_ZERO 2019-09-05 16:03:26 -05:00
nfs.c block/nfs: add support for nfs_umount 2019-09-13 12:18:15 +02:00
null.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
nvme.c Include qemu/main-loop.h less 2019-08-16 13:31:52 +02:00
parallels.c block: Use bdrv_has_zero_init_truncate() 2019-08-19 17:13:26 +02:00
parallels.h
qapi.c cutils: Move size_to_str() from "qemu-common.h" to "qemu/cutils.h" 2019-09-19 11:57:34 +02:00
qcow2-bitmap.c
qcow2-cache.c Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
qcow2-cluster.c block/qcow2: refactor encryption code 2019-09-16 15:36:22 +02:00
qcow2-refcount.c Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
qcow2-snapshot.c
qcow2-threads.c block/qcow2: refactor encryption code 2019-09-16 15:36:22 +02:00
qcow2.c block/qcow2: refactor encryption code 2019-09-16 15:36:22 +02:00
qcow2.h block/qcow2: refactor encryption code 2019-09-16 15:36:22 +02:00
qcow.c block/qcow: Improve error when opening qcow2 files as qcow 2019-07-08 16:00:26 +02:00
qed-check.c
qed-cluster.c
qed-l2-cache.c
qed-table.c
qed.c block: Implement .bdrv_has_zero_init_truncate() 2019-08-19 17:13:26 +02:00
qed.h
quorum.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
raw-format.c block: Implement .bdrv_has_zero_init_truncate() 2019-08-19 17:13:26 +02:00
rbd.c block: Implement .bdrv_has_zero_init_truncate() 2019-08-19 17:13:26 +02:00
replication.c block/backup: Add mirror sync mode 'bitmap' 2019-08-16 16:28:02 -04:00
sheepdog.c block: Implement .bdrv_has_zero_init_truncate() 2019-08-19 17:13:26 +02:00
snapshot.c block/snapshot: Restrict set of snapshot nodes 2019-10-04 11:52:40 +02:00
ssh.c block: Implement .bdrv_has_zero_init_truncate() 2019-08-19 17:13:26 +02:00
stream.c job: drop job_drain 2019-09-10 08:58:43 +02:00
throttle-groups.c Include qemu/main-loop.h less 2019-08-16 13:31:52 +02:00
throttle.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
trace-events block/backup: teach TOP to never copy unallocated regions 2019-08-16 16:28:03 -04:00
vdi.c vdi: Make block_status recurse for fixed images 2019-08-19 17:13:26 +02:00
vhdx-endian.c Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
vhdx-log.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
vhdx.c vhdx: Fix .bdrv_has_zero_init() 2019-08-19 17:13:26 +02:00
vhdx.h
vmdk.c vmdk: Reject invalid compressed writes 2019-09-03 14:55:35 +02:00
vpc.c vpc: Return 0 from vpc_co_create() on success 2019-09-10 08:58:43 +02:00
vvfat.c block: Use QEMU_IS_ALIGNED 2019-09-16 14:48:30 +02:00
vxhs.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
win32-aio.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
write-threshold.c