xemu/block
Kevin Wolf 40365552c2 mirror: Error out when a BDS would get two BBs
bdrv_replace_in_backing_chain() asserts that not both old and new
BlockDdriverState have a BlockBackend attached to them because both
would have to end up pointing to the new BDS and we don't support more
than one BB per BDS yet.

Before we can safely allow references to existing nodes as backing
files, we need to make sure that even if a backing file has a BB on it,
this doesn't crash qemu.

There are probably also some cases with the 'replaces' option set where
drive-mirror could fail this assertion today. They are fixed with this
error check as well.

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Reviewed-by: Max Reitz <mreitz@redhat.com>
2015-12-18 14:34:42 +01:00
..
accounting.c block: Update copyright of the accounting code 2015-11-12 16:22:47 +01:00
archipelago.c block: remove superfluous '\n' around error_report/error_setg 2015-03-10 08:15:33 +03:00
backup.c block: Don't wait serialising for non-COR read requests 2015-12-03 11:08:07 +08:00
blkdebug.c qapi: Don't let implicit enum MAX member collide 2015-12-17 08:21:28 +01:00
blkverify.c blkverify: Fix BDS leak in .bdrv_open error path 2015-10-16 15:34:30 +02:00
block-backend.c block: add blk_abort_aio_request 2015-11-17 15:06:21 -05:00
bochs.c block: Convert bs->file to BdrvChild 2015-10-16 15:34:29 +02:00
cloop.c block: Convert bs->file to BdrvChild 2015-10-16 15:34:29 +02:00
commit.c commit: reopen overlay_bs before base 2015-11-11 16:25:47 +01:00
curl.c aio: Add "is_external" flag for event handlers 2015-10-23 18:18:23 +02:00
dmg.c block: Convert bs->file to BdrvChild 2015-10-16 15:34:29 +02:00
gluster.c gluster: allocate GlusterAIOCBs on the stack 2015-11-11 10:45:39 -05:00
io.c block: Don't wait serialising for non-COR read requests 2015-12-03 11:08:07 +08:00
iscsi.c block: Drop BlockDriver.bdrv_ioctl 2015-11-12 16:22:43 +01:00
linux-aio.c aio: Add "is_external" flag for event handlers 2015-10-23 18:18:23 +02:00
Makefile.objs block: convert quorum blockdrv to use crypto APIs 2015-07-08 13:11:01 +02:00
mirror.c mirror: Error out when a BDS would get two BBs 2015-12-18 14:34:42 +01:00
nbd-client.c aio: Add "is_external" flag for event handlers 2015-10-23 18:18:23 +02:00
nbd-client.h nbd: Set block size to BDRV_SECTOR_SIZE 2015-03-18 12:07:01 +01:00
nbd.c block: Convert to new qapi union layout 2015-11-02 08:30:27 +01:00
nfs.c aio: Add "is_external" flag for event handlers 2015-10-23 18:18:23 +02:00
null.c block/null: Support reopen 2015-04-28 15:36:09 +02:00
parallels.c qapi: Don't let implicit enum MAX member collide 2015-12-17 08:21:28 +01:00
qapi.c qobject: Rename qtype_code to QType 2015-12-17 08:21:28 +01:00
qcow2-cache.c block: Convert bs->file to BdrvChild 2015-10-16 15:34:29 +02:00
qcow2-cluster.c qcow2: Fix qcow2_get_cluster_offset() for zero clusters 2015-11-11 16:55:29 +01:00
qcow2-refcount.c qcow2: Fix potential qemu-img check crash on 32 bit hosts 2015-12-02 13:22:29 +01:00
qcow2-snapshot.c block: Convert bs->file to BdrvChild 2015-10-16 15:34:29 +02:00
qcow2.c qcow2: Add .bdrv_join_options callback 2015-12-18 14:34:42 +01:00
qcow2.h coroutine: move into libqemuutil.a library 2015-10-20 14:59:04 +01:00
qcow.c block: Convert bs->backing_hd to BdrvChild 2015-10-16 15:34:29 +02:00
qed-check.c block: Use g_new() & friends to avoid multiplying sizes 2014-08-20 11:51:28 +02:00
qed-cluster.c Use glib memory allocation and free functions 2011-08-20 23:01:08 -05:00
qed-gencb.c block: Rename BlockDriverCompletionFunc to BlockCompletionFunc 2014-10-20 13:41:27 +02:00
qed-l2-cache.c qed: do not evict in-use L2 table cache entries 2012-03-12 15:14:06 +01:00
qed-table.c block: Convert bs->file to BdrvChild 2015-10-16 15:34:29 +02:00
qed.c qed: Implement .bdrv_drain 2015-11-12 16:22:43 +01:00
qed.h qed: Really remove unused field QEDAIOCB.finished 2015-02-06 17:24:21 +01:00
quorum.c qapi: Don't let implicit enum MAX member collide 2015-12-17 08:21:28 +01:00
raw_bsd.c block: Drop BlockDriver.bdrv_ioctl 2015-11-12 16:22:43 +01:00
raw-aio.h linux-aio: drop return code from laio_io_unplug and ioq_submit 2014-12-12 16:57:55 +00:00
raw-posix.c qapi: Don't let implicit enum MAX member collide 2015-12-17 08:21:28 +01:00
raw-win32.c block: switch from g_slice allocator to malloc 2015-10-12 11:17:45 +01:00
rbd.c rbd: fix ceph settings precedence 2015-07-14 17:15:23 +02:00
sheepdog.c aio: Add "is_external" flag for event handlers 2015-10-23 18:18:23 +02:00
snapshot.c migration: implement bdrv_all_find_vmstate_bs helper 2015-11-19 11:50:00 +01:00
ssh.c aio: Add "is_external" flag for event handlers 2015-10-23 18:18:23 +02:00
stream.c block: Move I/O status and error actions into BB 2015-10-23 18:18:23 +02:00
throttle-groups.c throttle: Check for pending requests in throttle_group_unregister_bs() 2015-11-11 16:25:47 +01:00
vdi.c coroutine: move into libqemuutil.a library 2015-10-20 14:59:04 +01:00
vhdx-endian.c block: VHDX endian fixes 2014-08-15 15:07:14 +02:00
vhdx-log.c block: Convert bs->file to BdrvChild 2015-10-16 15:34:29 +02:00
vhdx.c block: Convert bs->file to BdrvChild 2015-10-16 15:34:29 +02:00
vhdx.h block: vhdx - update PAYLOAD_BLOCK_UNMAPPED value to match 1.00 spec 2014-12-12 15:42:22 +00:00
vmdk.c block: Convert to new qapi union layout 2015-11-02 08:30:27 +01:00
vpc.c block: Convert bs->file to BdrvChild 2015-10-16 15:34:29 +02:00
vvfat.c block: Remove bdrv_swap() 2015-10-16 15:34:30 +02:00
win32-aio.c aio: Add "is_external" flag for event handlers 2015-10-23 18:18:23 +02:00
write-threshold.c coroutine: move into libqemuutil.a library 2015-10-20 14:59:04 +01:00