qemu-cr16/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
blklogwrites.c
blkreplay.c
blkverify.c
block-backend.c
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
create.c block/create: Do not abort if a block driver is not available 2019-09-13 12:18:37 +02:00
crypto.c
crypto.h
curl.c curl: Check curl_multi_add_handle()'s return code 2019-09-16 15:31:12 +02:00
dirty-bitmap.c
dmg-bz2.c
dmg-lzfse.c
dmg.c block: Use QEMU_IS_ALIGNED 2019-09-16 14:48:30 +02:00
dmg.h
file-posix.c file-posix: Fix has_write_zeroes after NO_FALLBACK 2019-09-10 08:58:43 +02:00
file-win32.c
gluster.c
io.c block: Use QEMU_IS_ALIGNED 2019-09-16 14:48:30 +02:00
iscsi-opts.c
iscsi.c
linux-aio.c
Makefile.objs
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
nvme.c
parallels.c
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
qcow.c
qcow2-bitmap.c
qcow2-cache.c
qcow2-cluster.c block/qcow2: refactor encryption code 2019-09-16 15:36:22 +02:00
qcow2-refcount.c
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
qed-check.c
qed-cluster.c
qed-l2-cache.c
qed-table.c
qed.c
qed.h
quorum.c
raw-format.c
rbd.c
replication.c
sheepdog.c
snapshot.c block/snapshot: Restrict set of snapshot nodes 2019-10-04 11:52:40 +02:00
ssh.c
stream.c job: drop job_drain 2019-09-10 08:58:43 +02:00
throttle-groups.c
throttle.c
trace-events
vdi.c
vhdx-endian.c
vhdx-log.c
vhdx.c
vhdx.h
vmdk.c
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
win32-aio.c
write-threshold.c