From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60209) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1byyNW-0001uW-3L for qemu-devel@nongnu.org; Tue, 25 Oct 2016 05:50:45 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1byyNS-0001Ci-2w for qemu-devel@nongnu.org; Tue, 25 Oct 2016 05:50:42 -0400 Message-ID: <580F2CBA.4@cn.fujitsu.com> Date: Tue, 25 Oct 2016 17:58:18 +0800 From: Changlong Xie MIME-Version: 1.0 References: <1476971860-20860-1-git-send-email-zhang.zhanghailiang@huawei.com> <1476971860-20860-3-git-send-email-zhang.zhanghailiang@huawei.com> In-Reply-To: <1476971860-20860-3-git-send-email-zhang.zhanghailiang@huawei.com> Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH RFC 2/7] block-backend: Introduce blk_root() helper List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: zhanghailiang , qemu-devel@nongnu.org, qemu-block@nongnu.org Cc: stefanha@redhat.com, kwolf@redhat.com, mreitz@redhat.com, pbonzini@redhat.com, wency@cn.fujitsu.com I know you need blk->root in the next patch, but we strongly don't recommend your current solution. Please refer Kevin's cf2ab8fc 1409 /* XXX Ugly way to get blk->root, but that's a feature, not a bug. This 1410 * hack makes it obvious that vhdx_write_header() bypasses the BlockBackend 1411 * here, which it really shouldn't be doing. */ 1412 child = QLIST_FIRST(&bs->parents); 1413 assert(!QLIST_NEXT(child, next_parent)); Then you can drop this commit. On 10/20/2016 09:57 PM, zhanghailiang wrote: > With this helper function, we can get the BdrvChild struct > from BlockBackend > > Signed-off-by: zhanghailiang > --- > block/block-backend.c | 5 +++++ > include/sysemu/block-backend.h | 1 + > 2 files changed, 6 insertions(+) > > diff --git a/block/block-backend.c b/block/block-backend.c > index 1a724a8..66387f0 100644 > --- a/block/block-backend.c > +++ b/block/block-backend.c > @@ -389,6 +389,11 @@ BlockDriverState *blk_bs(BlockBackend *blk) > return blk->root ? blk->root->bs : NULL; > } > > +BdrvChild *blk_root(BlockBackend *blk) > +{ > + return blk->root; > +} > + > static BlockBackend *bdrv_first_blk(BlockDriverState *bs) > { > BdrvChild *child; > diff --git a/include/sysemu/block-backend.h b/include/sysemu/block-backend.h > index b07159b..867f9f5 100644 > --- a/include/sysemu/block-backend.h > +++ b/include/sysemu/block-backend.h > @@ -99,6 +99,7 @@ void blk_remove_bs(BlockBackend *blk); > void blk_insert_bs(BlockBackend *blk, BlockDriverState *bs); > bool bdrv_has_blk(BlockDriverState *bs); > bool bdrv_is_root_node(BlockDriverState *bs); > +BdrvChild *blk_root(BlockBackend *blk); > > void blk_set_allow_write_beyond_eof(BlockBackend *blk, bool allow); > void blk_iostatus_enable(BlockBackend *blk); >