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 <zhang.zhanghaili...@huawei.com>
---
   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);




.



Reply via email to