We need it for further blockdev-replace functionality. Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru> --- block/export/export.c | 15 +++++++++++++++ include/system/block-backend-global-state.h | 1 + 2 files changed, 16 insertions(+) diff --git a/block/export/export.c b/block/export/export.c index f3bbf11070..d11beb900f 100644 --- a/block/export/export.c +++ b/block/export/export.c @@ -370,3 +370,18 @@ BlockExportInfoList *qmp_query_block_exports(Error **errp) return head; } + +BlockBackend *blk_by_export_id(const char *id, Error **errp) +{ + BlockExport *exp; + + exp = blk_exp_find(id); + if (exp == NULL) { + error_setg(errp, "Export '%s' not found", id); + return NULL; + } + + assert(exp->blk); + + return exp->blk; +} diff --git a/include/system/block-backend-global-state.h b/include/system/block-backend-global-state.h index a438f21dff..f23b9f1518 100644 --- a/include/system/block-backend-global-state.h +++ b/include/system/block-backend-global-state.h @@ -72,6 +72,7 @@ void blk_detach_dev(BlockBackend *blk, DeviceState *dev); DeviceState *blk_get_attached_dev(BlockBackend *blk); BlockBackend *blk_by_dev(void *dev); BlockBackend *blk_by_qdev_id(const char *id, Error **errp); +BlockBackend *blk_by_export_id(const char *id, Error **errp); void blk_set_dev_ops(BlockBackend *blk, const BlockDevOps *ops, void *opaque); int blk_make_zero(BlockBackend *blk, BdrvRequestFlags flags); -- 2.52.0