qemu/include/block
Kevin Wolf d35ff5e6b3 block: Ignore guest dev permissions during incoming migration
Usually guest devices don't like other writers to the same image, so
they use blk_set_perm() to prevent this from happening. In the migration
phase before the VM is actually running, though, they don't have a
problem with writes to the image. On the other hand, storage migration
needs to be able to write to the image in this phase, so the restrictive
blk_set_perm() call of qdev devices breaks it.

This patch flags all BlockBackends with a qdev device as
blk->disable_perm during incoming migration, which means that the
requested permissions are stored in the BlockBackend, but not actually
applied to its root node yet.

Once migration has finished and the VM should be resumed, the
permissions are applied. If they cannot be applied (e.g. because the NBD
server used for block migration hasn't been shut down), resuming the VM
fails.

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Tested-by: Kashyap Chamarthy <kchamart@redhat.com>
2017-04-07 14:44:05 +02:00
..
accounting.h Use scripts/clean-includes to drop redundant qemu/typedefs.h 2016-03-22 22:20:16 +01:00
aio.h aio-posix: partially inline aio_dispatch into aio_poll 2017-02-21 11:39:39 +00:00
block_backup.h Backup: export interfaces for extra serialization 2016-09-13 11:00:56 +01:00
block_int.h block: Always call bdrv_child_check_perm first 2017-03-17 12:54:06 +01:00
block.h block: Ignore guest dev permissions during incoming migration 2017-04-07 14:44:05 +02:00
blockjob_int.h blockjob: Add permissions to block_job_create() 2017-02-28 20:40:37 +01:00
blockjob.h blockjob: Factor out block_job_remove_all_bdrv() 2017-02-28 20:40:37 +01:00
dirty-bitmap.h block: More operations for meta dirty bitmap 2016-10-24 17:56:07 +02:00
nbd.h nbd: Implement NBD_CMD_WRITE_ZEROES on server 2016-11-02 09:28:56 +01:00
qapi.h block/qapi: Use blk_enable_write_cache() 2016-03-30 12:16:02 +02:00
raw-aio.h linux-aio: share one LinuxAioState within an AioContext 2016-07-18 15:09:31 +01:00
scsi.h * SCSI scanner support 2016-07-14 13:44:06 +01:00
snapshot.h include: Clean up includes 2016-02-23 12:43:05 +00:00
thread-pool.h Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
throttle-groups.h block: Move I/O throttling configuration functions to BlockBackend 2016-05-19 16:45:30 +02:00
write-threshold.h Use scripts/clean-includes to drop redundant qemu/typedefs.h 2016-03-22 22:20:16 +01:00