static int str_steadystate_cb(void *data, const char *str)
{
- struct thread_data *td = data;
+ struct thread_data *td = cb_data_to_td(data);
double val;
char *nr;
char *pct;
long long ll;
- if (td->o.ss != FIO_STEADYSTATE_IOPS &&
- td->o.ss != FIO_STEADYSTATE_IOPS_SLOPE &&
- td->o.ss != FIO_STEADYSTATE_BW &&
- td->o.ss != FIO_STEADYSTATE_BW_SLOPE) {
+ if (td->o.ss_state != FIO_SS_IOPS && td->o.ss_state != FIO_SS_IOPS_SLOPE &&
+ td->o.ss_state != FIO_SS_BW && td->o.ss_state != FIO_SS_BW_SLOPE) {
/* should be impossible to get here */
log_err("fio: unknown steady state criterion\n");
return 1;
if (parse_dryrun())
return 0;
- td->o.ss_pct = true;
+ td->o.ss_state |= __FIO_SS_PCT;
td->o.ss_limit.u.f = val;
-
-
- } else if (td->o.ss == FIO_STEADYSTATE_IOPS ||
- td->o.ss == FIO_STEADYSTATE_IOPS_SLOPE) {
+ } else if (td->o.ss_state & __FIO_SS_IOPS) {
if (!str_to_float(nr, &val, 0)) {
log_err("fio: steadystate IOPS threshold postfix parsing failed\n");
free(nr);
if (parse_dryrun())
return 0;
- td->o.ss_pct = false;
td->o.ss_limit.u.f = val;
-
} else { /* bandwidth criterion */
if (str_to_decimal(nr, &ll, 1, td, 0, 0)) {
log_err("fio: steadystate BW threshold postfix parsing failed\n");
if (parse_dryrun())
return 0;
- td->o.ss_pct = false;
td->o.ss_limit.u.f = (double) ll;
-
}
+ td->ss.state = td->o.ss_state;
return 0;
}
.lname = "Steady state threshold",
.alias = "ss",
.type = FIO_OPT_STR,
- .off1 = offsetof(struct thread_options, ss),
+ .off1 = offsetof(struct thread_options, ss_state),
.cb = str_steadystate_cb,
.help = "Define the criterion and limit to judge when a job has reached steady state",
.def = "iops_slope:0.01%",
.posval = {
{ .ival = "iops",
- .oval = FIO_STEADYSTATE_IOPS,
+ .oval = FIO_SS_IOPS,
.help = "maximum mean deviation of IOPS measurements",
},
{ .ival = "iops_slope",
- .oval = FIO_STEADYSTATE_IOPS_SLOPE,
+ .oval = FIO_SS_IOPS_SLOPE,
.help = "slope calculated from IOPS measurements",
},
{ .ival = "bw",
- .oval = FIO_STEADYSTATE_BW,
+ .oval = FIO_SS_BW,
.help = "maximum mean deviation of bandwidth measurements",
},
{
.ival = "bw_slope",
- .oval = FIO_STEADYSTATE_BW_SLOPE,
+ .oval = FIO_SS_BW_SLOPE,
.help = "slope calculated from bandwidth measurements",
},
},