From: Avi Kivity <a...@redhat.com> Not all block format drivers expose an io_flush method (reasonable for read-only protocols), so calling io_flush there will immediately segfault.
Fix by checking for the method's existence before calling it. Signed-off-by: Avi Kivity <a...@redhat.com> Signed-off-by: Kevin Wolf <kw...@redhat.com> --- aio.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) diff --git a/aio.c b/aio.c index f164a47..2f08655 100644 --- a/aio.c +++ b/aio.c @@ -113,7 +113,9 @@ void qemu_aio_flush(void) qemu_aio_wait(); QLIST_FOREACH(node, &aio_handlers, node) { - ret |= node->io_flush(node->opaque); + if (node->io_flush) { + ret |= node->io_flush(node->opaque); + } } } while (qemu_bh_poll() || ret > 0); } -- 1.6.6.1