Merge branch 'fio-c++-engine' of https://github.com/tchaikov/fio
[fio.git] / ioengines.c
index a8ec79de473bf235424e9fac80996c112a744364..bce65ea3a68c2b3887af924a17dffaafd512e483 100644 (file)
@@ -276,11 +276,11 @@ out:
        return r;
 }
 
-int td_io_queue(struct thread_data *td, struct io_u *io_u)
+enum fio_q_status td_io_queue(struct thread_data *td, struct io_u *io_u)
 {
        const enum fio_ddir ddir = acct_ddir(io_u);
-       unsigned long buflen = io_u->xfer_buflen;
-       int ret;
+       unsigned long long buflen = io_u->xfer_buflen;
+       enum fio_q_status ret;
 
        dprint_io_u(io_u, "queue");
        fio_ro_check(td, io_u);
@@ -361,18 +361,13 @@ int td_io_queue(struct thread_data *td, struct io_u *io_u)
                        td->ts.total_io_u[io_u->ddir]++;
                }
        } else if (ret == FIO_Q_QUEUED) {
-               int r;
-
                td->io_u_queued++;
 
                if (ddir_rw(io_u->ddir) || ddir_sync(io_u->ddir))
                        td->ts.total_io_u[io_u->ddir]++;
 
-               if (td->io_u_queued >= td->o.iodepth_batch) {
-                       r = td_io_commit(td);
-                       if (r < 0)
-                               return r;
-               }
+               if (td->io_u_queued >= td->o.iodepth_batch)
+                       td_io_commit(td);
        }
 
        if (!td_ioengine_flagged(td, FIO_SYNCIO)) {
@@ -410,14 +405,14 @@ int td_io_init(struct thread_data *td)
        return ret;
 }
 
-int td_io_commit(struct thread_data *td)
+void td_io_commit(struct thread_data *td)
 {
        int ret;
 
        dprint(FD_IO, "calling ->commit(), depth %d\n", td->cur_depth);
 
        if (!td->cur_depth || !td->io_u_queued)
-               return 0;
+               return;
 
        io_u_mark_depth(td, td->io_u_queued);
 
@@ -432,8 +427,6 @@ int td_io_commit(struct thread_data *td)
         */
        td->io_u_in_flight += td->io_u_queued;
        td->io_u_queued = 0;
-
-       return 0;
 }
 
 int td_io_open_file(struct thread_data *td, struct fio_file *f)
@@ -581,6 +574,7 @@ int td_io_get_file_size(struct thread_data *td, struct fio_file *f)
 int fio_show_ioengine_help(const char *engine)
 {
        struct flist_head *entry;
+       struct thread_data td;
        struct ioengine_ops *io_ops;
        char *sep;
        int ret = 1;
@@ -599,7 +593,10 @@ int fio_show_ioengine_help(const char *engine)
                sep++;
        }
 
-       io_ops = __load_ioengine(engine);
+       memset(&td, 0, sizeof(struct thread_data));
+       td.o.ioengine = (char *)engine;
+       io_ops = load_ioengine(&td);
+
        if (!io_ops) {
                log_info("IO engine %s not found\n", engine);
                return 1;
@@ -610,5 +607,6 @@ int fio_show_ioengine_help(const char *engine)
        else
                log_info("IO engine %s has no options\n", io_ops->name);
 
+       free_ioengine(&td);
        return ret;
 }