X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=blkrawverify.c;h=ed5d258da438dc1b3b9c5242ae7b404079563932;hb=2cf87e6092da7b36d5ef10c830ddf12d9e18121d;hp=ca827072c8b854699d4da99d53c79dcd3fb8836d;hpb=05831aca666fabcc3464129c1e334bfecf0ceb5f;p=blktrace.git diff --git a/blkrawverify.c b/blkrawverify.c index ca82707..ed5d258 100644 --- a/blkrawverify.c +++ b/blkrawverify.c @@ -39,14 +39,18 @@ 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 ), TRACE_TO_STRING( BLK_TC_ISSUE ), TRACE_TO_STRING( BLK_TC_COMPLETE ), TRACE_TO_STRING( BLK_TC_FS ), - TRACE_TO_STRING( BLK_TC_PC ) + 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)) @@ -83,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)) { @@ -169,6 +173,11 @@ static int process(FILE **fp, char *devname, char *file, unsigned int cpu) ofp = *fp; while ((n = fread(bit, sizeof(struct blk_io_trace), 1, ifp)) == 1) { + if (ferror(ifp)) { + clearerr(ifp); + perror("fread"); + break; + } if (data_is_native == -1) check_data_endianness(bit->magic); @@ -192,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); @@ -269,7 +279,7 @@ int main(int argc, char *argv[]) { 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); @@ -288,12 +298,20 @@ 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) + if (nbad) { printf("-- %d bad", nbad); + rval = 1; + } printf("\n"); } if (ofp) { @@ -302,5 +320,5 @@ int main(int argc, char *argv[]) } } - return 0; + return rval; }