mirror_qemu/block
Christoph Hellwig 9ef91a6771 raw-posix: refactor AIO support
Currently the raw-posix.c code contains a lot of knowledge about the
asynchronous I/O scheme that is mostly implemented in posix-aio-compat.c.
All this code does not really belong here and is getting a bit in the
way of implementing native AIO on Linux.

So instead move all the guts of the AIO implementation into
posix-aio-compat.c (which might need a better name, btw).

There's now a very small interface between the AIO providers and raw-posix.c:

 - an init routine is called from raw_open_common to return an AIO context
   for this drive.  An AIO implementation may either re-use one context
   for all drives, or use a different one for each as the Linux native
   AIO support will do.
 - an submit routine is called from the aio_reav/writev methods to submit
   an AIO request

There are no indirect calls involved in this interface as we need to
decide which one to call manually.  We will only call the Linux AIO native
init function if we were requested to by vl.c, and we will only call
the native submit function if we are asked to and the request is properly
aligned.  That's also the reason why the alignment check actually does
the inverse move and now goes into raw-posix.c.

The old posix-aio-compat.h headers is removed now that most of it's
content is private to posix-aio-compat.c, and instead we add a new
block/raw-posix-aio.h headers is created containing only the tiny interface
between raw-posix.c and the AIO implementation.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
2009-08-27 20:30:22 -05:00
..
bochs.c Move block drivers into their own directory 2009-05-14 16:13:46 -05:00
cloop.c Move block drivers into their own directory 2009-05-14 16:13:46 -05:00
cow.c qemu-img: Print available options with -o ? 2009-06-06 18:38:57 +03:00
curl.c Fix Sparse warning about "expression using sizeof on a function" 2009-08-01 10:13:44 +00:00
dmg.c Revert "support colon in filenames" 2009-07-09 16:06:38 -05:00
nbd.c Move block drivers into their own directory 2009-05-14 16:13:46 -05:00
parallels.c Move block drivers into their own directory 2009-05-14 16:13:46 -05:00
qcow.c qcow1: Fix qcow_aio_writev 2009-07-10 13:44:29 -05:00
qcow2-cluster.c qcow2: Fix L1 table memory allocation 2009-07-10 13:44:29 -05:00
qcow2-refcount.c Fix most warnings (errors with -Werror) when debugging is enabled 2009-07-20 17:19:25 +00:00
qcow2-snapshot.c Fix QCOW2 debugging code to compile again 2009-06-29 08:52:40 -05:00
qcow2.c qcow2: Metadata preallocation 2009-08-27 20:30:20 -05:00
qcow2.h Fix QCOW2 debugging code to compile again 2009-06-29 08:52:40 -05:00
raw-posix-aio.h raw-posix: refactor AIO support 2009-08-27 20:30:22 -05:00
raw-posix.c raw-posix: refactor AIO support 2009-08-27 20:30:22 -05:00
raw-win32.c block: add bdrv_probe_device method 2009-06-15 14:04:22 +02:00
vdi.c block/vdi.c: Fix several bugs 2009-08-27 19:33:15 -05:00
vmdk.c vmdk: Fix backing file handling 2009-07-22 10:58:47 -05:00
vpc.c eliminate errors about unused results in block/vpc.c 2009-08-24 08:46:48 -05:00
vvfat.c vvfat: one more missing BlockDriver C99 initializer conversion 2009-05-28 02:14:56 -05:00