pdi = &devices[ndevices - 1];
pdi->id = id;
- pdi->last_sequence = 0;
+ pdi->last_sequence = -1;
pdi->last_read_time = 0;
memset(&pdi->rb_last, 0, sizeof(pdi->rb_last));
pdi->rb_last_entries = 0;
if (!genesis_time)
find_genesis();
- *youngest = -1ULL;
+ *youngest = 0;
while ((t = trace_list) != NULL) {
struct blk_io_trace *bit = t->bit;
trace_list = t->next;
- if (verify_trace(bit))
- continue;
-
bit->time -= genesis_time;
+ if (bit->time < *youngest || !*youngest)
+ *youngest = bit->time;
+
if (check_stopwatch(bit)) {
bit_free(bit);
t_free(t);
if (trace_rb_insert_sort(t))
return -1;
-
- if (bit->time < *youngest)
- *youngest = bit->time;
}
return 0;
{
unsigned long expected_sequence = pdi->last_sequence + 1;
struct trace *t;
+
+ /*
+ * first entry, always ok
+ */
+ if (!expected_sequence)
+ return 0;
if (bit->sequence == expected_sequence)
return 0;
break;
}
- if (bit->cpu > pdi->ncpus) {
- fprintf(stderr, "Unknown CPU ID? (%d, device %d,%d)\n",
- bit->cpu, MAJOR(bit->device),
- MINOR(bit->device));
- break;
- }
-
if (check_sequence(pdi, bit, force))
break;
bit = ptr;
}
+ trace_to_cpu(bit);
+
+ if (verify_trace(bit)) {
+ bit_free(bit);
+ continue;
+ }
+
t = t_alloc();
memset(t, 0, sizeof(*t));
t->bit = bit;
- trace_to_cpu(bit);
-
t->next = trace_list;
trace_list = t;
for (i = 0; i < ndevices; i++) {
pdi = &devices[i];
pdi->nfiles = 0;
- pdi->last_sequence = 0;
+ pdi->last_sequence = -1;
for (j = 0;; j++) {
struct stat st;