diff options
author | Stefan Hajnoczi <stefanha@linux.vnet.ibm.com> | 2011-11-30 12:23:43 +0000 |
---|---|---|
committer | Kevin Wolf <kwolf@redhat.com> | 2011-12-05 14:56:06 +0100 |
commit | 922453bca6a927bb527068ae8679d587cfa45dbc (patch) | |
tree | beb8fc3e9e180558f423e5b7ce97affed1ee8ca6 /blockdev.c | |
parent | 5f8b6491f20732e0a31e64bbf75b62def579e044 (diff) | |
download | qemu-922453bca6a927bb527068ae8679d587cfa45dbc.tar.gz qemu-922453bca6a927bb527068ae8679d587cfa45dbc.tar.bz2 qemu-922453bca6a927bb527068ae8679d587cfa45dbc.zip |
block: convert qemu_aio_flush() calls to bdrv_drain_all()
Many places in QEMU call qemu_aio_flush() to complete all pending
asynchronous I/O. Most of these places actually want to drain all block
requests but there is no block layer API to do so.
This patch introduces the bdrv_drain_all() API to wait for requests
across all BlockDriverStates to complete. As a bonus we perform checks
after qemu_aio_wait() to ensure that requests really have finished.
Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Diffstat (limited to 'blockdev.c')
-rw-r--r-- | blockdev.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/blockdev.c b/blockdev.c index af4e239b93..dbf0251a77 100644 --- a/blockdev.c +++ b/blockdev.c @@ -653,7 +653,7 @@ int do_snapshot_blkdev(Monitor *mon, const QDict *qdict, QObject **ret_data) goto out; } - qemu_aio_flush(); + bdrv_drain_all(); bdrv_flush(bs); bdrv_close(bs); @@ -840,7 +840,7 @@ int do_drive_del(Monitor *mon, const QDict *qdict, QObject **ret_data) } /* quiesce block driver; prevent further io */ - qemu_aio_flush(); + bdrv_drain_all(); bdrv_flush(bs); bdrv_close(bs); |