Merge branch 'master' into gfio
[fio.git] / ioengines.c
index bb7833f120a6c5a62ba839750c15bb2e170e8582..8b71e13449638dfec259370a57b74d1f7f1258c2 100644 (file)
@@ -104,7 +104,9 @@ static struct ioengine_ops *dlopen_ioengine(struct thread_data *td,
         * Unlike the included modules, external engines should have a
         * non-static ioengine structure that we can reference.
         */
-       ops = dlsym(dlhandle, "ioengine");
+       ops = dlsym(dlhandle, engine_lib);
+       if (!ops)
+               ops = dlsym(dlhandle, "ioengine");
        if (!ops) {
                td_vmsg(td, -1, dlerror(), "dlsym");
                dlclose(dlhandle);
@@ -234,7 +236,7 @@ int td_io_getevents(struct thread_data *td, unsigned int min, unsigned int max,
 out:
        if (r >= 0) {
                /*
-                * Reflect that our submitted requests were retrieved with
+                * Reflect that our submitted requests were retrieved with
                 * whatever OS async calls are in the underlying engine.
                 */
                td->io_u_in_flight -= r;
@@ -293,7 +295,7 @@ int td_io_queue(struct thread_data *td, struct io_u *io_u)
                         "support direct IO, or iomem_align= is bad.\n");
        }
 
-       if (!td->io_ops->commit) {
+       if (!td->io_ops->commit || ddir_trim(io_u->ddir)) {
                io_u_mark_submit(td, 1);
                io_u_mark_complete(td, 1);
        }
@@ -302,8 +304,7 @@ int td_io_queue(struct thread_data *td, struct io_u *io_u)
                if (ddir_rw(io_u->ddir)) {
                        io_u_mark_depth(td, 1);
                        td->ts.total_io_u[io_u->ddir]++;
-               } else if (io_u->ddir == DDIR_TRIM)
-                       td->ts.total_io_u[2]++;
+               }
        } else if (ret == FIO_Q_QUEUED) {
                int r;
 
@@ -360,14 +361,14 @@ int td_io_commit(struct thread_data *td)
        if (!td->cur_depth || !td->io_u_queued)
                return 0;
 
-       io_u_mark_depth(td, td->io_u_queued);   
+       io_u_mark_depth(td, td->io_u_queued);
 
        if (td->io_ops->commit) {
                ret = td->io_ops->commit(td);
                if (ret)
                        td_verror(td, -ret, "io commit");
        }
-       
+
        /*
         * Reflect that events were submitted as async IO requests.
         */
@@ -532,7 +533,7 @@ int do_io_u_trim(struct thread_data *td, struct io_u *io_u)
 
        ret = os_trim(f->fd, io_u->offset, io_u->xfer_buflen);
        if (!ret)
-               return io_u->xfer_buflen;;
+               return io_u->xfer_buflen;
 
        io_u->error = ret;
        return 0;