If we have current monitor, let's bind it to wrapper coroutine too.
Signed-off-by: Vladimir Sementsov-Ogievskiy <[email protected]>
---
block/block-gen.h | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/block/block-gen.h b/block/block-gen.h
index c1fd3f40de..61f055a8cc 100644
--- a/block/block-gen.h
+++ b/block/block-gen.h
@@ -27,6 +27,7 @@
#define BLOCK_BLOCK_GEN_H
#include "block/block_int.h"
+#include "monitor/monitor.h"
/* Base structure for argument packing structures */
typedef struct AioPollCo {
@@ -38,11 +39,20 @@ typedef struct AioPollCo {
static inline int aio_poll_co(AioPollCo *s)
{
+ Monitor *mon = monitor_cur();
assert(!qemu_in_coroutine());
+ if (mon) {
+ monitor_set_cur(s->co, mon);
+ }
+
aio_co_enter(s->ctx, s->co);
AIO_WAIT_WHILE(s->ctx, s->in_progress);
+ if (mon) {
+ monitor_set_cur(s->co, NULL);
+ }
+
return s->ret;
}
--
2.29.2