+ ts = &threadstats[j];
+
+ members++;
+
+ if (!ts->groupid) {
+ ts->name = td->name;
+ ts->description = td->description;
+ ts->error = td->error;
+ ts->groupid = td->groupid;
+ ts->pid = td->pid;
+ ts->verror = td->verror;
+ }
+
+ sum_stat(ts->clat_stat, td->ts.clat_stat, members);
+ sum_stat(ts->slat_stat, td->ts.slat_stat, members);
+ sum_stat(ts->bw_stat, td->ts.bw_stat, members);
+
+ ts->stat_io_bytes[0] += td->ts.stat_io_bytes[0];
+ ts->stat_io_bytes[1] += td->ts.stat_io_bytes[1];
+
+ ts->usr_time += td->ts.usr_time;
+ ts->sys_time += td->ts.sys_time;
+ ts->ctx += td->ts.ctx;
+
+ for (k = 0; k < FIO_IO_U_MAP_NR; k++)
+ ts->io_u_map[k] += td->ts.io_u_map[k];
+ for (k = 0; k < FIO_IO_U_LAT_NR; k++)
+ ts->io_u_lat[k] += td->ts.io_u_lat[k];
+
+ ts->total_io_u += td->ts.total_io_u;
+ ts->io_bytes[0] += td->ts.io_bytes[0];
+ ts->io_bytes[1] += td->ts.io_bytes[1];
+
+ if (ts->runtime[0] < td->ts.runtime[0])
+ ts->runtime[0] = td->ts.runtime[0];
+ if (ts->runtime[1] < td->ts.runtime[1])
+ ts->runtime[1] = td->ts.runtime[1];
+
+ ts->total_run_time += td->ts.total_run_time;
+
+ if (!td->group_reporting) {
+ members = 0;
+ j++;
+ continue;
+ }
+ if (last_ts == td->groupid)
+ continue;
+
+ if (last_ts != -1) {
+ members = 0;
+ j++;
+ }
+
+ last_ts = td->groupid;
+ }
+
+ for (i = 0; i < nr_ts; i++) {