#include "json.h"
#include "lib/getrusage.h"
#include "idletime.h"
+#include "lib/pow2.h"
struct fio_mutex *stat_mutex;
case BLOCK_STATE_TRIM_FAILURE:
return 2;
default:
+ /* Silence compile warning on some BSDs and have a return */
assert(0);
+ return -1;
}
}
struct group_run_stats *runstats, *rs;
struct thread_data *td;
struct thread_stat *threadstats, *ts;
- int i, j, nr_ts, last_ts, idx;
+ int i, j, k, nr_ts, last_ts, idx;
int kb_base_warned = 0;
int unit_base_warned = 0;
struct json_object *root = NULL;
ts->latency_window = td->o.latency_window;
ts->nr_block_infos = td->ts.nr_block_infos;
- for (i = 0; i < ts->nr_block_infos; i++)
- ts->block_infos[i] = td->ts.block_infos[i];
+ for (k = 0; k < ts->nr_block_infos; k++)
+ ts->block_infos[k] = td->ts.block_infos[k];
sum_thread_stats(ts, &td->ts, idx);
}
if (spent < td->o.bw_avg_time)
return;
+ td_io_u_lock(td);
+
/*
* Compute both read and write rates for the interval.
*/
}
fio_gettime(&td->bw_sample_time, NULL);
+ td_io_u_unlock(td);
}
void add_iops_sample(struct thread_data *td, enum fio_ddir ddir, unsigned int bs,
if (spent < td->o.iops_avg_time)
return;
+ td_io_u_lock(td);
+
/*
* Compute both read and write rates for the interval.
*/
}
fio_gettime(&td->iops_sample_time, NULL);
+ td_io_u_unlock(td);
}
void stat_init(void)