summaryrefslogtreecommitdiff
path: root/ioengines.c
diff options
context:
space:
mode:
authorJens Axboe <jens.axboe@oracle.com>2009-07-03 08:38:50 +0200
committerJens Axboe <jens.axboe@oracle.com>2009-07-03 08:38:50 +0200
commitcb21168269d746d80d82f28ed4db65c2750a8fd7 (patch)
treed70c0ce50c59d22bf5e7d0320c9c7ad37024d439 /ioengines.c
parent8b5f73134cfaab8e3f72bea4166e57c59c635b69 (diff)
downloadfio-cb21168269d746d80d82f28ed4db65c2750a8fd7.tar.gz
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 <jens.axboe@oracle.com>
Diffstat (limited to 'ioengines.c')
-rw-r--r--ioengines.c12
1 files changed, 12 insertions, 0 deletions
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);