X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=engines%2Frbd.c;h=39501eb00551a1b1572c7a5bdc7921a5684e602c;hb=65f655bc01502afc5bc0d1b790a176afc6c59e95;hp=8eeef53b119c1d1255c93beab39804d859545a59;hpb=ae4860fd0ad92a16f488302027f5e1992b41bc13;p=fio.git diff --git a/engines/rbd.c b/engines/rbd.c index 8eeef53b..39501eb0 100644 --- a/engines/rbd.c +++ b/engines/rbd.c @@ -290,7 +290,7 @@ static void _fio_rbd_finish_aiocb(rbd_completion_t comp, void *data) */ ret = rbd_aio_get_return_value(fri->completion); if (ret < 0) { - io_u->error = ret; + io_u->error = -ret; io_u->resid = io_u->xfer_buflen; } else io_u->error = 0; @@ -517,6 +517,7 @@ static int fio_rbd_queue(struct thread_data *td, struct io_u *io_u) } else { dprint(FD_IO, "%s: Warning: unhandled ddir: %d\n", __func__, io_u->ddir); + r = -EINVAL; goto failed_comp; } @@ -524,7 +525,7 @@ static int fio_rbd_queue(struct thread_data *td, struct io_u *io_u) failed_comp: rbd_aio_release(fri->completion); failed: - io_u->error = r; + io_u->error = -r; td_verror(td, io_u->error, "xfer"); return FIO_Q_COMPLETED; } @@ -597,14 +598,14 @@ static int fio_rbd_setup(struct thread_data *td) r = rbd_stat(rbd->image, &info, sizeof(info)); if (r < 0) { log_err("rbd_status failed.\n"); - goto disconnect; + goto cleanup; } else if (info.size == 0) { log_err("image size should be larger than zero.\n"); r = -EINVAL; - goto disconnect; + goto cleanup; } - dprint(FD_IO, "rbd-engine: image size: %lu\n", info.size); + dprint(FD_IO, "rbd-engine: image size: %" PRIu64 "\n", info.size); /* taken from "net" engine. Pretend we deal with files, * even if we do not have any ideas about files. @@ -620,8 +621,6 @@ static int fio_rbd_setup(struct thread_data *td) return 0; -disconnect: - _fio_rbd_disconnect(rbd); cleanup: fio_rbd_cleanup(td); return r;