From cb21168269d746d80d82f28ed4db65c2750a8fd7 Mon Sep 17 00:00:00 2001 From: Jens Axboe Date: Fri, 3 Jul 2009 08:38:50 +0200 Subject: [PATCH 1/1] Add warning about potentially missing O_DIRECT support or bad alignment If the first O_DIRECT fails, then it's likely because: 1) The file system does not support O_DIRECT, or 2) The user set iomem_align to an unsupported value. Let the user know, otherwise they only see EINVAL and may not realize why things aren't working. Signed-off-by: Jens Axboe --- ioengines.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/ioengines.c b/ioengines.c index 4c97d038..7f0a5c45 100644 --- a/ioengines.c +++ b/ioengines.c @@ -245,6 +245,18 @@ int td_io_queue(struct thread_data *td, struct io_u *io_u) unlock_file(td, io_u->file); + /* + * Add warning for O_DIRECT so that users have an easier time + * spotting potentially bad alignment. If this triggers for the first + * IO, then it's likely an alignment problem or because the host fs + * does not support O_DIRECT + */ + if (io_u->error == EINVAL && td->io_issues[io_u->ddir] == 1 && + td->o.odirect) { + log_info("fio: first direct IO errored. File system may not " + "support direct IO, or iomem_align= is bad.\n"); + } + if (!td->io_ops->commit) { io_u_mark_submit(td, 1); io_u_mark_complete(td, 1); -- 2.25.1