xemu/include
Kevin Wolf 4be6a6d118 block: Poll after drain on attaching a node
Commit dcf94a23b1 ('block: Don't poll in parent drain callbacks')
removed polling in bdrv_child_cb_drained_begin() on the grounds that the
original bdrv_drain() already will poll and BdrvChildRole.drained_begin
calls must not cause graph changes (and therefore must not call
aio_poll() or the recursion through the graph will break.

This reasoning is correct for calls through bdrv_do_drained_begin().
However, BdrvChildRole.drained_begin is also called when a node that is
already in a drained section (i.e. bdrv_do_drained_begin() has already
returned and therefore can't poll any more) is attached to a new parent.
In this case, we must explicitly poll to have all requests completed
before the drained new child can be attached to the parent.

In bdrv_replace_child_noperm(), we know that we're not inside the
recursion of bdrv_do_drained_begin() because graph changes are not
allowed there, and bdrv_replace_child_noperm() is a graph change. The
call of BdrvChildRole.drained_begin() must therefore be followed by a
BDRV_POLL_WHILE() that waits for the completion of requests.

Reported-by: Max Reitz <mreitz@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
2018-07-10 10:36:15 +02:00
..
block block: Poll after drain on attaching a node 2018-07-10 10:36:15 +02:00
chardev chardev: comment details for CLOSED event 2018-06-30 17:50:48 +02:00
crypto crypto: Implement TLS Pre-Shared Keys (PSK). 2018-07-03 13:04:38 +01:00
disas RISC-V Disassembler 2018-03-07 08:30:28 +13:00
exec * IEC units series (Philippe) 2018-07-02 19:07:19 +01:00
fpu fpu/softfloat: Specialize on snan_bit_is_one 2018-05-17 15:27:15 -07:00
hw x86 fix for -rc0 2018-07-09 18:29:00 +01:00
io qio: non-default context for TLS handshake 2018-03-06 10:19:07 +00:00
libdecnumber
migration typedefs: add QJSON 2018-06-15 14:40:56 +01:00
monitor monitor: new parameter "x-oob" 2018-03-27 10:17:45 -05:00
net net: Remove the deprecated "vlan" parameter 2018-05-14 15:47:14 +08:00
qapi qmp: Use QDict * instead of QObject * for response objects 2018-07-03 23:18:56 +02:00
qemu cutils: Do not include "qemu/units.h" directly 2018-07-02 15:41:17 +02:00
qom cpu: Assert asidx_from_attrs return value in range 2018-07-02 08:09:49 -07:00
scsi pr-manager: add query-pr-managers QMP command 2018-06-28 19:05:35 +02:00
standard-headers linux-headers: Update to kernel mainline commit b357bf602 2018-06-22 13:28:35 +01:00
sysemu s390/ipl: fix ipl with -no-reboot 2018-07-02 10:37:38 +02:00
ui Add gles support to egl-helpers, wire up in egl-headless and gtk. 2018-06-26 13:48:49 +02:00
elf.h linux-user: ARM-FDPIC: Identify ARM FDPIC binaries 2018-05-03 18:25:29 +02:00
glib-compat.h glib: enforce the minimum required version and warn about old APIs 2018-06-29 12:22:28 +01:00
qemu-common.h qemu-options: Bail out on unsupported options instead of silently ignoring them 2018-05-09 00:13:39 +02:00
qemu-io.h qemu-io: Let command functions return error code 2018-06-11 16:18:45 +02:00
trace-tcg.h