.off1 = offsetof(struct ioring_options, hipri),
.help = "Use polled IO completions",
.category = FIO_OPT_C_ENGINE,
- .group = FIO_OPT_G_LIBAIO,
+ .group = FIO_OPT_G_IOURING,
},
{
.name = "fixedbufs",
.off1 = offsetof(struct ioring_options, fixedbufs),
.help = "Pre map IO buffers",
.category = FIO_OPT_C_ENGINE,
- .group = FIO_OPT_G_LIBAIO,
+ .group = FIO_OPT_G_IOURING,
},
{
.name = "registerfiles",
.off1 = offsetof(struct ioring_options, registerfiles),
.help = "Pre-open/register files",
.category = FIO_OPT_C_ENGINE,
- .group = FIO_OPT_G_LIBAIO,
+ .group = FIO_OPT_G_IOURING,
},
{
.name = "sqthread_poll",
.off1 = offsetof(struct ioring_options, sqpoll_thread),
.help = "Offload submission/completion to kernel thread",
.category = FIO_OPT_C_ENGINE,
- .group = FIO_OPT_G_LIBAIO,
+ .group = FIO_OPT_G_IOURING,
},
{
.name = "sqthread_poll_cpu",
.cb = fio_ioring_sqpoll_cb,
.help = "What CPU to run SQ thread polling on",
.category = FIO_OPT_C_ENGINE,
- .group = FIO_OPT_G_LIBAIO,
+ .group = FIO_OPT_G_IOURING,
},
{
.name = NULL,
r = io_uring_enter(ld, 0, actual_min,
IORING_ENTER_GETEVENTS);
if (r < 0) {
- if (errno == EAGAIN)
+ if (errno == EAGAIN || errno == EINTR)
continue;
td_verror(td, errno, "io_uring_enter");
break;
io_u_mark_submit(td, ret);
continue;
} else {
- if (errno == EAGAIN) {
+ if (errno == EAGAIN || errno == EINTR) {
ret = fio_ioring_cqring_reap(td, 0, ld->queued);
if (ret)
continue;
return 1;
}
+ printf("files=%d\n", o->registerfiles);
if (o->registerfiles) {
err = fio_ioring_register_files(td);
if (err) {
struct ioring_data *ld = td->io_ops_data;
struct ioring_options *o = td->eo;
- if (!o->registerfiles)
+ if (!ld || !o->registerfiles)
return generic_open_file(td, f);
f->fd = ld->fds[f->engine_pos];
static int fio_ioring_close_file(struct thread_data *td, struct fio_file *f)
{
+ struct ioring_data *ld = td->io_ops_data;
struct ioring_options *o = td->eo;
- if (!o->registerfiles)
+ if (!ld || !o->registerfiles)
return generic_close_file(td, f);
f->fd = -1;