On 04/02/2013 07:10 AM, Kevin Wolf wrote:
Am 29.03.2013 um 21:03 hat Josh Durgin geschrieben:
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.
librbd is linked dynamically and the version on the build host isn't
necessarily the same as the version qemu is run with. So shouldn't this
better be a runtime check?
While we discuss runtime loading separately, would you mind taking this
patch as-is for now?
Josh
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 <oli...@filoo.de>
Signed-off-by: Josh Durgin <josh.dur...@inktank.com>
Looks good otherwise.
Kevin