* [PATCH] Converted to using the correct remap entries
@ 2009-04-30 17:15 Alan D. Brunelle
0 siblings, 0 replies; only message in thread
From: Alan D. Brunelle @ 2009-04-30 17:15 UTC (permalink / raw)
To: linux-btrace
[-- Attachment #1: Type: text/plain, Size: 0 bytes --]
[-- Attachment #2: 0001-Converted-to-using-the-correct-remap-entries.patch --]
[-- Type: text/x-diff, Size: 4081 bytes --]
From ba8b1a0720c0342f397c3cd12f9531b53906c451 Mon Sep 17 00:00:00 2001
From: Alan D. Brunelle <alan.brunelle@hp.com>
Date: Thu, 30 Apr 2009 13:10:31 -0400
Subject: [PATCH] Converted to using the correct remap entries
This follows the kernel changes to the blk_io_trace_remap structure to
better align the names of the structure elements with the real intent of
"from" and "to" (devices & sectors).
See the kernel patches @
http://lkml.org/lkml/2009/4/30/340
http://lkml.org/lkml/2009/4/30/341
(Note: since the ABI order didn't change, old user code will work with
the new kernel code & vice versa.)
Signed-off-by: Alan D. Brunelle <alan.brunelle@hp.com>
---
blkparse_fmt.c | 27 ++++++++++++++++-----------
blktrace_api.h | 4 ++--
btt/trace_remap.c | 9 ++++-----
3 files changed, 22 insertions(+), 18 deletions(-)
diff --git a/blkparse_fmt.c b/blkparse_fmt.c
index 83a8504..ed6cd5c 100644
--- a/blkparse_fmt.c
+++ b/blkparse_fmt.c
@@ -152,11 +152,11 @@ static unsigned int get_pdu_int(struct blk_io_trace *t)
static void get_pdu_remap(struct blk_io_trace *t, struct blk_io_trace_remap *r)
{
struct blk_io_trace_remap *__r = pdu_start(t);
- __u64 sector = __r->sector;
+ __u64 sector_from = __r->sector_from;
- r->device = be32_to_cpu(__r->device);
r->device_from = be32_to_cpu(__r->device_from);
- r->sector = be64_to_cpu(sector);
+ r->device_to = be32_to_cpu(__r->device_to);
+ r->sector_from = be64_to_cpu(sector_from);
}
static void print_field(char *act, struct per_cpu_info *pci,
@@ -284,20 +284,24 @@ static void process_default(char *act, struct per_cpu_info *pci,
struct blk_io_trace *t, unsigned long long elapsed,
int pdu_len, unsigned char *pdu_buf)
{
- struct blk_io_trace_remap r = { .device = 0, };
+ struct blk_io_trace_remap r = { .device_from = 0, };
char rwbs[6];
char *name;
fill_rwbs(rwbs, t);
+ /*
+ * For remaps we have to modify the device using the remap structure
+ * passed up.
+ */
+ if (act[0] == 'A') {
+ get_pdu_remap(t, &r);
+ t->device = r.device_to;
+ }
+
/*
* The header is always the same
*/
- if (act[0] == 'A') { /* Remap */
- get_pdu_remap(t, &r);
- t->device = r.device_from;
- }
-
fprintf(ofp, "%3d,%-3d %2d %8d %5d.%09lu %5u %2s %3s ",
MAJOR(t->device), MINOR(t->device), pci->cpu, t->sequence,
(int) SECONDS(t->time), (unsigned long) NANO_SECONDS(t->time),
@@ -388,10 +392,11 @@ static void process_default(char *act, struct per_cpu_info *pci,
break;
case 'A': /* remap */
+ get_pdu_remap(t, &r);
fprintf(ofp, "%llu + %u <- (%d,%d) %llu\n",
(unsigned long long) t->sector, t_sec(t),
- MAJOR(r.device), MINOR(r.device),
- (unsigned long long) r.sector);
+ MAJOR(r.device_from), MINOR(r.device_from),
+ (unsigned long long) r.sector_from);
break;
case 'X': /* Split */
diff --git a/blktrace_api.h b/blktrace_api.h
index 7218845..ba9ee60 100644
--- a/blktrace_api.h
+++ b/blktrace_api.h
@@ -110,9 +110,9 @@ struct blk_io_trace {
* The remap event
*/
struct blk_io_trace_remap {
- __u32 device;
__u32 device_from;
- __u64 sector;
+ __u32 device_to;
+ __u64 sector_from;
};
/*
diff --git a/btt/trace_remap.c b/btt/trace_remap.c
index 8739cda..560ae2b 100644
--- a/btt/trace_remap.c
+++ b/btt/trace_remap.c
@@ -22,9 +22,9 @@
static inline void cvt_pdu_remap(struct blk_io_trace_remap *rp)
{
- rp->device = be32_to_cpu(rp->device);
rp->device_from = be32_to_cpu(rp->device_from);
- rp->sector = be64_to_cpu(rp->sector);
+ rp->device_to = be32_to_cpu(rp->device_to);
+ rp->sector_from = be64_to_cpu(rp->sector_from);
}
/*
@@ -43,15 +43,14 @@ void trace_remap(struct io *a_iop)
rp = a_iop->pdu;
cvt_pdu_remap(rp);
- a_iop->t.device = rp->device_from;
if (!io_setup(a_iop, IOP_A))
goto out;
- q_dip = __dip_find(rp->device);
+ q_dip = __dip_find(rp->device_from);
if (!q_dip)
goto out;
- q_iop = dip_find_sec(q_dip, IOP_Q, rp->sector);
+ q_iop = dip_find_sec(q_dip, IOP_Q, rp->sector_from);
if (q_iop)
update_q2a(q_iop, tdelta(q_iop->t.time, a_iop->t.time));
--
1.6.0.4
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2009-04-30 17:15 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-04-30 17:15 [PATCH] Converted to using the correct remap entries Alan D. Brunelle
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).