qemu-irix/block
Josh Durgin 0182df5ae5 rbd: add an asynchronous flush
The existing bdrv_co_flush_to_disk implementation uses rbd_flush(),
which is sychronous and causes the main qemu thread to block until it
is complete. This results in unresponsiveness and extra latency for
the guest.

Fix this by using an asynchronous version of flush.  This was added to
librbd with a special #define to indicate its presence, since it will
be backported to stable versions. Thus, there is no need to check the
version of librbd.

Implement this as bdrv_aio_flush, since it matches other aio functions
in the rbd block driver, and leave out bdrv_co_flush_to_disk when the
asynchronous version is available.

Reported-by: Oliver Francke <oliver@filoo.de>
Signed-off-by: Josh Durgin <josh.durgin@inktank.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
(cherry picked from commit dc7588c1eb)
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
2013-05-17 15:52:55 -05:00
..
Makefile.objs build: move rules from Makefile to */Makefile.objs 2012-12-19 08:29:06 +01:00
blkdebug.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
blkverify.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
bochs.c bochs: Fix bdrv_open() error handling 2013-02-01 14:58:28 +01:00
cloop.c cloop: Fix bdrv_open() error handling 2013-02-01 14:58:28 +01:00
commit.c block: fix null-pointer bug on error case in block commit 2013-01-17 10:51:11 +01:00
cow.c block: Use error code EMEDIUMTYPE for wrong format in some block drivers 2013-01-25 18:18:35 +01:00
curl.c block/curl: only restrict protocols with libcurl>=7.19.4 2013-02-13 11:57:35 -06:00
dmg.c dmg: Use g_free instead of free 2013-02-01 14:58:29 +01:00
gluster.c error: Strip trailing '\n' from error string arguments (again) 2013-02-11 08:13:19 -06:00
iscsi.c iscsi: add support for iovectors 2013-01-24 15:37:55 +01:00
linux-aio.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
mirror.c mirror: do nothing on zero-sized disk 2013-01-25 18:18:35 +01:00
nbd.c nbd: unlock mutex in nbd_co_send_request() error path 2013-05-13 11:47:07 -05:00
parallels.c parallels: Fix bdrv_open() error handling 2013-02-01 14:58:29 +01:00
qcow.c block: Use error code EMEDIUMTYPE for wrong format in some block drivers 2013-01-25 18:18:35 +01:00
qcow2-cache.c block: move include files to include/block/ 2012-12-19 08:31:31 +01:00
qcow2-cluster.c qcow2: make is_allocated return true for zero clusters 2013-04-02 11:00:19 -05:00
qcow2-refcount.c qcow2: flush refcount cache correctly in alloc_refcount_block() 2013-04-02 15:45:40 -05:00
qcow2-snapshot.c qcow2: flush refcount cache correctly in qcow2_write_snapshots() 2013-04-02 15:47:09 -05:00
qcow2.c qcow2: make is_allocated return true for zero clusters 2013-04-02 11:00:19 -05:00
qcow2.h block: move include files to include/block/ 2012-12-19 08:31:31 +01:00
qed-check.c qed: mark image clean after repair succeeds 2012-08-10 10:25:12 +02:00
qed-cluster.c Use glib memory allocation and free functions 2011-08-20 23:01:08 -05:00
qed-gencb.c Use glib memory allocation and free functions 2011-08-20 23:01:08 -05:00
qed-l2-cache.c qed: do not evict in-use L2 table cache entries 2012-03-12 15:14:06 +01:00
qed-table.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
qed.c block: Use error code EMEDIUMTYPE for wrong format in some block drivers 2013-01-25 18:18:35 +01:00
qed.h block: move include files to include/block/ 2012-12-19 08:31:31 +01:00
raw-aio.h block: make discard asynchronous 2013-01-15 10:03:47 +01:00
raw-posix.c block/raw-posix: detect readonly Linux block devices using BLKROGET 2013-02-12 12:22:49 +01:00
raw-win32.c block/raw-win32: Fix compiler warnings (wrong format specifiers) 2013-01-02 16:08:57 +01:00
raw.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
rbd.c rbd: add an asynchronous flush 2013-05-17 15:52:55 -05:00
sheepdog.c oslib-posix: rename socket_set_nonblock() to qemu_set_nonblock() 2013-04-04 15:17:32 -05:00
stream.c block: move include files to include/block/ 2012-12-19 08:31:31 +01:00
vdi.c g_malloc(0) and g_malloc0(0) return NULL; simplify 2013-01-30 11:14:46 +01:00
vmdk.c vmdk: Allow space in file name 2013-02-01 14:58:29 +01:00
vpc.c Revert "block/vpc: Fix size calculation" 2013-02-12 12:25:15 +01:00
vvfat.c Replace remaining gmtime, localtime by gmtime_r, localtime_r 2013-01-11 09:44:37 +01:00
win32-aio.c win32-aio: use iov utility functions instead of open-coding them 2013-01-18 09:57:51 +01:00