From mboxrd@z Thu Jan 1 00:00:00 1970 From: zhaolei@cn.fujitsu.com (Zhaolei) Date: Tue, 21 Oct 2008 13:39:21 +0800 Subject: [ltt-dev] PATCH] Make lttcrl/lttd show error when channel not exist Message-ID: <48FD6B09.7050406@cn.fujitsu.com> Hello, Mathieu When run lttctl with a no-exist debugfs's channel dir, it don't report error: # lttctl -n channel1 -d -l /no_exist -t /tmp/channel1 Linux Trace Toolkit Trace Control 0.54-10102008 Controlling trace : channel1 Linux Trace Toolkit Trace Daemon 0.54-10102008 Reading from debugfs directory : /no_exist/channel1 Writing to trace directory : /tmp/channel1 # It is because lttd don't return error in daemon mode: # lttd -d -t /tmp/channel1 -c /no_exist Linux Trace Toolkit Trace Daemon 0.54-10102008 Reading from debugfs directory : /no_exist Writing to trace directory : /tmp/channel1 # echo $? 0 # I moved daemon() after channels_init() and make it seems fixed. I tested patched program and haven't found problem: # lttctl -n channel1 -d -l /no_exist -t /tmp/channel1 Linux Trace Toolkit Trace Control 0.54-10102008 Controlling trace : channel1 Linux Trace Toolkit Trace Daemon 0.54-10102008 Reading from debugfs directory : /no_exist/channel1 Writing to trace directory : /tmp/channel1 /no_exist/channel1: No such file or directory Trace start error # # # lttd -d -t /tmp/channel1 -c /no_exist Linux Trace Toolkit Trace Daemon 0.54-10102008 Reading from debugfs directory : /no_exist Writing to trace directory : /tmp/channel1 /no_exist: No such file or directory # # # lttctl -n channel1 -d -l /mnt/debugfs/ltt/ -t /tmp/channel1 Linux Trace Toolkit Trace Control 0.54-10102008 Controlling trace : channel1 Linux Trace Toolkit Trace Daemon 0.54-10102008 Reading from debugfs directory : /mnt/debugfs/ltt//channel1 Writing to trace directory : /tmp/channel1 Creating trace subdirectory /tmp/channel1 Adding inotify for channel /mnt/debugfs/ltt//channel1/ Added inotify for channel /mnt/debugfs/ltt//channel1/, wd 1 Channel file : /mnt/debugfs/ltt//channel1/cpu_0 Opening file. Channel file : /mnt/debugfs/ltt//channel1/control Entering channel subdirectory... Creating trace subdirectory /tmp/channel1/control Adding inotify for channel /mnt/debugfs/ltt//channel1/control/ Added inotify for channel /mnt/debugfs/ltt//channel1/control/, wd 2 Channel file : /mnt/debugfs/ltt//channel1/control/network_0 Opening file. Channel file : /mnt/debugfs/ltt//channel1/control/modules_0 Opening file. Channel file : /mnt/debugfs/ltt//channel1/control/processes_0 Opening file. Channel file : /mnt/debugfs/ltt//channel1/control/interrupts_0 Opening file. Channel file : /mnt/debugfs/ltt//channel1/control/metadata_0 Opening file. # Cound you review it? Btw, this patch will make lttctl and lttv show more detail message, is it necessary to cut them? Signed-off-by: Zhao Lei --- diff -Nur ltt-control-0.54-10102008.org/lttd/lttd.c ltt-control-0.54-10102008/lttd/lttd.c --- ltt-control-0.54-10102008.org/lttd/lttd.c 2008-10-15 15:29:54.000000000 +0800 +++ ltt-control-0.54-10102008/lttd/lttd.c 2008-10-21 13:15:06.000000000 +0800 @@ -911,15 +911,6 @@ show_info(); - if(daemon_mode) { - ret = daemon(0, 0); - - if(ret == -1) { - perror("An error occured while daemonizing."); - exit(-1); - } - } - /* Connect the signal handlers */ act.sa_handler = handler; act.sa_flags = 0; @@ -934,6 +925,15 @@ if(ret = channels_init()) return ret; + if(daemon_mode) { + ret = daemon(0, 0); + + if(ret == -1) { + perror("An error occured while daemonizing."); + exit(-1); + } + } + tids = malloc(sizeof(pthread_t) * num_threads); for(i=0; i