From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:32851) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z8TyF-0007ix-2V for qemu-devel@nongnu.org; Fri, 26 Jun 2015 09:47:07 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Z8TyC-00023p-U8 for qemu-devel@nongnu.org; Fri, 26 Jun 2015 09:47:06 -0400 Received: from mx1.redhat.com ([209.132.183.28]:37009) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z8TyC-00023X-OB for qemu-devel@nongnu.org; Fri, 26 Jun 2015 09:47:04 -0400 Message-ID: <558D57D4.1090609@redhat.com> Date: Fri, 26 Jun 2015 15:47:00 +0200 From: Max Reitz MIME-Version: 1.0 References: <558BA2B5.3080107@cn.fujitsu.com> In-Reply-To: <558BA2B5.3080107@cn.fujitsu.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH] refresh filename after the node is replaced List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Wen Congyang , qemu-devl , Jeff Cody Cc: Fam Zheng , Stefan Hajnoczi On 25.06.2015 08:41, Wen Congyang wrote: > We can use block job mirror to repair broken quorum files. But the command > 'info block' doesn't output correct filename after block job mirror finishes. Which filename? The quorum filename is broken after this patch, too. In order to fix this, we need to call bdrv_refresh_filename() after bdrv_swap() on all BDSs which reference one of the swapped BDSs. I think this will not be reasonably possible until Kevin's "bdrv_reopen() overhaul" series is merged which introduces a generic parent-child relationship for BDSs. Max > Signed-off-by: Wen Congyang > --- > block/mirror.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/block/mirror.c b/block/mirror.c > index 8aa2b21..2ca2c21 100644 > --- a/block/mirror.c > +++ b/block/mirror.c > @@ -351,6 +351,9 @@ static void mirror_exit(BlockJob *job, void *opaque) > bdrv_set_backing_hd(s->base, NULL); > bdrv_unref(p); > } > + if (s->to_replace != s->common.bs) { > + bdrv_refresh_filename(s->common.bs); > + } > } > if (s->to_replace) { > bdrv_op_unblock_all(s->to_replace, s->replace_blocker);