On Tue, May 22, 2012 at 7:29 PM, Paolo Bonzini <pbonz...@redhat.com> wrote: > Il 22/05/2012 11:15, ronnie sahlberg ha scritto: >> Hi, >> >> Now that I see what happens, I can easily workaround this in block/iscsi.c >> by the patch below, but I dont know if this is the right thing to do. >> >> It does appear that here, when I use qemu_set_fd_handler() and add a >> handler for "writeble" it takes 55ms before the event system notices >> this and reacts. >> >> >> >> diff --git a/block/iscsi.c b/block/iscsi.c >> index d37c4ee..1ebff0f 100644 >> --- a/block/iscsi.c >> +++ b/block/iscsi.c >> @@ -105,6 +105,10 @@ iscsi_set_events(IscsiLun *iscsilun) >> { >> struct iscsi_context *iscsi = iscsilun->iscsi; >> >> + if (iscsi_which_events(iscsi) & POLLOUT) { >> + iscsi_process_write(iscsilun); >> + } >> + >> qemu_aio_set_fd_handler(iscsi_get_fd(iscsi), iscsi_process_read, >> (iscsi_which_events(iscsi) & POLLOUT) >> ? iscsi_process_write : NULL, > > Doh, now I remember. Whenever you change the aio handlers you need to > call qemu_notify_event() afterwards, if the handler may fire right away.
Thanks. I just confirmed that qemu_notify_event() fixes the issue. Ill send a patch that uses qemu_notify_event() and a comment why this is needed. regards ronnie sahlberg