t/zbd: Reset all zones before test when max open zones is specified
[fio.git] / ioengines.c
index 78262bc1a3c70484701345e524f17fb06e60870e..476df58da7c1239c6cf8a60546f77a7dcdc56aad 100644 (file)
@@ -79,10 +79,16 @@ static struct ioengine_ops *find_ioengine(const char *name)
 static void *dlopen_external(struct thread_data *td, const char *engine)
 {
        char engine_path[PATH_MAX];
+       void *dlhandle;
 
        sprintf(engine_path, "%s/lib%s.so", FIO_EXT_ENG_DIR, engine);
 
-       return dlopen(engine_path, RTLD_LAZY);
+       dlhandle = dlopen(engine_path, RTLD_LAZY);
+       if (!dlhandle)
+               log_info("Engine %s not found; Either name is invalid, was not built, or fio-engine-%s package is missing.\n",
+                        engine, engine);
+
+       return dlhandle;
 }
 #else
 #define dlopen_external(td, engine) (NULL)
@@ -307,8 +313,10 @@ enum fio_q_status td_io_queue(struct thread_data *td, struct io_u *io_u)
         * started the overlap check because the IO_U_F_FLIGHT
         * flag is now set
         */
-       if (td_offload_overlap(td))
-               pthread_mutex_unlock(&overlap_check);
+       if (td_offload_overlap(td)) {
+               int res = pthread_mutex_unlock(&overlap_check);
+               assert(res == 0);
+       }
 
        assert(fio_file_open(io_u->file));
 
@@ -344,7 +352,7 @@ enum fio_q_status td_io_queue(struct thread_data *td, struct io_u *io_u)
        }
 
        ret = td->io_ops->queue(td, io_u);
-       zbd_queue_io_u(io_u, ret);
+       zbd_queue_io_u(td, io_u, ret);
 
        unlock_file(td, io_u->file);
 
@@ -386,7 +394,7 @@ enum fio_q_status td_io_queue(struct thread_data *td, struct io_u *io_u)
        if (!td->io_ops->commit) {
                io_u_mark_submit(td, 1);
                io_u_mark_complete(td, 1);
-               zbd_put_io_u(io_u);
+               zbd_put_io_u(td, io_u);
        }
 
        if (ret == FIO_Q_COMPLETED) {