Merge branch 'logging'
[fio.git] / rate-submit.c
index a1d55916c0dd7b4fe716826865d7681197834aeb..92cb6222cd0512e00dea844b7762e7c0c7250390 100644 (file)
@@ -1,6 +1,13 @@
+/*
+ * Rated submission helpers
+ *
+ * Copyright (C) 2015 Jens Axboe <axboe@kernel.dk>
+ *
+ */
 #include "fio.h"
 #include "ioengine.h"
 #include "lib/getrusage.h"
+#include "rate-submit.h"
 
 static int io_workqueue_fn(struct submit_worker *sw,
                           struct workqueue_work *work)
@@ -218,7 +225,7 @@ static void io_workqueue_update_acct_fn(struct submit_worker *sw)
 
 }
 
-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,
@@ -228,3 +235,19 @@ struct workqueue_ops rated_wq_ops = {
        .init_worker_fn         = io_workqueue_init_worker_fn,
        .exit_worker_fn         = io_workqueue_exit_worker_fn,
 };
+
+int rate_submit_init(struct thread_data *td, struct sk_out *sk_out)
+{
+       if (td->o.io_submit_mode != IO_MODE_OFFLOAD)
+               return 0;
+
+       return workqueue_init(td, &td->io_wq, &rated_wq_ops, td->o.iodepth, sk_out);
+}
+
+void rate_submit_exit(struct thread_data *td)
+{
+       if (td->o.io_submit_mode != IO_MODE_OFFLOAD)
+               return;
+
+       workqueue_exit(&td->io_wq);
+}