[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 6/9] block-migration: tiny refactoring
From: |
Vladimir Sementsov-Ogievskiy |
Subject: |
[Qemu-devel] [PATCH 6/9] block-migration: tiny refactoring |
Date: |
Thu, 11 Dec 2014 17:17:34 +0300 |
Add blk_create and blk_free to remove code duplicates. Otherwise,
duplicates will rise in the following patches because of BlkMigBlock
sturcture extendin.
Signed-off-by: Vladimir Sementsov-Ogievskiy <address@hidden>
---
block-migration.c | 56 +++++++++++++++++++++++++++++--------------------------
1 file changed, 30 insertions(+), 26 deletions(-)
diff --git a/block-migration.c b/block-migration.c
index 5b4aa0f..d0c825f 100644
--- a/block-migration.c
+++ b/block-migration.c
@@ -113,6 +113,30 @@ static void blk_mig_unlock(void)
qemu_mutex_unlock(&block_mig_state.lock);
}
+/* Only allocating and initializing structure fields, not copying any data. */
+
+static BlkMigBlock *blk_create(BlkMigDevState *bmds, int64_t sector,
+ int nr_sectors)
+{
+ BlkMigBlock *blk = g_new(BlkMigBlock, 1);
+ blk->buf = g_malloc(BLOCK_SIZE);
+ blk->bmds = bmds;
+ blk->sector = sector;
+ blk->nr_sectors = nr_sectors;
+
+ blk->iov.iov_base = blk->buf;
+ blk->iov.iov_len = nr_sectors * BDRV_SECTOR_SIZE;
+ qemu_iovec_init_external(&blk->qiov, &blk->iov, 1);
+
+ return blk;
+}
+
+static void blk_free(BlkMigBlock *blk)
+{
+ g_free(blk->buf);
+ g_free(blk);
+}
+
/* Must run outside of the iothread lock during the bulk phase,
* or the VM will stall.
*/
@@ -285,15 +309,7 @@ static int mig_save_device_bulk(QEMUFile *f,
BlkMigDevState *bmds)
nr_sectors = total_sectors - cur_sector;
}
- blk = g_new(BlkMigBlock, 1);
- blk->buf = g_malloc(BLOCK_SIZE);
- blk->bmds = bmds;
- blk->sector = cur_sector;
- blk->nr_sectors = nr_sectors;
-
- blk->iov.iov_base = blk->buf;
- blk->iov.iov_len = nr_sectors * BDRV_SECTOR_SIZE;
- qemu_iovec_init_external(&blk->qiov, &blk->iov, 1);
+ blk = blk_create(bmds, cur_sector, nr_sectors);
blk_mig_lock();
block_mig_state.submitted++;
@@ -467,17 +483,9 @@ static int mig_save_device_dirty(QEMUFile *f,
BlkMigDevState *bmds,
} else {
nr_sectors = BDRV_SECTORS_PER_DIRTY_CHUNK;
}
- blk = g_new(BlkMigBlock, 1);
- blk->buf = g_malloc(BLOCK_SIZE);
- blk->bmds = bmds;
- blk->sector = sector;
- blk->nr_sectors = nr_sectors;
+ blk = blk_create(bmds, sector, nr_sectors);
if (is_async) {
- blk->iov.iov_base = blk->buf;
- blk->iov.iov_len = nr_sectors * BDRV_SECTOR_SIZE;
- qemu_iovec_init_external(&blk->qiov, &blk->iov, 1);
-
blk->aiocb = bdrv_aio_readv(bmds->bs, sector, &blk->qiov,
nr_sectors, blk_mig_read_cb, blk);
@@ -492,8 +500,7 @@ static int mig_save_device_dirty(QEMUFile *f,
BlkMigDevState *bmds,
}
blk_send(f, blk);
- g_free(blk->buf);
- g_free(blk);
+ blk_free(blk);
}
bdrv_reset_dirty_bitmap(bmds->bs, bmds->dirty_bitmap, sector,
@@ -508,8 +515,7 @@ static int mig_save_device_dirty(QEMUFile *f,
BlkMigDevState *bmds,
error:
DPRINTF("Error reading sector %" PRId64 "\n", sector);
- g_free(blk->buf);
- g_free(blk);
+ blk_free(blk);
return ret;
}
@@ -560,8 +566,7 @@ static int flush_blks(QEMUFile *f)
blk_send(f, blk);
blk_mig_lock();
- g_free(blk->buf);
- g_free(blk);
+ blk_free(blk);
block_mig_state.read_done--;
block_mig_state.transferred++;
@@ -612,8 +617,7 @@ static void blk_mig_cleanup(void)
while ((blk = QSIMPLEQ_FIRST(&block_mig_state.blk_list)) != NULL) {
QSIMPLEQ_REMOVE_HEAD(&block_mig_state.blk_list, entry);
- g_free(blk->buf);
- g_free(blk);
+ blk_free(blk);
}
blk_mig_unlock();
}
--
1.9.1
- [Qemu-devel] [PATCH 0/8] Dirty bitmaps migration, Vladimir Sementsov-Ogievskiy, 2014/12/11
- [Qemu-devel] [PATCH 1/9] block: rename bdrv_reset_dirty_bitmap, Vladimir Sementsov-Ogievskiy, 2014/12/11
- [Qemu-devel] [PATCH 2/9] block-migration: fix pending() return value, Vladimir Sementsov-Ogievskiy, 2014/12/11
- [Qemu-devel] [PATCH 3/9] block: fix spoiling all dirty bitmaps by mirror and migration, Vladimir Sementsov-Ogievskiy, 2014/12/11
- [Qemu-devel] [PATCH 6/9] block-migration: tiny refactoring,
Vladimir Sementsov-Ogievskiy <=
- [Qemu-devel] [PATCH 4/9] hbitmap: store / restore, Vladimir Sementsov-Ogievskiy, 2014/12/11
- [Qemu-devel] [PATCH 5/9] block: BdrvDirtyBitmap store/restore interface, Vladimir Sementsov-Ogievskiy, 2014/12/11
- [Qemu-devel] [PATCH 7/9] block-migration: remove not needed iothread lock, Vladimir Sementsov-Ogievskiy, 2014/12/11
- [Qemu-devel] [PATCH 9/9] block-migration: add named dirty bitmaps migration, Vladimir Sementsov-Ogievskiy, 2014/12/11
- [Qemu-devel] [PATCH 8/9] migration: add dirty parameter, Vladimir Sementsov-Ogievskiy, 2014/12/11