From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:53241) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SoElh-00020U-FP for qemu-devel@nongnu.org; Mon, 09 Jul 2012 10:16:58 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1SoElf-0008AM-Hu for qemu-devel@nongnu.org; Mon, 09 Jul 2012 10:16:52 -0400 Received: from mx1.redhat.com ([209.132.183.28]:16782) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SoElf-00089r-A5 for qemu-devel@nongnu.org; Mon, 09 Jul 2012 10:16:51 -0400 From: Kevin Wolf Date: Mon, 9 Jul 2012 16:16:19 +0200 Message-Id: <1341843388-5663-17-git-send-email-kwolf@redhat.com> In-Reply-To: <1341843388-5663-1-git-send-email-kwolf@redhat.com> References: <1341843388-5663-1-git-send-email-kwolf@redhat.com> Subject: [Qemu-devel] [PATCH 16/25] block: copy over job and dirty bitmap fields in bdrv_append List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: anthony@codemonkey.ws Cc: kwolf@redhat.com, qemu-devel@nongnu.org From: Paolo Bonzini 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 Signed-off-by: Kevin Wolf --- 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