From 8bfe330eb42739d503d35d0b7d96f98c5c544204 Mon Sep 17 00:00:00 2001 From: Jens Axboe Date: Wed, 14 Oct 2020 20:11:56 -0600 Subject: [PATCH] Disallow offload IO mode for engines marked with FIO_NO_OFFLOAD Previous commits did this for all async engines, this can potentially break existing job files. There are only certain cases where it fails, for now at least mark io_uring as one of those. Reported-by: Jeff Furlong Signed-off-by: Jens Axboe --- engines/io_uring.c | 2 +- ioengines.c | 2 +- ioengines.h | 3 ++- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/engines/io_uring.c b/engines/io_uring.c index 69f48859..b997c8d8 100644 --- a/engines/io_uring.c +++ b/engines/io_uring.c @@ -806,7 +806,7 @@ static int fio_ioring_close_file(struct thread_data *td, struct fio_file *f) static struct ioengine_ops ioengine = { .name = "io_uring", .version = FIO_IOOPS_VERSION, - .flags = FIO_ASYNCIO_SYNC_TRIM, + .flags = FIO_ASYNCIO_SYNC_TRIM | FIO_NO_OFFLOAD, .init = fio_ioring_init, .post_init = fio_ioring_post_init, .io_u_init = fio_ioring_io_u_init, diff --git a/ioengines.c b/ioengines.c index d3be8026..3e43ef2f 100644 --- a/ioengines.c +++ b/ioengines.c @@ -45,7 +45,7 @@ static bool check_engine_ops(struct thread_data *td, struct ioengine_ops *ops) * async engines aren't reliable with offload */ if ((td->o.io_submit_mode == IO_MODE_OFFLOAD) && - !(ops->flags & FIO_FAKEIO)) { + (ops->flags & FIO_NO_OFFLOAD)) { log_err("%s: can't be used with offloaded submit. Use a sync " "engine\n", ops->name); return true; diff --git a/ioengines.h b/ioengines.h index 54dadba2..fbe52fa4 100644 --- a/ioengines.h +++ b/ioengines.h @@ -77,7 +77,8 @@ enum fio_ioengine_flags { FIO_NOSTATS = 1 << 12, /* don't do IO stats */ FIO_NOFILEHASH = 1 << 13, /* doesn't hash the files for lookup later. */ FIO_ASYNCIO_SYNC_TRIM - = 1 << 14 /* io engine has async ->queue except for trim */ + = 1 << 14, /* io engine has async ->queue except for trim */ + FIO_NO_OFFLOAD = 1 << 15, /* no async offload */ }; /* -- 2.25.1