return io_u;
}
-static int fio_libaio_getevents(struct thread_data *td, int min, int max,
- struct timespec *t)
+static int fio_libaio_getevents(struct thread_data *td, unsigned int min,
+ unsigned int max, struct timespec *t)
{
struct libaio_data *ld = td->io_ops->data;
long r;
{
struct libaio_data *ld = td->io_ops->data;
+ fio_ro_check(td, io_u);
+
if (ld->iocbs_nr == (int) td->o.iodepth)
return FIO_Q_BUSY;
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);