Il 25/10/2012 18:01, Stefan Hajnoczi ha scritto: > On Tue, Aug 7, 2012 at 1:17 PM, Paolo Bonzini <[email protected]> wrote: >> This patch series is part 2 in my EventNotifier/AIO improvements >> for QEMU 1.2. It extends use of EventNotifier to the main loop >> and AIO subsystems. A new API using EventNotifier is added to aio.c >> and a new portable thread pool is introduced (based on code from >> posix-aio-compat.c, mostly) that uses this API. raw-posix.c is >> converted to use the new thread pool, and support for asynchronous >> I/O is finally added to Win32 as well. >> >> The network drivers (curl, libiscsi, nbd) have to be disabled >> under Windows. They are unlikely to have any users, since they >> were broken until 1.0 and (unlike slirp) we never had any report. >> >> I tested this under Wine, with a RHEL virtual machine booting just as >> glacially as before. "info blockstats" does show a slightly higher >> overhead, so I would like this to be tested on real Windows hosts. >> Even if the result is negative, I would prefer to keep the early >> parts (i.e. drop only the last patch) since they are a prerequisite for >> improvements to block/raw-posix.c (such as asynchronous discard >> support) scheduled for 1.3. The platform independent APIs introduced >> by patches 4 and 5 are also useful for native AIO on Win32. >> >> >> Paolo Bonzini (12): >> event_notifier: enable it to use pipes >> event_notifier: add Win32 implementation >> main-loop: use event notifiers >> aio: provide platform-independent API >> aio: add Win32 implementation >> linux-aio: use event notifiers >> qemu-thread: add QemuSemaphore >> aio: add generic thread-pool facility >> block: switch posix-aio-compat to threadpool >> raw: merge posix-aio-compat.c into block/raw-posix.c >> raw-posix: rename raw-posix-aio.h, hide unavailable prototypes >> raw-win32: add emulated AIO support >> >> Makefile.objs | 12 +- >> aio.c => aio-posix.c | 9 + >> aio-win32.c | 177 +++++++++ >> block/Makefile.objs | 6 +- >> block/{raw-posix-aio.h => raw-aio.h} | 19 +- >> block/raw-posix.c | 297 ++++++++++++++- >> block/raw-win32.c | 187 +++++++--- >> event_notifier-posix.c | 118 ++++++ >> event_notifier-win32.c | 59 +++ >> event_notifier.c | 67 ---- >> event_notifier.h | 20 +- >> linux-aio.c | 51 ++- >> main-loop.c | 106 +----- >> oslib-posix.c | 31 -- >> posix-aio-compat.c | 679 >> ----------------------------------- >> qemu-aio.h | 19 +- >> qemu-common.h | 1 - >> qemu-thread-posix.c | 74 ++++ >> qemu-thread-posix.h | 5 + >> qemu-thread-win32.c | 35 ++ >> qemu-thread-win32.h | 4 + >> qemu-thread.h | 7 + >> thread-pool.c | 279 ++++++++++++++ >> thread-pool.h | 34 ++ >> trace-events | 5 + >> 25 file modificati, 1323 inserzioni(+), 978 rimozioni(-) >> rename aio.c => aio-posix.c (92%) >> create mode 100644 aio-win32.c >> rename block/{raw-posix-aio.h => raw-aio.h} (62%) >> create mode 100644 event_notifier-posix.c >> create mode 100644 event_notifier-win32.c >> delete mode 100644 event_notifier.c >> delete mode 100644 posix-aio-compat.c >> create mode 100644 thread-pool.c >> create mode 100644 thread-pool.h > > Ping, is there a v3?
No, but I rebased it on top of AioContext in my branch. If you're interested I can resubmit it. Paolo
