Only build compatfd when using AIO and make sure to always init AIO

OpenBSD doesn't use AIO so don't try to build compatfd when not using AIO.

Also make sure to call qemu_aio_init() from bdrv_init.  Everything that uses
bdrv calls bdrv_init so it makes sense to init aio from there instead of
in every single tool.

Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>



git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5197 c046a42c-6fe2-441c-8c8c-71466251a162
diff --git a/Makefile b/Makefile
index e676900..708941c 100644
--- a/Makefile
+++ b/Makefile
@@ -177,7 +177,11 @@
 ifdef CONFIG_WIN32
 QEMU_IMG_BLOCK_OBJS += qemu-img-block-raw-win32.o
 else
-QEMU_IMG_BLOCK_OBJS += nbd.o qemu-img-block-raw-posix.o compatfd.o
+QEMU_IMG_BLOCK_OBJS += nbd.o qemu-img-block-raw-posix.o
+endif
+
+ifdef CONFIG_AIO
+QEMU_IMG_BLOCK_OBJS += compatfd.o
 endif
 
 ######################################################################
diff --git a/Makefile.target b/Makefile.target
index dd511ef..d02d896 100644
--- a/Makefile.target
+++ b/Makefile.target
@@ -476,7 +476,11 @@
 ifdef CONFIG_WIN32
 OBJS+=block-raw-win32.o
 else
-OBJS+=block-raw-posix.o compatfd.o
+OBJS+=block-raw-posix.o
+endif
+
+ifdef CONFIG_AIO
+OBJS+=compatfd.o
 endif
 
 LIBS+=-lz
diff --git a/block-raw-posix.c b/block-raw-posix.c
index 0587950..eaf3bf2 100644
--- a/block-raw-posix.c
+++ b/block-raw-posix.c
@@ -561,6 +561,9 @@
         return;
 #endif
 
+    if (!first_aio)
+        return;
+
     do {
         fd_set rdfds;
 
diff --git a/block.c b/block.c
index a6fd0b1..e81df0a 100644
--- a/block.c
+++ b/block.c
@@ -1328,6 +1328,8 @@
 #ifndef _WIN32
     bdrv_register(&bdrv_nbd);
 #endif
+
+    qemu_aio_init();
 }
 
 void *qemu_aio_get(BlockDriverState *bs, BlockDriverCompletionFunc *cb,
diff --git a/configure b/configure
index f1ee0af..1da42a1 100755
--- a/configure
+++ b/configure
@@ -1220,6 +1220,7 @@
 fi
 if test "$aio" = "yes" ; then
   echo "#define CONFIG_AIO 1" >> $config_h
+  echo "CONFIG_AIO=yes" >> $config_mak
 fi
 
 # XXX: suppress that