projects
/
fio.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fix utime_since overflow
[fio.git]
/
blktrace.c
diff --git
a/blktrace.c
b/blktrace.c
index 58f28ceb664db93a4ca0e97f0405a066929d3b38..64e49f5e4b552d3d4e67dea8ca7eed5dcf6e589e 100644
(file)
--- a/
blktrace.c
+++ b/
blktrace.c
@@
-233,7
+233,7
@@
int load_blktrace(struct thread_data *td, const char *filename)
{
unsigned long long ttime, delay;
struct blk_io_trace t;
{
unsigned long long ttime, delay;
struct blk_io_trace t;
- unsigned long ios[2];
+ unsigned long ios[2]
, skipped_writes
;
unsigned int cpu;
unsigned int rw_bs[2];
struct fifo *fifo;
unsigned int cpu;
unsigned int rw_bs[2];
struct fifo *fifo;
@@
-253,6
+253,7
@@
int load_blktrace(struct thread_data *td, const char *filename)
ttime = 0;
ios[0] = ios[1] = 0;
rw_bs[0] = rw_bs[1] = 0;
ttime = 0;
ios[0] = ios[1] = 0;
rw_bs[0] = rw_bs[1] = 0;
+ skipped_writes = 0;
do {
int ret = trace_fifo_get(td, fifo, fd, &t, sizeof(t));
do {
int ret = trace_fifo_get(td, fifo, fd, &t, sizeof(t));
@@
-290,7
+291,10
@@
int load_blktrace(struct thread_data *td, const char *filename)
delay = 0;
if (cpu == t.cpu)
delay = t.time - ttime;
delay = 0;
if (cpu == t.cpu)
delay = t.time - ttime;
- handle_trace(td, &t, delay, ios, rw_bs);
+ if ((t.action & BLK_TC_ACT(BLK_TC_WRITE)) && read_only)
+ skipped_writes++;
+ else
+ handle_trace(td, &t, delay, ios, rw_bs);
ttime = t.time;
cpu = t.cpu;
} while (1);
ttime = t.time;
cpu = t.cpu;
} while (1);
@@
-298,6
+302,9
@@
int load_blktrace(struct thread_data *td, const char *filename)
fifo_free(fifo);
close(fd);
fifo_free(fifo);
close(fd);
+ if (skipped_writes)
+ log_err("fio: <%s> skips replay of %lu writes due to read-only\n", td->o.name, skipped_writes);
+
if (!ios[DDIR_READ] && !ios[DDIR_WRITE]) {
log_err("fio: found no ios in blktrace data\n");
return 1;
if (!ios[DDIR_READ] && !ios[DDIR_WRITE]) {
log_err("fio: found no ios in blktrace data\n");
return 1;