*/
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;
} else {
dprint(FD_IO, "%s: Warning: unhandled ddir: %d\n", __func__,
io_u->ddir);
+ r = -EINVAL;
goto failed_comp;
}
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;
}
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.
f = td->files[0];
f->real_file_size = info.size;
- /* disconnect, then we were only connected to determine
- * the size of the RBD.
- */
return 0;
-disconnect:
- _fio_rbd_disconnect(rbd);
cleanup:
fio_rbd_cleanup(td);
return r;