Commit 00f78533 authored by Paolo Bonzini's avatar Paolo Bonzini Committed by Kevin Wolf

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: default avatarPaolo Bonzini <pbonzini@redhat.com>
Signed-off-by: default avatarBharata B Rao <bharata@linux.vnet.ibm.com>
Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
parent 870f5681
...@@ -119,7 +119,7 @@ bool qemu_aio_wait(void) ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -187,7 +187,7 @@ bool qemu_aio_wait(void)
} }
} }
walking_handlers = 0; walking_handlers--;
} }
return true; return true;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment