qemu-e2k/stubs
Nishanth Aravamudan ed6e216171 linux-aio: properly bubble up errors from initialization
laio_init() can fail for a couple of reasons, which will lead to a NULL
pointer dereference in laio_attach_aio_context().

To solve this, add a aio_setup_linux_aio() function which is called
early in raw_open_common. If this fails, propagate the error up. The
signature of aio_get_linux_aio() was not modified, because it seems
preferable to return the actual errno from the possible failing
initialization calls.

Additionally, when the AioContext changes, we need to associate a
LinuxAioState with the new AioContext. Use the bdrv_attach_aio_context
callback and call the new aio_setup_linux_aio(), which will allocate a
new AioContext if needed, and return errors on failures. If it fails for
any reason, fallback to threaded AIO with an error message, as the
device is already in-use by the guest.

Add an assert that aio_get_linux_aio() cannot return NULL.

Signed-off-by: Nishanth Aravamudan <naravamudan@digitalocean.com>
Message-id: 20180622193700.6523-1-naravamudan@digitalocean.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
2018-06-27 13:06:34 +01:00
..
arch-query-cpu-def.c
arch-query-cpu-model-baseline.c
arch-query-cpu-model-comparison.c
arch-query-cpu-model-expansion.c
bdrv-next-monitor-owned.c
blk-commit-all.c
blockdev-close-all-bdrv-states.c
change-state-handler.c
clock-warp.c
cpu-get-clock.c
cpu-get-icount.c
dump.c
error-printf.c
fd-register.c
fdset.c monitor: add lock to protect mon_fdsets 2018-06-18 15:48:22 +02:00
gdbstub.c
get-vm-name.c
iothread-lock.c
iothread.c
is-daemonized.c
linux-aio.c linux-aio: properly bubble up errors from initialization 2018-06-27 13:06:34 +01:00
machine-init-done.c
Makefile.objs pc-dimm: factor out MemoryDevice interface 2018-05-07 10:00:02 -03:00
migr-blocker.c
monitor.c
notify-event.c
pc_madt_cpu_entry.c
pci-host-piix.c
qmp_memory_device.c pc-dimm: factor out MemoryDevice interface 2018-05-07 10:00:02 -03:00
qtest.c
ram-block.c
replay.c
runstate-check.c
set-fd-handler.c
slirp.c
sysbus.c
target-get-monitor-def.c
target-monitor-defs.c
tpm.c
trace-control.c
uuid.c
vm-stop.c
vmgenid.c
vmstate.c
xen-common.c
xen-hvm.c