iowatcher: wrap system() in a checker function
[blktrace.git] / blkrawverify.c
index 984dbffcddf66bc191154360fc323f4f2efaadec..ed5d258da438dc1b3b9c5242ae7b404079563932 100644 (file)
@@ -39,7 +39,7 @@ int data_is_native = -1;
 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 ),
@@ -50,6 +50,7 @@ static struct trace_info traces[] = {
        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))
 
@@ -86,7 +87,7 @@ static char *act_to_str(__u32 action)
        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)) {
@@ -200,6 +201,7 @@ static int process(FILE **fp, char *devname, char *file, unsigned int cpu)
                        if (n == 0) {
                                INC_BAD("bad pdu");
                                nbad_seq++;
+                               free(pdu_buf);
                                break;
                        }
                        free(pdu_buf);
@@ -296,8 +298,14 @@ int main(int argc, char *argv[])
                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) {