static struct trace_info traces[] = {
TRACE_TO_STRING( BLK_TC_READ ),
TRACE_TO_STRING( BLK_TC_WRITE ),
- TRACE_TO_STRING( BLK_TC_BARRIER ),
+ TRACE_TO_STRING( BLK_TC_FLUSH ),
TRACE_TO_STRING( BLK_TC_SYNC ),
TRACE_TO_STRING( BLK_TC_QUEUE ),
TRACE_TO_STRING( BLK_TC_REQUEUE ),
TRACE_TO_STRING( BLK_TC_FS ),
TRACE_TO_STRING( BLK_TC_PC ),
TRACE_TO_STRING( BLK_TC_AHEAD ),
+ TRACE_TO_STRING( BLK_TC_META ),
+ TRACE_TO_STRING( BLK_TC_DISCARD ),
+ TRACE_TO_STRING( BLK_TC_FUA ),
};
#define N_TRACES (sizeof(traces) / sizeof(struct trace_info))
unsigned int act = action & 0xffff;
unsigned int trace = (action >> BLK_TC_SHIFT) & 0xffff;
- if (act <= N_ACTS) {
+ if (act < N_ACTS) {
sprintf(buf, "%s ", acts[act].string);
for (i = 0; i < N_TRACES; i++)
if (trace & (1 << i)) {
if (n == 0) {
INC_BAD("bad pdu");
nbad_seq++;
+ free(pdu_buf);
break;
}
free(pdu_buf);
{
char *devname;
struct stat st;
- int i, cpu, nbad;
+ int i, cpu, nbad, rval = 0;
FILE *ofp;
char *ofname = malloc(1024);
char *fname = malloc(1024);
printf("Verifying %s\n", devname); fflush(stdout);
for (cpu = 0; ; cpu++) {
sprintf(fname, "%s.blktrace.%d", devname, cpu);
- if (stat(fname, &st) < 0)
+ if (stat(fname, &st) < 0) {
+ if (cpu == 0) {
+ fprintf(stderr, "No tracefiles found for %s\n",
+ devname);
+ rval = 1;
+ }
break;
+ }
printf(" CPU %d ", cpu); fflush(stdout);
nbad = process(&ofp, devname, fname, cpu);
- if (nbad)
+ if (nbad) {
printf("-- %d bad", nbad);
+ rval = 1;
+ }
printf("\n");
}
if (ofp) {
}
}
- return 0;
+ return rval;
}