qemu/migration
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
..
block.c migration/block: Avoid invoking blk_drain too frequently 2017-03-16 08:58:27 +01:00
colo-comm.c COLO: Add 'x-colo-lost-heartbeat' command to trigger failover 2016-10-30 15:17:39 +05:30
colo-failover.c COLO: Implement the process of failover for primary VM 2016-10-30 15:17:39 +05:30
colo.c Add a new qmp command to do checkpoint, query xen replication status 2017-02-28 11:02:12 -08:00
exec.c migration: set name for all I/O channels created 2016-10-27 09:13:10 +02:00
fd.c migration: set name for all I/O channels created 2016-10-27 09:13:10 +02:00
Makefile.objs build: remove --enable-colo/--disable-colo 2017-01-16 17:52:35 +01:00
migration.c block: Ignore guest dev permissions during incoming migration 2017-04-07 14:44:05 +02:00
postcopy-ram.c postcopy: Check for shared memory 2017-03-16 09:02:26 +01:00
qemu-file-channel.c migration: introduce a new QEMUFile impl based on QIOChannel 2016-05-26 11:31:24 +05:30
qemu-file.c add 'release-ram' migrate capability 2017-02-13 17:27:13 +00:00
qjson.c qjson: free str 2016-08-08 00:00:24 +04:00
ram.c Change the method to calculate dirty-pages-rate 2017-03-16 08:55:56 +01:00
rdma.c migration/rdma: Don't flag an error when we've been told about one 2016-10-13 17:22:38 +02:00
savevm.c postcopy: Transmit ram size summary word 2017-02-28 11:30:23 +00:00
socket.c io: change the QIOTask callback signature 2017-01-23 15:32:18 +00:00
tls.c migration: use "" as the default for tls-creds/hostname 2017-03-16 08:57:08 +01:00
trace-events exec: ram_block_discard_range 2017-02-28 11:30:23 +00:00
vmstate.c vmstate: fix failed iotests case 68 and 91 2017-03-16 08:59:52 +01:00
xbzrle.c util: move declarations out of qemu-common.h 2016-03-22 22:20:17 +01:00