X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=rate-submit.c;h=268356d17a1f1b35a6eaa0ad82219db86177a4de;hb=0574e8c3b2b47e1e2564c2f50ea0b6f2629f2e48;hp=b7b703722bbb102c84e0dbfd1fed7be0b35727e5;hpb=fa443634fbfa38fd5d6418a96a45022c78b90df4;p=fio.git diff --git a/rate-submit.c b/rate-submit.c index b7b70372..268356d1 100644 --- a/rate-submit.c +++ b/rate-submit.c @@ -97,8 +97,11 @@ static int io_workqueue_fn(struct submit_worker *sw, td->cur_depth -= ret; } - if (error || td->error) + if (error || td->error) { + pthread_mutex_lock(&td->io_u_lock); pthread_cond_signal(&td->parent->free_cond); + pthread_mutex_unlock(&td->io_u_lock); + } return 0; } @@ -170,7 +173,7 @@ static int io_workqueue_init_worker_fn(struct submit_worker *sw) if (td->io_ops->post_init && td->io_ops->post_init(td)) goto err_io_init; - set_epoch_time(td, td->o.log_unix_epoch); + set_epoch_time(td, td->o.log_unix_epoch | td->o.log_alternate_epoch, td->o.log_alternate_epoch_clock_id); fio_getrusage(&td->ru_start); clear_io_state(td, 1); @@ -192,7 +195,16 @@ static void io_workqueue_exit_worker_fn(struct submit_worker *sw, struct thread_data *td = sw->priv; (*sum_cnt)++; - sum_thread_stats(&sw->wq->td->ts, &td->ts, *sum_cnt == 1); + + /* + * io_workqueue_update_acct_fn() doesn't support per prio stats, and + * even if it did, offload can't be used with all async IO engines. + * If group reporting is set in the parent td, the group result + * generated by __show_run_stats() can still contain multiple prios + * from different offloaded jobs. + */ + sw->wq->td->ts.disable_prio_stat = 1; + sum_thread_stats(&sw->wq->td->ts, &td->ts); fio_options_free(td); close_and_free_files(td);