From 18ada3d4deee8a58e56d3b8ee1dbec67815b77d8 Mon Sep 17 00:00:00 2001 From: Jens Axboe Date: Mon, 29 Aug 2005 15:49:05 +0200 Subject: [PATCH] [PATCH] blktrace: fix payload tracing Endianness conversion was done before reading ->pdu_len, thus screwing it up and hanging forever waiting for data. --- CHANGELOG | 1 + blktrace.c | 8 +++++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index e671d72..ef2bfb4 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -9,6 +9,7 @@ - Always store trace data in big endian format - Oops, don't clear rb_root in sort_entries() - Account dispathces as well, split stats into per-cpu + - blktrace: fix payload logging 20050827: - Various cleanups and killing unused variables 20050826: diff --git a/blktrace.c b/blktrace.c index 2a21c4c..1af2783 100644 --- a/blktrace.c +++ b/blktrace.c @@ -110,7 +110,7 @@ static void extract_data(int cpu, char *ifn, int ifd, char *ofn, int ofd, static void *extract(void *arg) { struct thread_information *tip = arg; - int tracefd, ret, ofd; + int tracefd, ret, ofd, pdu_len; char ip[64], op[64], dp[64]; struct blk_io_trace t; pid_t pid = getpid(); @@ -161,6 +161,8 @@ static void *extract(void *arg) if (verify_trace(&t)) exit(1); + pdu_len = t.pdu_len; + trace_to_be(&t); ret = write(ofd, &t, sizeof(t)); @@ -171,8 +173,8 @@ static void *extract(void *arg) exit(1); } - if (t.pdu_len) - extract_data(tip->cpu, ip, tracefd, dp, ofd, t.pdu_len); + if (pdu_len) + extract_data(tip->cpu, ip, tracefd, dp, ofd, pdu_len); tip->events_processed++; } -- 2.25.1