workqueue: remove knowledge of io issue (and others) stats
authorJens Axboe <axboe@fb.com>
Tue, 8 Dec 2015 05:09:24 +0000 (22:09 -0700)
committerJens Axboe <axboe@fb.com>
Tue, 8 Dec 2015 05:09:24 +0000 (22:09 -0700)
This doesn't belong in the workqueue code, let the caller deal with
it instead.

Signed-off-by: Jens Axboe <axboe@fb.com>
backend.c
workqueue.c

index 10622efe5579d25ef029a2053a5206aad1311f6d..63d47a29bb63a5ddad78fe8618590db2db499145 100644 (file)
--- a/backend.c
+++ b/backend.c
@@ -928,10 +928,20 @@ static uint64_t do_io(struct thread_data *td)
                        log_io_piece(td, io_u);
 
                if (td->o.io_submit_mode == IO_MODE_OFFLOAD) {
                        log_io_piece(td, io_u);
 
                if (td->o.io_submit_mode == IO_MODE_OFFLOAD) {
+                       const unsigned long blen = io_u->xfer_buflen;
+                       const enum fio_ddir ddir = acct_ddir(io_u);
+
                        if (td->error)
                                break;
                        if (td->error)
                                break;
+
                        ret = workqueue_enqueue(&td->io_wq, io_u);
 
                        ret = workqueue_enqueue(&td->io_wq, io_u);
 
+                       if (ret == FIO_Q_QUEUED && ddir_rw(ddir)) {
+                               td->io_issues[ddir]++;
+                               td->io_issue_bytes[ddir] += blen;
+                               td->rate_io_issue_bytes[ddir] += blen;
+                       }
+
                        if (should_check_rate(td))
                                td->rate_next_io_time[ddir] = usec_for_io(td, ddir);
 
                        if (should_check_rate(td))
                                td->rate_next_io_time[ddir] = usec_for_io(td, ddir);
 
index 8d43b090229c1eabda627bdc2b87f91beb3b2873..5265a001a621c88cd4469f324481a114d4841e98 100644 (file)
@@ -118,15 +118,6 @@ int workqueue_enqueue(struct workqueue *wq, struct io_u *io_u)
 
        sw = get_submit_worker(wq);
        if (sw) {
 
        sw = get_submit_worker(wq);
        if (sw) {
-               const enum fio_ddir ddir = acct_ddir(io_u);
-               struct thread_data *parent = wq->td;
-
-               if (ddir_rw(ddir)) {
-                       parent->io_issues[ddir]++;
-                       parent->io_issue_bytes[ddir] += io_u->xfer_buflen;
-                       parent->rate_io_issue_bytes[ddir] += io_u->xfer_buflen;
-               }
-
                pthread_mutex_lock(&sw->lock);
                flist_add_tail(&io_u->verify_list, &sw->work_list);
                sw->seq = ++wq->work_seq;
                pthread_mutex_lock(&sw->lock);
                flist_add_tail(&io_u->verify_list, &sw->work_list);
                sw->seq = ++wq->work_seq;