diff options
author | Paolo Bonzini <pbonzini@redhat.com> | 2012-09-24 14:40:56 +0530 |
---|---|---|
committer | Kevin Wolf <kwolf@redhat.com> | 2012-09-28 17:51:47 +0200 |
commit | 00f78533326c5ba2e62fafada16655aa558a5520 (patch) | |
tree | 8a7c037ebc711682dc9ec179b334f9c80f62cde0 | |
parent | 870f5681c9dbafc738082b1fd48e0cc013bf43c7 (diff) |
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>
-rw-r--r-- | aio.c | 8 |
1 files changed, 4 insertions, 4 deletions
@@ -119,7 +119,7 @@ bool qemu_aio_wait(void) return true; } - walking_handlers = 1; + walking_handlers++; FD_ZERO(&rdfds); 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 */ if (!busy) { @@ -159,7 +159,7 @@ bool qemu_aio_wait(void) /* if we have any readable fds, dispatch event */ if (ret > 0) { - walking_handlers = 1; + walking_handlers++; /* we have to walk very carefully in case * 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; |