nbd: mark more coroutine_fns

Several coroutine functions in block/nbd.c are not marked as such.  This
patch adds a few more markers; it is not exhaustive, but it focuses
especially on:

- places that wake other coroutines, because aio_co_wake() has very
different semantics inside a coroutine (queuing after yield vs. entering
immediately);

- functions with _co_ in their names, to avoid confusion

Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Message-Id: <20220414175756.671165-3-pbonzini@redhat.com>
Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@openvz.org>
Reviewed-by: Lukas Straub <lukasstraub2@web.de>
Signed-off-by: Eric Blake <eblake@redhat.com>
This commit is contained in:
Paolo Bonzini 2022-04-14 19:57:49 +02:00 committed by Eric Blake
parent 8846b7d1c1
commit 0c43c6fc89
1 changed files with 32 additions and 32 deletions

View File

@ -132,7 +132,7 @@ static bool nbd_client_connected(BDRVNBDState *s)
return qatomic_load_acquire(&s->state) == NBD_CLIENT_CONNECTED; return qatomic_load_acquire(&s->state) == NBD_CLIENT_CONNECTED;
} }
static bool nbd_recv_coroutine_wake_one(NBDClientRequest *req) static bool coroutine_fn nbd_recv_coroutine_wake_one(NBDClientRequest *req)
{ {
if (req->receiving) { if (req->receiving) {
req->receiving = false; req->receiving = false;
@ -143,7 +143,7 @@ static bool nbd_recv_coroutine_wake_one(NBDClientRequest *req)
return false; return false;
} }
static void nbd_recv_coroutines_wake(BDRVNBDState *s, bool all) static void coroutine_fn nbd_recv_coroutines_wake(BDRVNBDState *s, bool all)
{ {
int i; int i;
@ -154,7 +154,7 @@ static void nbd_recv_coroutines_wake(BDRVNBDState *s, bool all)
} }
} }
static void nbd_channel_error(BDRVNBDState *s, int ret) static void coroutine_fn nbd_channel_error(BDRVNBDState *s, int ret)
{ {
if (nbd_client_connected(s)) { if (nbd_client_connected(s)) {
qio_channel_shutdown(s->ioc, QIO_CHANNEL_SHUTDOWN_BOTH, NULL); qio_channel_shutdown(s->ioc, QIO_CHANNEL_SHUTDOWN_BOTH, NULL);
@ -466,7 +466,7 @@ static coroutine_fn int nbd_receive_replies(BDRVNBDState *s, uint64_t handle)
} }
} }
static int nbd_co_send_request(BlockDriverState *bs, static int coroutine_fn nbd_co_send_request(BlockDriverState *bs,
NBDRequest *request, NBDRequest *request,
QEMUIOVector *qiov) QEMUIOVector *qiov)
{ {
@ -721,8 +721,8 @@ static int nbd_parse_error_payload(NBDStructuredReplyChunk *chunk,
return 0; return 0;
} }
static int nbd_co_receive_offset_data_payload(BDRVNBDState *s, static int coroutine_fn
uint64_t orig_offset, nbd_co_receive_offset_data_payload(BDRVNBDState *s, uint64_t orig_offset,
QEMUIOVector *qiov, Error **errp) QEMUIOVector *qiov, Error **errp)
{ {
QEMUIOVector sub_qiov; QEMUIOVector sub_qiov;
@ -1039,7 +1039,7 @@ break_loop:
return false; return false;
} }
static int nbd_co_receive_return_code(BDRVNBDState *s, uint64_t handle, static int coroutine_fn nbd_co_receive_return_code(BDRVNBDState *s, uint64_t handle,
int *request_ret, Error **errp) int *request_ret, Error **errp)
{ {
NBDReplyChunkIter iter; NBDReplyChunkIter iter;
@ -1053,7 +1053,7 @@ static int nbd_co_receive_return_code(BDRVNBDState *s, uint64_t handle,
return iter.ret; return iter.ret;
} }
static int nbd_co_receive_cmdread_reply(BDRVNBDState *s, uint64_t handle, static int coroutine_fn nbd_co_receive_cmdread_reply(BDRVNBDState *s, uint64_t handle,
uint64_t offset, QEMUIOVector *qiov, uint64_t offset, QEMUIOVector *qiov,
int *request_ret, Error **errp) int *request_ret, Error **errp)
{ {
@ -1105,7 +1105,7 @@ static int nbd_co_receive_cmdread_reply(BDRVNBDState *s, uint64_t handle,
return iter.ret; return iter.ret;
} }
static int nbd_co_receive_blockstatus_reply(BDRVNBDState *s, static int coroutine_fn nbd_co_receive_blockstatus_reply(BDRVNBDState *s,
uint64_t handle, uint64_t length, uint64_t handle, uint64_t length,
NBDExtent *extent, NBDExtent *extent,
int *request_ret, Error **errp) int *request_ret, Error **errp)
@ -1165,7 +1165,7 @@ static int nbd_co_receive_blockstatus_reply(BDRVNBDState *s,
return iter.ret; return iter.ret;
} }
static int nbd_co_request(BlockDriverState *bs, NBDRequest *request, static int coroutine_fn nbd_co_request(BlockDriverState *bs, NBDRequest *request,
QEMUIOVector *write_qiov) QEMUIOVector *write_qiov)
{ {
int ret, request_ret; int ret, request_ret;
@ -1202,7 +1202,7 @@ static int nbd_co_request(BlockDriverState *bs, NBDRequest *request,
return ret ? ret : request_ret; return ret ? ret : request_ret;
} }
static int nbd_client_co_preadv(BlockDriverState *bs, int64_t offset, static int coroutine_fn nbd_client_co_preadv(BlockDriverState *bs, int64_t offset,
int64_t bytes, QEMUIOVector *qiov, int64_t bytes, QEMUIOVector *qiov,
BdrvRequestFlags flags) BdrvRequestFlags flags)
{ {
@ -1261,7 +1261,7 @@ static int nbd_client_co_preadv(BlockDriverState *bs, int64_t offset,
return ret ? ret : request_ret; return ret ? ret : request_ret;
} }
static int nbd_client_co_pwritev(BlockDriverState *bs, int64_t offset, static int coroutine_fn nbd_client_co_pwritev(BlockDriverState *bs, int64_t offset,
int64_t bytes, QEMUIOVector *qiov, int64_t bytes, QEMUIOVector *qiov,
BdrvRequestFlags flags) BdrvRequestFlags flags)
{ {
@ -1286,7 +1286,7 @@ static int nbd_client_co_pwritev(BlockDriverState *bs, int64_t offset,
return nbd_co_request(bs, &request, qiov); return nbd_co_request(bs, &request, qiov);
} }
static int nbd_client_co_pwrite_zeroes(BlockDriverState *bs, int64_t offset, static int coroutine_fn nbd_client_co_pwrite_zeroes(BlockDriverState *bs, int64_t offset,
int64_t bytes, BdrvRequestFlags flags) int64_t bytes, BdrvRequestFlags flags)
{ {
BDRVNBDState *s = (BDRVNBDState *)bs->opaque; BDRVNBDState *s = (BDRVNBDState *)bs->opaque;
@ -1321,7 +1321,7 @@ static int nbd_client_co_pwrite_zeroes(BlockDriverState *bs, int64_t offset,
return nbd_co_request(bs, &request, NULL); return nbd_co_request(bs, &request, NULL);
} }
static int nbd_client_co_flush(BlockDriverState *bs) static int coroutine_fn nbd_client_co_flush(BlockDriverState *bs)
{ {
BDRVNBDState *s = (BDRVNBDState *)bs->opaque; BDRVNBDState *s = (BDRVNBDState *)bs->opaque;
NBDRequest request = { .type = NBD_CMD_FLUSH }; NBDRequest request = { .type = NBD_CMD_FLUSH };
@ -1336,7 +1336,7 @@ static int nbd_client_co_flush(BlockDriverState *bs)
return nbd_co_request(bs, &request, NULL); return nbd_co_request(bs, &request, NULL);
} }
static int nbd_client_co_pdiscard(BlockDriverState *bs, int64_t offset, static int coroutine_fn nbd_client_co_pdiscard(BlockDriverState *bs, int64_t offset,
int64_t bytes) int64_t bytes)
{ {
BDRVNBDState *s = (BDRVNBDState *)bs->opaque; BDRVNBDState *s = (BDRVNBDState *)bs->opaque;
@ -1913,7 +1913,7 @@ fail:
return ret; return ret;
} }
static int nbd_co_flush(BlockDriverState *bs) static int coroutine_fn nbd_co_flush(BlockDriverState *bs)
{ {
return nbd_client_co_flush(bs); return nbd_client_co_flush(bs);
} }