From mboxrd@z Thu Jan 1 00:00:00 1970 From: laijs@cn.fujitsu.com (Lai Jiangshan) Date: Thu, 05 Feb 2009 11:32:01 +0800 Subject: [ltt-dev] [PATCH take2 12/13] enable text output for ltt-relay Message-ID: <498A5DB1.7040404@cn.fujitsu.com> all done, enable text output for ltt-relay Signed-off-by: Lai Jiangshan --- diff --git a/ltt/ltt-relay.c b/ltt/ltt-relay.c index 6d222c6..806558f --- a/ltt/ltt-relay.c +++ b/ltt/ltt-relay.c @@ -699,6 +717,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); } @@ -819,9 +838,16 @@ static int ltt_relay_create_channel(const char *trace_name, goto relay_open_error; } + ltt_chan->buf_access_ops = <t_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: @@ -833,11 +859,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, get_ltt_root()); 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; } @@ -901,6 +931,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); } @@ -1316,6 +1347,10 @@ static notrace int ltt_relay_reserve_slot(struct ltt_trace_struct *trace, local_inc(<t_buf->events_lost); return -EPERM; } + + if (atomic_read(<t_channel->channel_disabled)) + return -EBUSY; + do { if (ltt_relay_try_reserve(ltt_channel, ltt_buf, rchan, buf, &offsets, data_size, tsc, rflags,