summaryrefslogtreecommitdiff
path: root/src/ceph-debugpack.in
diff options
context:
space:
mode:
authorSage Weil <sage@newdream.net>2011-09-21 16:28:43 -0700
committerSage Weil <sage@newdream.net>2011-09-22 15:08:25 -0700
commit6f8f140350c91f4d823f7c7cc856d78abb57b22c (patch)
tree6349d318688a41254a633bd233a97ff5f8a693ca /src/ceph-debugpack.in
parent97aa1aab7b56ecec8f2bdb4f996428c4d82929d5 (diff)
downloadceph-6f8f140350c91f4d823f7c7cc856d78abb57b22c.tar.gz
c* -> ceph-*
Hopefully I didn't miss too much... Signed-off-by: Sage Weil <sage@newdream.net>
Diffstat (limited to 'src/ceph-debugpack.in')
-rw-r--r--src/ceph-debugpack.in130
1 files changed, 130 insertions, 0 deletions
diff --git a/src/ceph-debugpack.in b/src/ceph-debugpack.in
new file mode 100644
index 00000000000..d0eae867478
--- /dev/null
+++ b/src/ceph-debugpack.in
@@ -0,0 +1,130 @@
+#!/bin/sh
+
+
+
+# if we start up as ./init-ceph, assume everything else is in the
+# current directory too.
+if [ `dirname $0` = "." ] && [ $PWD != "/etc/init.d" ]; then
+ BINDIR=.
+ LIBDIR=.
+ ETCDIR=.
+else
+ BINDIR=@bindir@
+ LIBDIR=@libdir@/ceph
+ ETCDIR=@sysconfdir@/ceph
+fi
+
+BINDBGDIR="/usr/lib/debug/usr/bin"
+
+usage_exit() {
+ echo "usage: $0 [-c ceph.conf] <filename.tar.gz>"
+ exit
+}
+
+wait_pid_exit() {
+ pid=$1
+
+ for i in {1..10}; do
+ [ -e /proc/$pid ] || return
+ sleep 1
+ done
+ if [ -e /proc/$pid ]; then
+ echo Killing pid $pid
+ kill $pid
+ fi
+}
+
+
+. $LIBDIR/ceph_common.sh
+
+dest_tar=""
+
+while [ $# -ge 1 ]; do
+case $1 in
+ --conf | -c)
+ [ -z "$2" ] && usage_exit
+ shift
+ conf=$1
+ ;;
+ *)
+ if [ "$dest_tar" != "" ]; then
+ echo unrecognized option \'$1\'
+ usage_exit
+ fi
+ dest_tar=$1
+ ;;
+esac
+shift
+done
+
+[ "$dest_tar" = "" ] && usage_exit
+
+# get absolute path for dest_tar
+[ `echo $dest_tar | cut -c 1` != "/" ] && dest_tar="`pwd`/$dest_tar"
+
+bins="ceph-mon ceph-mds ceph-osd"
+core_paths="/ $BINDIR $BINDBGDIR"
+[ "$conf" = "" ] && conf=$ETCDIR/ceph.conf
+log_path=`$CCONF -c $conf "log dir"`
+
+[ -z "$conf" ] && usage_exit
+
+
+tmp_path=`mktemp -d /tmp/cdebugpack.XXXXXXXXXX`
+tmp_path_bin=$tmp_path/bin
+tmp_path_bin_dbg=$tmp_path/bin.dbg
+tmp_path_log=$tmp_path/out
+tmp_path_core=$tmp_path/core
+tmp_path_etc=$tmp_path/etc
+
+echo tmp_path=$tmp_path
+
+mkdir -p $tmp_path_bin
+mkdir -p $tmp_path_bin_dbg
+mkdir -p $tmp_path_log
+mkdir -p $tmp_path_core
+mkdir -p $tmp_path_etc
+
+
+#copy the binaries
+
+for name in $bins; do
+ [ -e $BINDIR/$name ] && cp $BINDIR/$name $tmp_path_bin
+ [ -e $BINDBGDIR/$name ] && cp $BINDBGDIR/$name $tmp_path_bin_dbg
+done
+
+
+# copy the logs
+cp -rp $log_path/* $tmp_path_log
+
+# copy cores (if exist)
+
+for path in $core_paths; do
+ files="`find $path -maxdepth 1 -name 'core*'`"
+ if [ "$files" != "" ]; then
+ for core_file in `ls $path/core*`; do
+ tmp_core=`mktemp $tmp_path_core/core.XXXX`
+ cp $core_file $tmp_core
+ done
+ fi
+done
+
+# copy config
+cp $conf $tmp_path_etc
+
+# other output
+$BINDIR/ceph -s > $tmp_path_log/ceph-s &
+wait_pid_exit $!
+$BINDIR/ceph osd dump -o $tmp_path_log/ceph-osd-dump &
+wait_pid_exit $!
+$BINDIR/ceph mds dump -o $tmp_path_log/ceph-mds-dump &
+wait_pid_exit $!
+$BINDIR/ceph pg dump -o $tmp_path_log/ceph-pg-dump &
+wait_pid_exit $!
+
+
+# now create a tarball
+tmp_path_dir=`echo $tmp_path | cut -d / -f 3`
+tar cvfz $dest_tar -C /tmp $tmp_path_dir
+rm -fR $tmp_path
+