struct timeval now;
unsigned int i;
+ if (!fio_fill_issue_time(td))
+ return;
+
fio_gettime(&now, NULL);
for (i = 0; i < nr; i++) {
ret = io_submit(ld->aio_ctx, ld->iocbs_nr, iocbs);
if (ret > 0) {
fio_libaio_queued(td, io_us, ret);
+ io_u_mark_submit(td, ret);
ld->iocbs_nr -= ret;
io_us += ret;
iocbs += ret;
ret = 0;
- } else if (!ret || ret == -EAGAIN || ret == -EINTR)
+ } else if (!ret || ret == -EAGAIN || ret == -EINTR) {
+ if (!ret)
+ io_u_mark_submit(td, ret);
continue;
- else
+ } else
break;
} while (ld->iocbs_nr);
free(ld->iocbs);
free(ld->io_us);
free(ld);
- td->io_ops->data = NULL;
}
}
static int fio_libaio_init(struct thread_data *td)
{
struct libaio_data *ld = malloc(sizeof(*ld));
- static int warn_print;
int err;
- if (td->o.iodepth > 1 && !td->o.odirect && !warn_print) {
- log_info("fio: libaio engine is only async for non-buffered IO\n");
- warn_print = 1;
- }
-
memset(ld, 0, sizeof(*ld));
err = io_queue_init(td->o.iodepth, &ld->aio_ctx);