[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 00/12] Portable thread-pool/AIO, Win32 emulated A
From: |
Paolo Bonzini |
Subject: |
[Qemu-devel] [PATCH v2 00/12] Portable thread-pool/AIO, Win32 emulated AIO |
Date: |
Tue, 7 Aug 2012 13:17:15 +0200 |
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
--
1.7.11.2
- [Qemu-devel] [PATCH v2 00/12] Portable thread-pool/AIO, Win32 emulated AIO,
Paolo Bonzini <=
- [Qemu-devel] [PATCH v2 01/12] event_notifier: enable it to use pipes, Paolo Bonzini, 2012/08/07
- [Qemu-devel] [PATCH v2 02/12] event_notifier: add Win32 implementation, Paolo Bonzini, 2012/08/07
- [Qemu-devel] [PATCH v2 04/12] aio: provide platform-independent API, Paolo Bonzini, 2012/08/07
- [Qemu-devel] [PATCH v2 03/12] main-loop: use event notifiers, Paolo Bonzini, 2012/08/07
- [Qemu-devel] [PATCH v2 05/12] aio: add Win32 implementation, Paolo Bonzini, 2012/08/07
- [Qemu-devel] [PATCH v2 06/12] linux-aio: use event notifiers, Paolo Bonzini, 2012/08/07
- [Qemu-devel] [PATCH v2 07/12] qemu-thread: add QemuSemaphore, Paolo Bonzini, 2012/08/07
- [Qemu-devel] [PATCH v2 08/12] aio: add generic thread-pool facility, Paolo Bonzini, 2012/08/07
- [Qemu-devel] [PATCH v2 09/12] block: switch posix-aio-compat to threadpool, Paolo Bonzini, 2012/08/07
- [Qemu-devel] [PATCH v2 10/12] raw: merge posix-aio-compat.c into block/raw-posix.c, Paolo Bonzini, 2012/08/07