block: fix bdrv_flush() ordering in bdrv_close()
authorStefan Hajnoczi <stefanha@redhat.com>
Tue, 2 Jul 2013 13:36:25 +0000 (15:36 +0200)
committerStefan Hajnoczi <stefanha@redhat.com>
Fri, 5 Jul 2013 08:52:23 +0000 (10:52 +0200)
commit58fda173e1156d24e5ff62361774715152188a07
tree1dfab6e26b536426145698431f32e2510b85b076
parent3494d650273e619606c6cb2c38aa9b8b7bed98e2
block: fix bdrv_flush() ordering in bdrv_close()

Since 80ccf93b we flush the block device during close.  The
bdrv_drain_all() call should come before bdrv_flush() to ensure guest
write requests have completed.  Otherwise we may miss pending writes
when flushing.

Call bdrv_drain_all() again for safety as the final step after
bdrv_flush().  This should not be necessary but we can be paranoid here
in case bdrv_flush() left I/O pending.

Cc: qemu-stable@nongnu.org
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
block.c