From mboxrd@z Thu Jan 1 00:00:00 1970 From: zhaolei@cn.fujitsu.com (Zhaolei) Date: Wed, 15 Oct 2008 17:18:45 +0800 Subject: [ltt-dev] [Ltt-dev] [PATCH] Remove ltt-armall/disarmall's unwanted error messages Message-ID: <48F5B575.8010103@cn.fujitsu.com> Hi, when we run ltt-armall, install a module and run ltt-armall again, we will see following error message: # ltt-armall Connecting all markers Connecting input_event Connecting kernel_arch_ipc_call ... # modprobe fs_trace # ltt-armall Connecting all markers Connecting fs_buffer_wait_end Connecting fs_buffer_wait_start ... Connecting input_event /usr/local/bin/ltt-armall.old: line 30: echo: write error: File exists Connecting kernel_arch_ipc_call /usr/local/bin/ltt-armall.old: line 30: echo: write error: File exists Connecting kernel_arch_kthread_create ... # Same sort of thing happened when we run ltt-armall/ltt-disarmall twice. It can be fixed by following patch. Applies on top of ltt-control-0.54-10102008. Signed-off-by: Zhaolei --- diff -Nur ltt-control-0.54-10102008.org/lttctl/ltt-armall.sh ltt-control-0.54-10102008/lttctl/ltt-armall.sh --- ltt-control-0.54-10102008.org/lttctl/ltt-armall.sh 2008-10-15 15:29:54.000000000 +0800 +++ ltt-control-0.54-10102008/lttctl/ltt-armall.sh 2008-10-15 15:28:04.000000000 +0800 @@ -2,13 +2,31 @@ #excluding locking markers (high traffic) echo Connecting all markers -MARKERS=`cat /proc/ltt|grep -v %k|awk '{print $2}'|sort -u|grep -v ^core_|grep -v ^locking_|grep -v ^lockdep_` +MARKERS=`cat /proc/ltt|grep -v %k|sort -u \ + | grep -v "^marker: core_" \ + | grep -v "^marker: locking_" \ + | grep -v "^marker: lockdep_"` + +echo "$MARKERS" | while read mark_line +do + if [ -z "$mark_line" ] + then + continue + fi + + mark_name=$(eval "set $mark_line;echo \$2") + mark_status=$(eval "set $mark_line;echo \$6") + + if [ "$mark_status" == "1" ] + then + echo " $mark_name already connected" + continue + fi -for a in $MARKERS; do - echo Connecting $a + echo " Connecting $mark_name" #redirect markers carrying state information to dedicated channels - case $a in + case $mark_name in list_process_state|list_file_descriptor|user_generic_thread_brand|fs_exec|kernel_process_fork|kernel_process_free|kernel_process_exit|kernel_arch_kthread_create|list_statedump_end|list_vm_map) CHANNEL=processes ;; @@ -26,27 +44,42 @@ ;; esac - echo "connect $a default dynamic $CHANNEL" > /proc/ltt -done + echo "connect $mark_name default dynamic $CHANNEL" > /proc/ltt +done # Connect the interesting high-speed markers to the marker tap. # Markers starting with "tap_" are considered high-speed. echo Connecting high-rate markers to tap -MARKERS=`cat /proc/ltt|grep -v %k|awk '{print $2}'|sort -u |grep ^tap_` +MARKERS=`cat /proc/ltt|grep -v %k|sort -u |grep ^tap_` #Uncomment the following to also record lockdep events. -#MARKERS=`cat /proc/ltt|grep -v %k|awk '{print $2}'|sort -u|grep -e ^tap_ -e ^lockdep` +#MARKERS=`cat /proc/ltt|grep -v %k|sort -u|grep -e ^tap_ -e ^lockdep` + +echo "$MARKERS" | while read mark_line +do + if [ -z "$mark_line" ] + then + continue + fi + + mark_name=$(eval "set $mark_line;echo \$2") + mark_status=$(eval "set $mark_line;echo \$6") + + if [ "$mark_status" == "1" ] + then + echo " $mark_name already connected" + continue + fi -for a in $MARKERS; do - echo Connecting $a + echo " Connecting $mark_name" #redirect markers carrying state information to dedicated channels - case $a in + case $mark_name in *) CHANNEL= ;; esac - echo "connect $a ltt_tap_marker dynamic $CHANNEL" > /proc/ltt + echo "connect $mark_name ltt_tap_marker dynamic $CHANNEL" > /proc/ltt done diff -Nur ltt-control-0.54-10102008.org/lttctl/ltt-disarmall.sh ltt-control-0.54-10102008/lttctl/ltt-disarmall.sh --- ltt-control-0.54-10102008.org/lttctl/ltt-disarmall.sh 2008-10-15 15:29:54.000000000 +0800 +++ ltt-control-0.54-10102008/lttctl/ltt-disarmall.sh 2008-10-15 15:28:09.000000000 +0800 @@ -1,18 +1,57 @@ #excluding locking #excluding core markers, not connected to default. + echo Disconnecting all markers -MARKERS=`cat /proc/ltt|grep -v %k|awk '{print $2}'|sort -u|grep -v ^core_|grep -v ^locking_|grep -v ^lockdep_|grep -v ^lockdep|grep -v ^tap_` -for a in $MARKERS; do echo Disconnecting $a; echo "disconnect $a" > /proc/ltt; done +MARKERS=`cat /proc/ltt|grep -v %k|sort -u \ + | grep -v "^marker: core_" \ + | grep -v "^marker: locking_" \ + | grep -v "^marker: lockdep_" \ + | grep -v "^marker: lockdep" \ + | grep -v "^marker: tap_"` + +echo "$MARKERS" | while read mark_line +do + if [ -z "$mark_line" ] + then + continue + fi + + mark_name=$(eval "set $mark_line;echo \$2") + mark_status=$(eval "set $mark_line;echo \$6") + + if [ "$mark_status" == "0" ] + then + echo " $mark_name already disconnected" + continue + fi + + echo " Disconnecting $mark_name" + echo "disconnect $mark_name" > /proc/ltt +done # Markers starting with "tap_" are considered high-speed. echo Disconnecting high-rate markers to tap -MARKERS=`cat /proc/ltt|grep -v %k|awk '{print $2}'|sort -u |grep ^tap_` +MARKERS=`cat /proc/ltt|grep -v %k|sort -u |grep ^tap_` #Uncomment the following to also stop recording lockdep events. -#MARKERS=`cat /proc/ltt|grep -v %k|awk '{print $2}'|sort -u|grep -e ^tap_ -e ^lockdep` +#MARKERS=`cat /proc/ltt|grep -v %k|sort -u|grep -e ^tap_ -e ^lockdep` + +echo "$MARKERS" | while read mark_line +do + if [ -z "$mark_line" ] + then + continue + fi + + mark_name=$(eval "set $mark_line;echo \$2") + mark_status=$(eval "set $mark_line;echo \$6") -for a in $MARKERS; do - echo Disconnecting $a + if [ "$mark_status" == "0" ] + then + echo " $mark_name already disconnected" + continue + fi - echo "disconnect $a ltt_tap_marker" > /proc/ltt + echo " Disconnecting $mark_name" + echo "disconnect $mark_name ltt_tap_marker" > /proc/ltt done