[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 34/42] block: fix wrong order in live block migration
From: |
Stefan Hajnoczi |
Subject: |
[Qemu-devel] [PULL 34/42] block: fix wrong order in live block migration setup |
Date: |
Fri, 6 Jun 2014 18:13:55 +0200 |
From: chai wen <address@hidden>
The function init_blk_migration is better to be called before
set_dirty_tracking as the reasons below.
If we want to track dirty blocks via dirty_maps on a BlockDriverState
when doing live block-migration, its correspoding 'BlkMigDevState' should be
added to block_mig_state.bmds_list first for subsequent processing.
Otherwise set_dirty_tracking will do nothing on an empty list than allocating
dirty_bitmaps for them. And bdrv_get_dirty_count will access the
bmds->dirty_maps directly, then there would be a segfault triggered.
If the set_dirty_tracking fails, qemu_savevm_state_cancel will handle
the cleanup of init_blk_migration automatically.
Reviewed-by: Fam Zheng <address@hidden>
Signed-off-by: chai wen <address@hidden>
Signed-off-by: Stefan Hajnoczi <address@hidden>
---
block-migration.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/block-migration.c b/block-migration.c
index 1656270..25a0388 100644
--- a/block-migration.c
+++ b/block-migration.c
@@ -629,6 +629,7 @@ static int block_save_setup(QEMUFile *f, void *opaque)
block_mig_state.submitted, block_mig_state.transferred);
qemu_mutex_lock_iothread();
+ init_blk_migration(f);
/* start track dirty blocks */
ret = set_dirty_tracking();
@@ -638,8 +639,6 @@ static int block_save_setup(QEMUFile *f, void *opaque)
return ret;
}
- init_blk_migration(f);
-
qemu_mutex_unlock_iothread();
ret = flush_blks(f);
--
1.9.3
- [Qemu-devel] [PULL 20/42] sheepdog: implement .bdrv_detach/attach_aio_context(), (continued)
- [Qemu-devel] [PULL 20/42] sheepdog: implement .bdrv_detach/attach_aio_context(), Stefan Hajnoczi, 2014/06/06
- [Qemu-devel] [PULL 26/42] raw-posix: drop raw_get_aio_fd() since it is no longer used, Stefan Hajnoczi, 2014/06/06
- [Qemu-devel] [PULL 27/42] block: Move declaration of bdrv_get_aio_context to block.h, Stefan Hajnoczi, 2014/06/06
- [Qemu-devel] [PULL 22/42] vmdk: implement .bdrv_detach/attach_aio_context(), Stefan Hajnoczi, 2014/06/06
- [Qemu-devel] [PULL 28/42] virtio-blk: Allow config-wce in dataplane, Stefan Hajnoczi, 2014/06/06
- [Qemu-devel] [PULL 29/42] virtio-blk: Factor out virtio_blk_handle_scsi_req from virtio_blk_handle_scsi, Stefan Hajnoczi, 2014/06/06
- [Qemu-devel] [PULL 31/42] throttle: add throttle_detach/attach_aio_context(), Stefan Hajnoczi, 2014/06/06
- [Qemu-devel] [PULL 30/42] dataplane: Support VIRTIO_BLK_T_SCSI_CMD, Stefan Hajnoczi, 2014/06/06
- [Qemu-devel] [PULL 32/42] throttle: add detach/attach test case, Stefan Hajnoczi, 2014/06/06
- [Qemu-devel] [PULL 33/42] blockdev: acquire AioContext in block_set_io_throttle, Stefan Hajnoczi, 2014/06/06
- [Qemu-devel] [PULL 34/42] block: fix wrong order in live block migration setup,
Stefan Hajnoczi <=
- [Qemu-devel] [PULL 36/42] rbd: Fix leaks in rbd_start_aio() error path, Stefan Hajnoczi, 2014/06/06
- [Qemu-devel] [PULL 35/42] qemu-img: Document check exit codes, Stefan Hajnoczi, 2014/06/06
- [Qemu-devel] [PULL 40/42] qapi: create two block related json modules, Stefan Hajnoczi, 2014/06/06
- [Qemu-devel] [PULL 39/42] qapi: Extract qapi/common.json definitions, Stefan Hajnoczi, 2014/06/06
- [Qemu-devel] [PULL 41/42] qapi: Extract qapi/block-core.json definitions, Stefan Hajnoczi, 2014/06/06
- [Qemu-devel] [PULL 42/42] qapi: Extract qapi/block.json definitions, Stefan Hajnoczi, 2014/06/06
- [Qemu-devel] [PULL 23/42] dataplane: use the QEMU block layer for I/O, Stefan Hajnoczi, 2014/06/06
- [Qemu-devel] [PULL 37/42] sheepdog: fix vdi object update after live snapshot, Stefan Hajnoczi, 2014/06/06
- [Qemu-devel] [PULL 38/42] sheepdog: reload only header in a case of live snapshot, Stefan Hajnoczi, 2014/06/06
- Re: [Qemu-devel] [PULL 00/42] Block patches, Peter Maydell, 2014/06/09