Separate into relay + pagewriter
Subsystems (3)
RFC PATCH 14/21 Separate into relay + pagewriter
--- block/blktrace.c | 41 +-- include/linux/blktrace_api.h | 4 +- include/linux/relay.h | 246 ++++-------------- include/linux/relay_pagewriter.h | 220 +++++++++++++++ kernel/Makefile | 2 +- kernel/relay.c | 376 ++++++++++++--------------- kernel/relay_pagewriter.c | 545 ++++++++++++++++++++++++++++++++++++++ virt/kvm/kvm_trace.c | 48 +--- 8 files changed, 1008 insertions(+), 474 deletions(-) create mode 100644 include/linux/relay_pagewriter.h create mode 100644 kernel/relay_pagewriter.c
block/blktrace.c +11 -30
@@ -47,7 +47,7 @@ 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); +pagewriter_write (bt->pagewriter, t,sizeof (*t) + len);kfree (t); } }
@@ -187,7 +187,7 @@ 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); +pagewriter_write (bt->pagewriter, t,sizeof (*t) + pdu_len);kfree (t); }
@@ -247,7 +247,7 @@ err:static void blk_trace_cleanup (struct blk_trace *bt) { -relay_close (bt->rchan); +pagewriter_close (bt->pagewriter);debugfs_remove (bt->msg_file);debugfs_remove (bt->dropped_file);blk_remove_tree (bt->dir);
@@ -285,7 +285,8 @@ static ssize_t blk_dropped_read(struct file *filp, char __user *buffer,struct blk_trace *bt = filp->private_data;char buf[16 ]; -snprintf (buf,sizeof (buf),"%u\n" ,atomic_read (&bt->rchan->dropped)); +snprintf (buf,sizeof (buf),"%u\n" , +atomic_read (&bt->pagewriter->dropped));return simple_read_from_buffer (buffer, count, ppos, buf,strlen (buf)); }
@@ -334,26 +335,6 @@ static const struct file_operations blk_msg_fops = { .write = blk_msg_write, }; -static int blk_remove_buf_file_callback (struct dentry *dentry) -{ -debugfs_remove (dentry); -return 0 ; -} - -static struct dentry *blk_create_buf_file_callback (const char *filename, -struct dentry *parent, -int mode, -struct rchan_buf *buf) -{ -return debugfs_create_file (filename, mode, parent, buf, - &relay_file_operations); -} - -static struct rchan_callbacks blk_relay_callbacks = { - .create_buf_file = blk_create_buf_file_callback, - .remove_buf_file = blk_remove_buf_file_callback, -}; -/* * Setup everything required to start tracing */
@@ -410,9 +391,9 @@ int do_blk_trace_setup(struct request_queue *q, char *name, dev_t dev, n_pages = (buts->buf_size * buts->buf_nr) /PAGE_SIZE ; n_pages_wakeup = buts->buf_size /PAGE_SIZE ; - bt->rchan =relay_open ("trace" , dir, n_pages, n_pages_wakeup, - &blk_relay_callbacks, bt,0UL ); -if (!bt->rchan) + bt->pagewriter =pagewriter_open ("trace" , dir, n_pages, n_pages_wakeup, +NULL , bt,0UL ); +if (!bt->pagewriter) goto err; bt->act_mask = buts->act_mask;
@@ -445,8 +426,8 @@ err:debugfs_remove (bt->dropped_file);free_percpu (bt->sequence);free_percpu (bt->msg_data); -if (bt->rchan) -relay_close (bt->rchan); +if (bt->pagewriter) +pagewriter_close (bt->pagewriter);kfree (bt); }return ret;
@@ -499,7 +480,7 @@ int blk_trace_startstop(struct request_queue *q, int start) }else {if (bt->trace_state == Blktrace_running) { bt->trace_state = Blktrace_stopped; -relay_flush (bt->rchan); +pagewriter_flush (bt->pagewriter); ret =0 ; } }
include/linux/blktrace_api.h +2 -2
@@ -2,7 +2,7 @@#define BLKTRACE_H #include <linux/blkdev.h> -#include <linux/relay.h> +#include <linux/relay_pagewriter.h> /* * Trace categories
@@ -119,7 +119,7 @@ enum {struct blk_trace {int trace_state; -struct rchan *rchan; +struct pagewriter *pagewriter;unsigned long *sequence;unsigned char *msg_data;u16 act_mask;
include/linux/relay.h +46 -200
329 lines not on this page · raw message
include/linux/relay_pagewriter.h new file +220 -0
220 lines not on this page · raw message
kernel/Makefile +1 -1
@@ -78,7 +78,7 @@ obj-$(CONFIG_PREEMPT_RCU) += rcupreempt.o ifeq ($(CONFIG_PREEMPT_RCU),y) obj-$(CONFIG_RCU_TRACE) += rcupreempt_trace.o endif -obj-$(CONFIG_RELAY) += relay.o +obj-$(CONFIG_RELAY) += relay.o relay_pagewriter.o obj-$(CONFIG_SYSCTL) += utsname_sysctl.o obj-$(CONFIG_TASK_DELAY_ACCT) += delayacct.o obj-$(CONFIG_TASKSTATS) += taskstats.o tsacct.o
kernel/relay.c +168 -208
576 lines not on this page · raw message
kernel/relay_pagewriter.c new file +545 -0
545 lines not on this page · raw message
virt/kvm/kvm_trace.c +15 -33
111 lines not on this page · raw message
Signature · 1 line
1.5.3.5