json_object_add_value_string(tmp, "ss", ss_buf);
json_object_add_value_int(tmp, "duration", (int)ss->dur);
json_object_add_value_int(tmp, "steadystate_ramptime", ss->ramp_time / 1000000L);
- json_object_add_value_int(tmp, "attained", ss->attained);
+ json_object_add_value_int(tmp, "attained", ss->mode & __FIO_SS_ATTAINED);
snprintf(ss_buf, sizeof(ss_buf), "%f%s", (float) ss->criterion, ss->pct ? "%" : "");
json_object_add_value_string(tmp, "criterion", ss_buf);
** otherwise it actually points to the second element
** in the list
*/
- if (ss->attained || ss->sum_y == 0)
+ if ((ss->mode & __FIO_SS_ATTAINED) || ss->sum_y == 0)
j = ss->head;
else
j = ss->head == 0 ? ss->dur - 1 : ss->head - 1;
struct steadystate_data *ss = &td->ss;
if (!ss->dur || td->runstate <= TD_SETTING_UP ||
- td->runstate >= TD_EXITED || ss->attained)
+ td->runstate >= TD_EXITED || (ss->mode & __FIO_SS_ATTAINED))
continue;
td_iops = 0;
if (td->o.group_reporting) {
for_each_td(td2, j) {
if (td2->groupid == td->groupid) {
- td2->ss.attained = 1;
+ td2->ss.mode |= __FIO_SS_ATTAINED;
fio_mark_td_terminate(td2);
}
}
} else {
- ss->attained = 1;
+ ss->mode |= __FIO_SS_ATTAINED;
fio_mark_td_terminate(td);
}
}
bool pct;
unsigned int mode;
- int attained;
int last_in_group;
int ramp_time_over;
};
enum {
- __FIO_SS_IOPS = 1,
- __FIO_SS_BW = 2,
- __FIO_SS_SLOPE = 4,
+ __FIO_SS_IOPS = 1,
+ __FIO_SS_BW = 2,
+ __FIO_SS_SLOPE = 4,
+ __FIO_SS_ATTAINED = 8,
FIO_SS_IOPS = __FIO_SS_IOPS,
FIO_SS_IOPS_SLOPE = __FIO_SS_IOPS | __FIO_SS_SLOPE,