[ltt-dev] [PATCH 13/13] enable text output for ltt-relay-locked

Lai Jiangshan laijs at cn.fujitsu.com
Tue Jan 13 04:09:51 EST 2009


all done, enable text output for ltt-relay-locked

Signed-off-by: Lai Jiangshan <laijs at cn.fujitsu.com>
---
 ltt-relay-locked.c |   16 ++++++++++++++++
 1 file changed, 16 insertions(+)
diff --git a/ltt/ltt-relay-locked.c b/ltt/ltt-relay-locked.c
index d662303..a17e2d5
--- a/ltt/ltt-relay-locked.c
+++ b/ltt/ltt-relay-locked.c
@@ -697,6 +715,7 @@ static void ltt_relay_print_buffer_errors(struct ltt_channel_struct *ltt_chan,
 
 static void ltt_relay_remove_dirs(struct ltt_trace_struct *trace)
 {
+	ltt_txt_remove_dir(trace);
 	debugfs_remove(trace->dentry.trace_root);
 }
 
@@ -807,9 +826,16 @@ static int ltt_relay_create_channel(const char *trace_name,
 		goto relay_open_error;
 	}
 
+	ltt_chan->buf_access_ops = &ltt_channel_buf_accesser;
+	ltt_chan->txt_entry = ltt_txt_create(trace, ltt_chan);
+	if (!ltt_chan->txt_entry)
+		goto relay_txt_error;
+
 	err = 0;
 	goto end;
 
+relay_txt_error:
+	ltt_relay_close(ltt_chan->trans_channel_data);
 relay_open_error:
 	percpu_free(ltt_chan->buf);
 ltt_percpu_alloc_error:
@@ -821,11 +847,15 @@ end:
 
 static int ltt_relay_create_dirs(struct ltt_trace_struct *new_trace)
 {
+	if (ltt_txt_create_dir(new_trace))
+		return EEXIST;
+
 	new_trace->dentry.trace_root = debugfs_create_dir(new_trace->trace_name,
 			ltt_root_dentry);
 	if (new_trace->dentry.trace_root == NULL) {
 		printk(KERN_ERR "LTT : Trace directory name %s already taken\n",
 				new_trace->trace_name);
+		ltt_txt_remove_dir(new_trace);
 		return EEXIST;
 	}
 
@@ -889,6 +919,7 @@ static void ltt_relay_remove_channel(struct ltt_channel_struct *channel)
 {
 	struct rchan *rchan = channel->trans_channel_data;
 
+	ltt_txt_remove(channel, channel->txt_entry);
 	ltt_relay_close(rchan);
 	kref_put(&channel->kref, ltt_relay_release_channel);
 }
@@ -1308,6 +1313,9 @@ static notrace int ltt_relay_reserve_slot(struct ltt_trace_struct *trace,
 	struct ltt_reserve_switch_offsets offsets;
 	unsigned long flags;
 
+	if (atomic_read(&ltt_channel->channel_disabled))
+		return -EBUSY;
+
 	raw_local_irq_save(flags);
 	__raw_spin_lock(&ltt_buf->lock);
 







More information about the lttng-dev mailing list