From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60613) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1V6tiP-0004sn-6R for qemu-devel@nongnu.org; Tue, 06 Aug 2013 22:43:18 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1V6tiG-0003UF-S7 for qemu-devel@nongnu.org; Tue, 06 Aug 2013 22:43:09 -0400 Received: from e23smtp08.au.ibm.com ([202.81.31.141]:46843) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1V6tiG-0003Pm-8a for qemu-devel@nongnu.org; Tue, 06 Aug 2013 22:43:00 -0400 Received: from /spool/local by e23smtp08.au.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Wed, 7 Aug 2013 12:39:50 +1000 Message-ID: <5201B412.7010801@linux.vnet.ibm.com> Date: Wed, 07 Aug 2013 10:42:26 +0800 From: Wenchao Xia MIME-Version: 1.0 References: <1374765505-14356-1-git-send-email-stefanha@redhat.com> <1374765505-14356-2-git-send-email-stefanha@redhat.com> <51F21AA0.3090406@linux.vnet.ibm.com> <20130806150621.GA9327@stefanha-thinkpad.redhat.com> In-Reply-To: <20130806150621.GA9327@stefanha-thinkpad.redhat.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v6 01/18] block: ensure bdrv_drain_all() works during bdrv_delete() List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Stefan Hajnoczi Cc: Kevin Wolf , Ping Fan Liu , Stefan Hajnoczi , qemu-devel@nongnu.org, Michael Roth , qemu-stable@nongnu.org, alex@alex.org.uk, Paolo Bonzini > On Fri, Jul 26, 2013 at 02:43:44PM +0800, Wenchao Xia wrote: >> Reviewed-by: Wenchao Xia >> >> One question: old code missed itself in bdrv_drain_all(), is that a bug? > > Sorry, I don't understand the question. Can you rephrase it? > Before this patch, in the code path: bdrv_close()->bdrv_drain_all(), the *bs does not exist in bdrv_states, so the code missed the chance to drain the request on *bs. That is a bug, and this patch is actually a bugfix? >>> In bdrv_delete() make sure to call bdrv_make_anon() *after* bdrv_close() >>> so that the device is still seen by bdrv_drain_all() when iterating >>> bdrv_states. >>> >>> Cc: qemu-stable@nongnu.org >>> Signed-off-by: Stefan Hajnoczi >>> --- >>> block.c | 4 ++-- >>> 1 file changed, 2 insertions(+), 2 deletions(-) >>> >>> diff --git a/block.c b/block.c >>> index 6cd39fa..9d68270 100644 >>> --- a/block.c >>> +++ b/block.c >>> @@ -1600,11 +1600,11 @@ void bdrv_delete(BlockDriverState *bs) >>> assert(!bs->job); >>> assert(!bs->in_use); >>> >>> + bdrv_close(bs); >>> + >>> /* remove from list, if necessary */ >>> bdrv_make_anon(bs); >>> >>> - bdrv_close(bs); >>> - >>> g_free(bs); >>> } >>> >> >> >> -- >> Best Regards >> >> Wenchao Xia >> >> > -- Best Regards Wenchao Xia