static void shutdown_worker(struct submit_worker *sw, unsigned int *sum_cnt) { struct thread_data *parent = sw->wq->td; pthread_join(sw->thread, NULL); (*sum_cnt)++; sum_thread_stats(&parent->ts, &sw->td.ts, *sum_cnt); free_worker(sw); }
static void io_workqueue_exit_worker_fn(struct submit_worker *sw, unsigned int *sum_cnt) { struct thread_data *td = sw->priv; (*sum_cnt)++; sum_thread_stats(&sw->wq->td->ts, &td->ts, *sum_cnt == 1); fio_options_free(td); close_and_free_files(td); if (td->io_ops) close_ioengine(td); td_set_runstate(td, TD_EXITED); }
static void gfio_thread_status_op(struct fio_client *client, struct fio_net_cmd *cmd) { struct cmd_ts_pdu *p = (struct cmd_ts_pdu *) cmd->payload; gfio_display_ts(client, &p->ts, &p->rs); if (sum_stat_clients == 1) return; sum_thread_stats(&client_ts, &p->ts, sum_stat_nr); sum_group_stats(&client_gs, &p->rs); client_ts.members++; client_ts.thread_number = p->ts.thread_number; client_ts.groupid = p->ts.groupid; if (++sum_stat_nr == sum_stat_clients) { strcpy(client_ts.name, "All clients"); gfio_display_ts(client, &client_ts, &client_gs); } }