mirror of https://gitee.com/openkylin/qemu.git
sheepdog: fix co_recv coroutine context
The co_recv coroutine has two things that will try to enter it: 1. The select(2) read callback on the sheepdog socket. 2. The aio_add_request() blocking operations, including a coroutine mutex. This patch fixes it by setting NULL to co_recv before sending data. In future, we should make the sheepdog driver fully coroutine-based and simplify request handling. Signed-off-by: MORITA Kazutaka <morita.kazutaka@lab.ntt.co.jp> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
c9b308d20b
commit
6d1acda8f1
|
@ -629,6 +629,9 @@ static void coroutine_fn aio_read_response(void *opaque)
|
|||
|
||||
switch (acb->aiocb_type) {
|
||||
case AIOCB_WRITE_UDATA:
|
||||
/* this coroutine context is no longer suitable for co_recv
|
||||
* because we may send data to update vdi objects */
|
||||
s->co_recv = NULL;
|
||||
if (!is_data_obj(aio_req->oid)) {
|
||||
break;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue