#include "rbtree.h"
#include "jhash.h"
-static char blkparse_version[] = "0.99.2";
+static char blkparse_version[] = "0.99.3";
struct skip_info {
unsigned long start, end;
{
if (rw) {
ios->mwrites++;
- ios->qwrite_kb += t_kb(t);
+ ios->mwrite_kb += t_kb(t);
} else {
ios->mreads++;
- ios->qread_kb += t_kb(t);
+ ios->mread_kb += t_kb(t);
}
}
fprintf(ofp, " Reads Queued: %s, %siB\t", size_cnv(x, ios->qreads, 0), size_cnv(y, ios->qread_kb, 1));
fprintf(ofp, " Writes Queued: %s, %siB\n", size_cnv(x, ios->qwrites, 0), size_cnv(y, ios->qwrite_kb, 1));
-
fprintf(ofp, " Read Dispatches: %s, %siB\t", size_cnv(x, ios->ireads, 0), size_cnv(y, ios->iread_kb, 1));
fprintf(ofp, " Write Dispatches: %s, %siB\n", size_cnv(x, ios->iwrites, 0), size_cnv(y, ios->iwrite_kb, 1));
fprintf(ofp, " Reads Requeued: %s\t\t", size_cnv(x, ios->rrqueue, 0));
fprintf(ofp, " Writes Requeued: %s\n", size_cnv(x, ios->wrqueue, 0));
fprintf(ofp, " Reads Completed: %s, %siB\t", size_cnv(x, ios->creads, 0), size_cnv(y, ios->cread_kb, 1));
fprintf(ofp, " Writes Completed: %s, %siB\n", size_cnv(x, ios->cwrites, 0), size_cnv(y, ios->cwrite_kb, 1));
- fprintf(ofp, " Read Merges: %'8lu%8c\t", ios->mreads, ' ');
- fprintf(ofp, " Write Merges: %'8lu\n", ios->mwrites);
+ fprintf(ofp, " Read Merges: %s, %siB\t", size_cnv(x, ios->mreads, 0), size_cnv(y, ios->mread_kb, 1));
+ fprintf(ofp, " Write Merges: %s, %siB\n", size_cnv(x, ios->mwrites, 0), size_cnv(y, ios->mwrite_kb, 1));
if (pdi) {
fprintf(ofp, " Read depth: %'8u%8c\t", pdi->max_depth[0], ' ');
fprintf(ofp, " Write depth: %'8u\n", pdi->max_depth[1]);
total.cwrite_kb += ios->cwrite_kb;
total.iread_kb += ios->iread_kb;
total.iwrite_kb += ios->iwrite_kb;
+ total.mread_kb += ios->mread_kb;
+ total.mwrite_kb += ios->mwrite_kb;
total.timer_unplugs += ios->timer_unplugs;
total.io_unplugs += ios->io_unplugs;
1, &pci->fdblock);
if (ret) {
free(ptr);
+ bit = NULL;
goto err;
}
return 1;
}
+/*
+ * Check if we need to sanitize the name. We allow 'foo', or if foo.blktrace.X
+ * is given, then strip back down to 'foo' to avoid missing files.
+ */
+static int name_fixup(char *name)
+{
+ char *b;
+
+ if (!name)
+ return 1;
+
+ b = strstr(name, ".blktrace.");
+ if (b)
+ *b = '\0';
+
+ return 0;
+}
+
static int do_file(void)
{
- int i, cpu;
+ int i, cpu, ret;
struct per_dev_info *pdi;
/*
*/
for (i = 0; i < ndevices; i++) {
pdi = &devices[i];
+ ret = name_fixup(pdi->name);
+ if (ret)
+ return ret;
+
for (cpu = 0; setup_file(pdi, cpu); cpu++)
;
}
while (optind < argc) {
if (is_pipe(argv[optind]) && !pipeline) {
pipeline = 1;
- pipename = strdup(optarg);
+ pipename = strdup(argv[optind]);
} else if (resize_devices(argv[optind]) != 0)
return 1;
optind++;