[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 16/25] block: copy over job and dirty bitmap fields
From: |
Kevin Wolf |
Subject: |
[Qemu-devel] [PATCH 16/25] block: copy over job and dirty bitmap fields in bdrv_append |
Date: |
Mon, 9 Jul 2012 16:16:19 +0200 |
From: Paolo Bonzini <address@hidden>
While these should not be in use at the time a transaction is started,
a command in the prepare phase of a transaction might have added them,
so they need to be brought over.
Signed-off-by: Paolo Bonzini <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>
---
block.c | 15 +++++++++++++++
1 files changed, 15 insertions(+), 0 deletions(-)
diff --git a/block.c b/block.c
index 0acdcac..702821d 100644
--- a/block.c
+++ b/block.c
@@ -1027,6 +1027,16 @@ void bdrv_append(BlockDriverState *bs_new,
BlockDriverState *bs_top)
tmp.iostatus_enabled = bs_top->iostatus_enabled;
tmp.iostatus = bs_top->iostatus;
+ /* dirty bitmap */
+ tmp.dirty_count = bs_top->dirty_count;
+ tmp.dirty_bitmap = bs_top->dirty_bitmap;
+ assert(bs_new->dirty_bitmap == NULL);
+
+ /* job */
+ tmp.in_use = bs_top->in_use;
+ tmp.job = bs_top->job;
+ assert(bs_new->job == NULL);
+
/* keep the same entry in bdrv_states */
pstrcpy(tmp.device_name, sizeof(tmp.device_name), bs_top->device_name);
tmp.list = bs_top->list;
@@ -1051,6 +1061,11 @@ void bdrv_append(BlockDriverState *bs_new,
BlockDriverState *bs_top)
/* clear the copied fields in the new backing file */
bdrv_detach_dev(bs_new, bs_new->dev);
+ bs_new->job = NULL;
+ bs_new->in_use = 0;
+ bs_new->dirty_bitmap = NULL;
+ bs_new->dirty_count = 0;
+
qemu_co_queue_init(&bs_new->throttled_reqs);
memset(&bs_new->io_base, 0, sizeof(bs_new->io_base));
memset(&bs_new->io_limits, 0, sizeof(bs_new->io_limits));
--
1.7.6.5
- [Qemu-devel] [PATCH 03/25] blockdev: warn when copy_on_read=on and readonly=on, (continued)
- [Qemu-devel] [PATCH 03/25] blockdev: warn when copy_on_read=on and readonly=on, Kevin Wolf, 2012/07/09
- [Qemu-devel] [PATCH 01/25] qcow2: fix #ifdef'd qcow2_check_refcounts() callers, Kevin Wolf, 2012/07/09
- [Qemu-devel] [PATCH 07/25] sheepdog: make sure we don't free aiocb before sending all requests, Kevin Wolf, 2012/07/09
- [Qemu-devel] [PATCH 12/25] blkdebug: pass getlength to underlying file, Kevin Wolf, 2012/07/09
- [Qemu-devel] [PATCH 02/25] qcow2: preserve free_byte_offset when qcow2_alloc_bytes() fails, Kevin Wolf, 2012/07/09
- [Qemu-devel] [PATCH 06/25] sheepdog: use coroutine based socket functions in coroutine context, Kevin Wolf, 2012/07/09
- [Qemu-devel] [PATCH 08/25] sheepdog: split outstanding list into inflight and pending, Kevin Wolf, 2012/07/09
- [Qemu-devel] [PATCH 09/25] sheepdog: traverse pending_list from the first for each time, Kevin Wolf, 2012/07/09
- [Qemu-devel] [PATCH 14/25] blkdebug: optionally tie errors to a specific sector, Kevin Wolf, 2012/07/09
- [Qemu-devel] [PATCH 10/25] blkdebug: remove sync i/o events, Kevin Wolf, 2012/07/09
- [Qemu-devel] [PATCH 16/25] block: copy over job and dirty bitmap fields in bdrv_append,
Kevin Wolf <=
- [Qemu-devel] [PATCH 11/25] blkdebug: tiny cleanup, Kevin Wolf, 2012/07/09
- [Qemu-devel] [PATCH 17/25] block: introduce bdrv_swap, implement bdrv_append on top of it, Kevin Wolf, 2012/07/09
- [Qemu-devel] [PATCH 18/25] fdc: rewrite seek and DSKCHG bit handling, Kevin Wolf, 2012/07/09
- [Qemu-devel] [PATCH 20/25] fdc_test: update media_change test, Kevin Wolf, 2012/07/09
- [Qemu-devel] [PATCH 13/25] blkdebug: store list of active rules, Kevin Wolf, 2012/07/09
- [Qemu-devel] [PATCH 15/25] raw: hook into blkdebug, Kevin Wolf, 2012/07/09
- [Qemu-devel] [PATCH 24/25] qtest: Tidy up temporary files properly, Kevin Wolf, 2012/07/09
- [Qemu-devel] [PATCH 21/25] fdc_test: introduce test_sense_interrupt, Kevin Wolf, 2012/07/09
- [Qemu-devel] [PATCH 19/25] fdc: fix interrupt handling, Kevin Wolf, 2012/07/09
- [Qemu-devel] [PATCH 23/25] fdc: Move floppy geometry guessing back from block.c, Kevin Wolf, 2012/07/09