X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=engines%2Frbd.c;h=52fc8c9f566e174b0c8d3173713233d25a66271e;hp=363be65bea58ded83e37eb7b867283d6aada67f8;hb=b8ecbef62d45629aae98061903879f4e65cd7cfe;hpb=fea585d43f975cef74beb3df770168f36ae895b9 diff --git a/engines/rbd.c b/engines/rbd.c index 363be65b..52fc8c9f 100644 --- a/engines/rbd.c +++ b/engines/rbd.c @@ -13,6 +13,7 @@ struct fio_rbd_iou { struct io_u *io_u; rbd_completion_t completion; int io_seen; + int io_complete; }; struct rbd_data { @@ -186,6 +187,8 @@ static void _fio_rbd_finish_aiocb(rbd_completion_t comp, void *data) * a specific error. So we have to assume that it can't do * partial completions. */ + fri->io_complete = 1; + ret = rbd_aio_get_return_value(fri->completion); if (ret < 0) { io_u->error = ret; @@ -207,7 +210,7 @@ static inline int fri_check_complete(struct rbd_data *rbd_data, { struct fio_rbd_iou *fri = io_u->engine_data; - if (rbd_aio_is_complete(fri->completion)) { + if (fri->io_complete) { fri->io_seen = 1; rbd_data->aio_events[*events] = io_u; (*events)++; @@ -283,6 +286,7 @@ static int fio_rbd_queue(struct thread_data *td, struct io_u *io_u) fio_ro_check(td, io_u); fri->io_seen = 0; + fri->io_complete = 0; r = rbd_aio_create_completion(fri, _fio_rbd_finish_aiocb, &fri->completion);