mirror of https://github.com/xqemu/xqemu.git
aio: Fix qemu_aio_wait() to maintain correct walking_handlers count
Fix qemu_aio_wait() to ensure that registered aio handlers don't get deleted when they are still active. This is ensured by maintaning the right count of walking_handlers. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Bharata B Rao <bharata@linux.vnet.ibm.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
870f5681c9
commit
00f7853332
8
aio.c
8
aio.c
|
@ -119,7 +119,7 @@ bool qemu_aio_wait(void)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
walking_handlers = 1;
|
walking_handlers++;
|
||||||
|
|
||||||
FD_ZERO(&rdfds);
|
FD_ZERO(&rdfds);
|
||||||
FD_ZERO(&wrfds);
|
FD_ZERO(&wrfds);
|
||||||
|
@ -147,7 +147,7 @@ bool qemu_aio_wait(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
walking_handlers = 0;
|
walking_handlers--;
|
||||||
|
|
||||||
/* No AIO operations? Get us out of here */
|
/* No AIO operations? Get us out of here */
|
||||||
if (!busy) {
|
if (!busy) {
|
||||||
|
@ -159,7 +159,7 @@ bool qemu_aio_wait(void)
|
||||||
|
|
||||||
/* if we have any readable fds, dispatch event */
|
/* if we have any readable fds, dispatch event */
|
||||||
if (ret > 0) {
|
if (ret > 0) {
|
||||||
walking_handlers = 1;
|
walking_handlers++;
|
||||||
|
|
||||||
/* we have to walk very carefully in case
|
/* we have to walk very carefully in case
|
||||||
* qemu_aio_set_fd_handler is called while we're walking */
|
* qemu_aio_set_fd_handler is called while we're walking */
|
||||||
|
@ -187,7 +187,7 @@ bool qemu_aio_wait(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
walking_handlers = 0;
|
walking_handlers--;
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
Loading…
Reference in New Issue