From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:51012) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TCC9p-00063r-BI for qemu-devel@nongnu.org; Thu, 13 Sep 2012 12:20:54 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TCC9f-0001Wk-35 for qemu-devel@nongnu.org; Thu, 13 Sep 2012 12:20:49 -0400 Received: from mx1.redhat.com ([209.132.183.28]:9917) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TCC9e-0001WD-Nl for qemu-devel@nongnu.org; Thu, 13 Sep 2012 12:20:39 -0400 Message-ID: <505207CC.10008@redhat.com> Date: Thu, 13 Sep 2012 18:20:28 +0200 From: Paolo Bonzini MIME-Version: 1.0 References: <392c2852363a2cb420a1c53e7b13e85bc4ebf089.1347548248.git.jcody@redhat.com> In-Reply-To: <392c2852363a2cb420a1c53e7b13e85bc4ebf089.1347548248.git.jcody@redhat.com> Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v2 03/16] block: Framework for reopening files safely List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Jeff Cody Cc: kwolf@redhat.com, supriyak@linux.vnet.ibm.com, eblake@redhat.com, qemu-devel@nongnu.org, stefanha@gmail.com Il 13/09/2012 17:49, Jeff Cody ha scritto: > + reopen_state->bs->open_flags = reopen_state->flags; > + reopen_state->bs->enable_write_cache = !!(reopen_state->flags & > + BDRV_O_CACHE_WB); I think setting enable_write_cache is wrong here because this is really part of the guest state, not the host state (yes, it's a mess). Instead, you could proceed like this: 1) change bdrv_enable_write_cache like this: int bdrv_enable_write_cache(BlockDriverState *bs) { return bs->enable_write_cache && (bs->open_flags & BDRV_O_CACHE_WB); } and use it in block.c instead of checking bs->enable_write_cache directly; 2) always initialize bs->enable_write_cache to true, rather than to the value of BDRV_O_CACHE_WB; This way bs->enable_write_cache is _really_ guest state rather than a mix. 3) never touch enable_write_cache in bdrv_reopen. Paolo