mirror of https://github.com/xemu-project/xemu.git
block/block-copy: add list of all call-states
It simplifies debugging. Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> Reviewed-by: Max Reitz <mreitz@redhat.com> Message-Id: <20210116214705.822267-6-vsementsov@virtuozzo.com> Signed-off-by: Max Reitz <mreitz@redhat.com>
This commit is contained in:
parent
26be9d62dd
commit
2e099a9d29
|
@ -42,6 +42,9 @@ typedef struct BlockCopyCallState {
|
||||||
/* Coroutine where async block-copy is running */
|
/* Coroutine where async block-copy is running */
|
||||||
Coroutine *co;
|
Coroutine *co;
|
||||||
|
|
||||||
|
/* To reference all call states from BlockCopyState */
|
||||||
|
QLIST_ENTRY(BlockCopyCallState) list;
|
||||||
|
|
||||||
/* State */
|
/* State */
|
||||||
int ret;
|
int ret;
|
||||||
bool finished;
|
bool finished;
|
||||||
|
@ -81,7 +84,8 @@ typedef struct BlockCopyState {
|
||||||
bool use_copy_range;
|
bool use_copy_range;
|
||||||
int64_t copy_size;
|
int64_t copy_size;
|
||||||
uint64_t len;
|
uint64_t len;
|
||||||
QLIST_HEAD(, BlockCopyTask) tasks;
|
QLIST_HEAD(, BlockCopyTask) tasks; /* All tasks from all block-copy calls */
|
||||||
|
QLIST_HEAD(, BlockCopyCallState) calls;
|
||||||
|
|
||||||
BdrvRequestFlags write_flags;
|
BdrvRequestFlags write_flags;
|
||||||
|
|
||||||
|
@ -282,6 +286,7 @@ BlockCopyState *block_copy_state_new(BdrvChild *source, BdrvChild *target,
|
||||||
}
|
}
|
||||||
|
|
||||||
QLIST_INIT(&s->tasks);
|
QLIST_INIT(&s->tasks);
|
||||||
|
QLIST_INIT(&s->calls);
|
||||||
|
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
@ -669,6 +674,8 @@ static int coroutine_fn block_copy_common(BlockCopyCallState *call_state)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
|
QLIST_INSERT_HEAD(&call_state->s->calls, call_state, list);
|
||||||
|
|
||||||
do {
|
do {
|
||||||
ret = block_copy_dirty_clusters(call_state);
|
ret = block_copy_dirty_clusters(call_state);
|
||||||
|
|
||||||
|
@ -694,6 +701,8 @@ static int coroutine_fn block_copy_common(BlockCopyCallState *call_state)
|
||||||
call_state->cb(call_state->cb_opaque);
|
call_state->cb(call_state->cb_opaque);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QLIST_REMOVE(call_state, list);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue