t/fiotestlib: pass command-line options to FioJobFileTest
[fio.git] / ioengines.c
index 361727250eb70ff0932e899d8f31e98ddeaecba6..5dd4355d29467f1156c71014323f4160987032e3 100644 (file)
@@ -413,7 +413,7 @@ enum fio_q_status td_io_queue(struct thread_data *td, struct io_u *io_u)
        if (io_u->error == EINVAL && td->io_issues[io_u->ddir & 1] == 1 &&
            td->o.odirect) {
 
-               log_info("fio: first direct IO errored. File system may not "
+               log_err("fio: first direct IO errored. File system may not "
                         "support direct IO, or iomem_align= is bad, or "
                         "invalid block size. Try setting direct=0.\n");
        }
@@ -421,7 +421,7 @@ enum fio_q_status td_io_queue(struct thread_data *td, struct io_u *io_u)
        if (zbd_unaligned_write(io_u->error) &&
            td->io_issues[io_u->ddir & 1] == 1 &&
            td->o.zone_mode != ZONE_MODE_ZBD) {
-               log_info("fio: first I/O failed. If %s is a zoned block device, consider --zonemode=zbd\n",
+               log_err("fio: first I/O failed. If %s is a zoned block device, consider --zonemode=zbd\n",
                         io_u->file->file_name);
        }
 
@@ -590,19 +590,21 @@ int td_io_open_file(struct thread_data *td, struct fio_file *f)
        if (fio_option_is_set(&td->o, write_hint) &&
            (f->filetype == FIO_TYPE_BLOCK || f->filetype == FIO_TYPE_FILE)) {
                uint64_t hint = td->o.write_hint;
-               int cmd;
+               int res;
 
                /*
-                * For direct IO, we just need/want to set the hint on
-                * the file descriptor. For buffered IO, we need to set
-                * it on the inode.
+                * For direct IO, set the hint on the file descriptor if that is
+                * supported. Otherwise set it on the inode. For buffered IO, we
+                * need to set it on the inode.
                 */
-               if (td->o.odirect)
-                       cmd = F_SET_FILE_RW_HINT;
-               else
-                       cmd = F_SET_RW_HINT;
-
-               if (fcntl(f->fd, cmd, &hint) < 0) {
+               if (td->o.odirect) {
+                       res = fcntl(f->fd, F_SET_FILE_RW_HINT, &hint);
+                       if (res < 0)
+                               res = fcntl(f->fd, F_SET_RW_HINT, &hint);
+               } else {
+                       res = fcntl(f->fd, F_SET_RW_HINT, &hint);
+               }
+               if (res < 0) {
                        td_verror(td, errno, "fcntl write hint");
                        goto err;
                }