From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:40711) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RKru3-0004R6-5v for qemu-devel@nongnu.org; Mon, 31 Oct 2011 09:27:52 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RKru1-0004DN-M6 for qemu-devel@nongnu.org; Mon, 31 Oct 2011 09:27:50 -0400 Received: from mx1.redhat.com ([209.132.183.28]:36178) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RKru1-0004D9-AP for qemu-devel@nongnu.org; Mon, 31 Oct 2011 09:27:49 -0400 From: Kevin Wolf Date: Mon, 31 Oct 2011 14:29:51 +0100 Message-Id: <1320067830-12093-17-git-send-email-kwolf@redhat.com> In-Reply-To: <1320067830-12093-1-git-send-email-kwolf@redhat.com> References: <1320067830-12093-1-git-send-email-kwolf@redhat.com> Subject: [Qemu-devel] [PATCH 16/55] block: reinitialize across bdrv_close()/bdrv_open() 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: Stefan Hajnoczi Several BlockDriverState fields are not being reinitialized across bdrv_close()/bdrv_open(). Make sure they are reset to their default values. Signed-off-by: Stefan Hajnoczi Signed-off-by: Kevin Wolf --- block.c | 6 ++++-- 1 files changed, 4 insertions(+), 2 deletions(-) diff --git a/block.c b/block.c index cb37086..96f3c3f 100644 --- a/block.c +++ b/block.c @@ -472,10 +472,13 @@ static int bdrv_open_common(BlockDriverState *bs, const char *filename, bs->total_sectors = 0; bs->encrypted = 0; bs->valid_key = 0; + bs->sg = 0; bs->open_flags = flags; + bs->growable = 0; bs->buffer_alignment = 512; pstrcpy(bs->filename, sizeof(bs->filename), filename); + bs->backing_file[0] = '\0'; if (use_bdrv_whitelist && !bdrv_is_whitelisted(drv)) { return -ENOTSUP; @@ -484,8 +487,7 @@ static int bdrv_open_common(BlockDriverState *bs, const char *filename, bs->drv = drv; bs->opaque = g_malloc0(drv->instance_size); - if (flags & BDRV_O_CACHE_WB) - bs->enable_write_cache = 1; + bs->enable_write_cache = !!(flags & BDRV_O_CACHE_WB); /* * Clear flags that are internal to the block layer before opening the -- 1.7.6.4