We need it for further blockdev-replace functionality.
Signed-off-by: Vladimir Sementsov-Ogievskiy <[email protected]>
---
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