From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54118) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cDjEW-0005RE-Hu for qemu-devel@nongnu.org; Sun, 04 Dec 2016 21:42:25 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cDjEV-000291-PZ for qemu-devel@nongnu.org; Sun, 04 Dec 2016 21:42:24 -0500 References: <1476971860-20860-1-git-send-email-zhang.zhanghailiang@huawei.com> <1476971860-20860-3-git-send-email-zhang.zhanghailiang@huawei.com> <580F2CBA.4@cn.fujitsu.com> From: Hailiang Zhang Message-ID: <5844D3EA.7040700@huawei.com> Date: Mon, 5 Dec 2016 10:41:46 +0800 MIME-Version: 1.0 In-Reply-To: <580F2CBA.4@cn.fujitsu.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: Changlong Xie , 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 On 2016/10/25 17:58, Changlong Xie wrote: > 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. > OK, got it, I'll drop this patch in next version, thanks. > 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); >> > > > > . >