blktrace replay: delay support
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
diff --git a/blktrace.c b/blktrace.c
index 1669fe5..5793773 100644
--- a/blktrace.c
+++ b/blktrace.c
@@ -110,9 +110,10 @@
*/
int load_blktrace(struct thread_data *td, const char *filename)
{
- unsigned long long ttime;
+ unsigned long long ttime, delay;
struct blk_io_trace t;
unsigned long ios[2];
+ unsigned int cpu;
int fd;
fd = open(filename, O_RDONLY);
@@ -125,6 +126,7 @@
ios[0] = ios[1] = 0;
ttime = 0;
+ cpu = 0;
do {
/*
* Once this is working fully, I'll add a layer between
@@ -157,10 +159,16 @@
td_verror(td, ret, "blktrace lseek");
goto err;
}
- if (!ttime)
+ if (!ttime) {
ttime = t.time;
- handle_trace(td, &t, t.time - ttime, ios);
+ cpu = t.cpu;
+ }
+ delay = 0;
+ if (cpu == t.cpu)
+ delay = t.time - ttime;
+ handle_trace(td, &t, delay, ios);
ttime = t.time;
+ cpu = t.cpu;
} while (1);
close(fd);