qed: Implement .bdrv_co_readv/writev
commit89f89709c7c66edd95c2288eae7ec4006256348a
authorKevin Wolf <kwolf@redhat.com>
Mon, 14 Nov 2016 13:20:00 +0000 (14 14:20 +0100)
committerKevin Wolf <kwolf@redhat.com>
Mon, 26 Jun 2017 12:51:15 +0000 (26 14:51 +0200)
tree2cdd21c5a322cf749e30649e268e1cf908858fc1
parent018598747c775394471ce4a341a1ce225a1738dc
qed: Implement .bdrv_co_readv/writev

Most of the qed code is now synchronous and matches the coroutine model.
One notable exception is the serialisation between requests which can
still schedule a callback. Before we can replace this with coroutine
locks, let's convert the driver's external interfaces to the coroutine
versions.

We need to be careful to handle both requests that call the completion
callback directly from the calling coroutine (i.e. fully synchronous
code) and requests that involve some callback, so that we need to yield
and wait for the completion callback coming from outside the coroutine.

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Reviewed-by: Manos Pitsidianakis <el13635@mail.ntua.gr>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
block/qed.c