X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=engines%2Flibaio.c;h=ad7903cf5f1d36bdc9dfd4585e864c172ba87726;hp=e4869aa9d6a8648a7dbe9413421019f7b7b83234;hb=c90e1017b9384b170d47b97d2353f7bff3b5a34d;hpb=b2cecdc28469f8042d6cc3d83d83b18086845f18 diff --git a/engines/libaio.c b/engines/libaio.c index e4869aa9..ad7903cf 100644 --- a/engines/libaio.c +++ b/engines/libaio.c @@ -255,11 +255,20 @@ static void fio_libaio_cleanup(struct thread_data *td) static int fio_libaio_init(struct thread_data *td) { struct libaio_data *ld = malloc(sizeof(*ld)); - int err; + struct libaio_options *o = td->eo; + int err = 0; memset(ld, 0, sizeof(*ld)); - err = io_queue_init(td->o.iodepth, &ld->aio_ctx); + /* + * First try passing in 0 for queue depth, since we don't + * care about the user ring. If that fails, the kernel is too old + * and we need the right depth. + */ + if (!o->userspace_reap) + err = io_queue_init(0, &ld->aio_ctx); + if (o->userspace_reap || err == -EINVAL) + err = io_queue_init(td->o.iodepth, &ld->aio_ctx); if (err) { td_verror(td, -err, "io_queue_init"); log_err("fio: check /proc/sys/fs/aio-max-nr\n");