mirror: Store MirrorOp.co for debuggability

If a coroutine is launched, but the coroutine pointer isn't stored
anywhere, debugging any problems inside the coroutine is quite hard.
Let's store the coroutine pointer of a mirror operation in MirrorOp to
have it available in the debugger.

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
This commit is contained in:
Kevin Wolf 2020-01-28 16:06:41 +01:00
parent 6c599282f8
commit eed325b92c

View File

@ -103,6 +103,7 @@ struct MirrorOp {
bool is_pseudo_op; bool is_pseudo_op;
bool is_active_write; bool is_active_write;
CoQueue waiting_requests; CoQueue waiting_requests;
Coroutine *co;
QTAILQ_ENTRY(MirrorOp) next; QTAILQ_ENTRY(MirrorOp) next;
}; };
@ -429,6 +430,7 @@ static unsigned mirror_perform(MirrorBlockJob *s, int64_t offset,
default: default:
abort(); abort();
} }
op->co = co;
QTAILQ_INSERT_TAIL(&s->ops_in_flight, op, next); QTAILQ_INSERT_TAIL(&s->ops_in_flight, op, next);
qemu_coroutine_enter(co); qemu_coroutine_enter(co);