fio_verify_init(td);
- if ((o->io_submit_mode == IO_MODE_OFFLOAD) &&
- workqueue_init(td, &td->io_wq, &rated_wq_ops, td->o.iodepth))
+ if (rate_submit_init(td))
goto err;
fio_gettime(&td->epoch, NULL);
fio_writeout_logs(td);
- if (o->io_submit_mode == IO_MODE_OFFLOAD)
- workqueue_exit(&td->io_wq);
-
iolog_compress_exit(td);
+ rate_submit_exit(td);
if (o->exec_postrun)
exec_string(o, o->exec_postrun, (const char *)"postrun");
}
-struct workqueue_ops rated_wq_ops = {
+static struct workqueue_ops rated_wq_ops = {
.fn = io_workqueue_fn,
.pre_sleep_flush_fn = io_workqueue_pre_sleep_flush_fn,
.pre_sleep_fn = io_workqueue_pre_sleep_fn,
.init_worker_fn = io_workqueue_init_worker_fn,
.exit_worker_fn = io_workqueue_exit_worker_fn,
};
+
+int rate_submit_init(struct thread_data *td)
+{
+ if (td->o.io_submit_mode != IO_MODE_OFFLOAD)
+ return 0;
+
+ return workqueue_init(td, &td->io_wq, &rated_wq_ops, td->o.iodepth);
+}
+
+void rate_submit_exit(struct thread_data *td)
+{
+ if (td->o.io_submit_mode != IO_MODE_OFFLOAD)
+ return;
+
+ workqueue_exit(&td->io_wq);
+}
#ifndef FIO_RATE_SUBMIT
#define FIO_RATE_SUBMIT
-#include "workqueue.h"
-
-extern struct workqueue_ops rated_wq_ops;
+int rate_submit_init(struct thread_data *);
+void rate_submit_exit(struct thread_data *);
#endif