Remove vmap of relay buffers.
Also removes relay_reserve and switches callers over to relay_write.
Signed-off-by: Tom Zanussi <zanussi@comcast.net>
---
block/blktrace.c | 8 ++++-
include/linux/relay.h | 47 +++++++++---------------------------
kernel/relay.c | 63 +++++++++++++++++++++---------------------------
3 files changed, 46 insertions(+), 72 deletions(-)
diff --git a/block/blktrace.c b/block/blktrace.c
index 84a9cb4..f60665e 100644
--- a/block/blktrace.c
+++ b/block/blktrace.c
@@ -35,7 +35,7 @@ static void trace_note(struct blk_trace *bt, pid_t pid, int action,
{
struct blk_io_trace *t;
- t = relay_reserve(bt->rchan, sizeof(*t) + len);
+ t = kmalloc(sizeof(*t) + len, GFP_KERNEL);
if (t) {
const int cpu = smp_processor_id();
@@ -47,6 +47,8 @@ static void trace_note(struct blk_trace *bt, pid_t pid, int action,
t->cpu = cpu;
t->pdu_len = len;
memcpy((void *) t + sizeof(*t), data, len);
+ relay_write(bt->rchan, t, sizeof(*t) + len);
+ kfree(t);
}
}
@@ -166,7 +168,7 @@ void __blk_add_trace(struct blk_trace *bt, sector_t sector, int bytes,
if (unlikely(tsk->btrace_seq != blktrace_seq))
trace_note_tsk(bt, tsk);
- t = relay_reserve(bt->rchan, sizeof(*t) + pdu_len);
+ t = kmalloc(sizeof(*t) + pdu_len, GFP_KERNEL);
if (t) {
cpu = smp_processor_id();
sequence = per_cpu_ptr(bt->sequence, cpu);
@@ -185,6 +187,8 @@ void __blk_add_trace(struct blk_trace *bt, sector_t sector, int bytes,
if (pdu_len)
memcpy((void *) t + sizeof(*t), pdu_data, pdu_len);
+ relay_write(bt->rchan, t, sizeof(*t) + pdu_len);
+ kfree(t);
}
local_irq_restore(flags);
diff --git a/include/linux/relay.h b/include/linux/relay.h
index e0b1730..35a6e8c 100644
--- a/include/linux/relay.h
+++ b/include/linux/relay.h
@@ -35,8 +35,8 @@
*/
struct rchan_buf
{
- void *start; /* start of channel buffer */
- void *data; /* start of current page */
+ void *data; /* address of current page */
+ struct ...