projects
/
fio.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
README: update/add mintty issue links
[fio.git]
/
blktrace.c
diff --git
a/blktrace.c
b/blktrace.c
index 2d4dc1b9fbca3724e47c7285e7fcdab277b82bc3..65b600f5cfed020c2008e3c77511829fcd4cf02b 100644
(file)
--- a/
blktrace.c
+++ b/
blktrace.c
@@
-10,8
+10,9
@@
#include "flist.h"
#include "fio.h"
#include "flist.h"
#include "fio.h"
+#include "blktrace.h"
#include "blktrace_api.h"
#include "blktrace_api.h"
-#include "lib/linux-dev-lookup.h"
+#include "
os
lib/linux-dev-lookup.h"
#define TRACE_FIFO_SIZE 8192
#define TRACE_FIFO_SIZE 8192
@@
-208,6
+209,14
@@
out:
return last_fileno;
}
return last_fileno;
}
+static void t_bytes_align(struct thread_options *o, struct blk_io_trace *t)
+{
+ if (!o->replay_align)
+ return;
+
+ t->bytes = (t->bytes + o->replay_align - 1) & ~(o->replay_align - 1);
+}
+
/*
* Store blk_io_trace data in an ipo for later retrieval.
*/
/*
* Store blk_io_trace data in an ipo for later retrieval.
*/
@@
-220,6
+229,9
@@
static void store_ipo(struct thread_data *td, unsigned long long offset,
init_ipo(ipo);
ipo->offset = offset * bs;
init_ipo(ipo);
ipo->offset = offset * bs;
+ if (td->o.replay_scale)
+ ipo->offset = ipo->offset / td->o.replay_scale;
+ ipo_bytes_align(td->o.replay_align, ipo);
ipo->len = bytes;
ipo->delay = ttime / 1000;
if (rw)
ipo->len = bytes;
ipo->delay = ttime / 1000;
if (rw)
@@
-275,6
+287,9
@@
static void handle_trace_discard(struct thread_data *td,
INIT_FLIST_HEAD(&ipo->list);
ipo->offset = t->sector * bs;
INIT_FLIST_HEAD(&ipo->list);
ipo->offset = t->sector * bs;
+ if (td->o.replay_scale)
+ ipo->offset = ipo->offset / td->o.replay_scale;
+ ipo_bytes_align(td->o.replay_align, ipo);
ipo->len = t->bytes;
ipo->delay = ttime / 1000;
ipo->ddir = DDIR_TRIM;
ipo->len = t->bytes;
ipo->delay = ttime / 1000;
ipo->ddir = DDIR_TRIM;
@@
-314,7
+329,7
@@
static void handle_trace(struct thread_data *td, struct blk_io_trace *t,
unsigned long *ios, unsigned int *bs)
{
static unsigned long long last_ttime;
unsigned long *ios, unsigned int *bs)
{
static unsigned long long last_ttime;
- unsigned long long delay;
+ unsigned long long delay
= 0
;
if ((t->action & 0xffff) != __BLK_TA_QUEUE)
return;
if ((t->action & 0xffff) != __BLK_TA_QUEUE)
return;
@@
-329,6
+344,8
@@
static void handle_trace(struct thread_data *td, struct blk_io_trace *t,
}
}
}
}
+ t_bytes_align(&td->o, t);
+
if (t->action & BLK_TC_ACT(BLK_TC_NOTIFY))
handle_trace_notify(t);
else if (t->action & BLK_TC_ACT(BLK_TC_DISCARD))
if (t->action & BLK_TC_ACT(BLK_TC_NOTIFY))
handle_trace_notify(t);
else if (t->action & BLK_TC_ACT(BLK_TC_DISCARD))