]> git.proxmox.com Git - mirror_qemu.git/commit - block/nbd-client.c
nbd: Use low-level QIOChannel API in nbd_read_eof()
authorKevin Wolf <kwolf@redhat.com>
Mon, 18 Feb 2019 13:56:01 +0000 (14:56 +0100)
committerKevin Wolf <kwolf@redhat.com>
Mon, 25 Feb 2019 14:03:19 +0000 (15:03 +0100)
commitd3bd5b90890f6715bcee38e00745112157dfbe59
tree3f712b4e248b6902231e755db75cb49ef80e41a5
parenta7b78fc944b20b953d68426b7db2c81fc6a5b5af
nbd: Use low-level QIOChannel API in nbd_read_eof()

Instead of using the convenience wrapper qio_channel_read_all_eof(), use
the lower level QIOChannel API. This means duplicating some code, but
we'll need this because this coroutine yield is special: We want it to
be interruptible so that nbd_client_attach_aio_context() can correctly
reenter the coroutine.

This moves the bdrv_dec/inc_in_flight() pair into nbd_read_eof(), so
that connection_co will always sit in this exact qio_channel_yield()
call when bdrv_drain() returns.

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
block/nbd-client.c
include/block/nbd.h
nbd/client.c