Whamcloud - gitweb
LU-633 iokit: mds-survey script for MD echo client test
[fs/lustre-release.git] / lustre-iokit / obdfilter-survey / libecho
index 860d547..8679157 100644 (file)
@@ -1,19 +1,36 @@
 #!/bin/bash
-#*  Copyright (C) 2002 Cluster File Systems, Inc.
-#*   Author: Jitendra Pawar <jitendra@clusterfs.com>
-#*
-#*   Lustre-iokit is free software; you can redistribute it and/or
-#*   modify it under the terms of version 2 of the GNU General Public
-#*   License as published by the Free Software Foundation.
-#*
-#*   Lustre-iokit is distributed in the hope that it will be useful,
-#*   but WITHOUT ANY WARRANTY; without even the implied warranty of
-#*   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#*   GNU General Public License for more details.
-#*
-#*   You should have received a copy of the GNU General Public License
-#*   along with Lustre; if not, write to the Free Software
-#*   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+# GPL HEADER START
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 only,
+# as published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License version 2 for more details (a copy is included
+# in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU General Public License
+# version 2 along with this program; If not, see
+# http://www.sun.com/software/products/lustre/docs/GPLv2.pdf
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+# GPL HEADER END
+#
+# Copyright  2008 Sun Microsystems, Inc. All rights reserved
+# Use is subject to license terms.
+#
+# This file is part of Lustre, http://www.lustre.org/
+# Lustre is a trademark of Sun Microsystems, Inc.
+#
+# Author: Jitendra Pawar <jitendra@clusterfs.com>
+
 
 # binaries
 lsmod="/sbin/lsmod"
@@ -32,6 +49,7 @@ declare -a do_unload_echo
 
 
 DSH=${DSH:-"ssh"}
+NETTYPE=${NETTYPE:-tcp}
 
 dsh () {
     local node="$1"
@@ -39,9 +57,7 @@ dsh () {
     shift 2
     local command="$@"
 
-    local here=$(pwd)
-
-    command="cd $here; export PATH=/sbin:/usr/sbin:\$PATH; $command"
+    command="export PATH=/sbin:/usr/sbin:\$PATH; $command"
 
     case $DSH in
        ssh)
@@ -159,7 +175,7 @@ get_devnos () {
 # do cleanup for netdisk case.
 cleanup_netdisk () {
     for osc in $@; do
-        lctl <<EOF
+        $lctl <<EOF
         cfg_device $osc 
         cleanup
         detach
@@ -170,18 +186,18 @@ EOF
 # do cleanup for network case.
 cleanup_network () {
     local clean_srv_OSS=$1
-    lctl <<EOF
+    $lctl <<EOF
     cfg_device echotmp 
     cleanup
     detach
 EOF
-    remote_shell "root@$server_nid" "lctl << EOF
+    remote_shell "root@$server_nid" "$lctl << EOF
         cfg_device echo_srv
         cleanup
         detach
 EOF"
     if [ $clean_srv_OSS ]; then
-        remote_shell "root@$server_nid" "lctl << EOF
+        remote_shell "root@$server_nid" "$lctl << EOF
             cfg_device OSS
             cleanup
             detach
@@ -229,49 +245,57 @@ cleanup () {
     fi
     exit $exit_status
 }
-trap cleanup SIGHUP SIGINT SIGTERM
+trap 'cleanup 0 $clean_srv_OSS $cleanup_oscs' SIGHUP SIGINT SIGTERM
 
-# gets echoclient device number and attch it to the client UUID
-# 
+# gets echoclient device number and attach it to the client UUID
+# Results are  returned by an echo followed by an exit
+# This must run in a subshell.
+#
 # parameter: 1. hostname
 #           2. client name, ex:- ns8:ECHO_ns8
 #           3. name of ost instances, ex:- lustre-OST0001 
 get_ec_devno () {
+    exec 8>&1 1>&2
     local host=$1
     local client_name="$2"
     local ost_name="$3"
+    local dev_type="${4:-obdfilter}"
+    local stack_type="${5:-}"
+
     if [ -z "$client_name" ]; then
        if [ -z "$ost_name" ]; then
-           echo "client and ost name both null" 1>&2
-           return
+           echo "client and ost name both null"
+           exit 1
        fi
         client_name=${ost_name}_ecc
     fi
     ec=`get_devno $host echo_client $client_name`
     if [ -n "$ec" ]; then
-       echo $ec $client_name $client_name
-       return
+       echo $ec $client_name $client_name >&8
+       exit 0
     fi
     if [ -z "$ost_name" ]; then
-       echo "no echo client and ost_name not set, client: $client_name, host: $host" 1>&2
-       return
+       echo "no echo client and ost_name not set, client:" \
+            "$client_name, host: $host"
+       exit 1
     fi
-    ost=`get_devno $host obdfilter $ost_name`
+    ost=`get_devno $host $dev_type $ost_name`
     if [ -z "$ost" ]; then
-       echo "OST $ost_name not setup" 1>&2
-       return
+       echo "OST $ost_name not setup"
+       exit 1
     fi
     client_name=${ost_name}_ecc
     remote_shell $host "$lctl <<EOF
         attach echo_client $client_name ${client_name}_UUID
-       setup $ost_name
+       setup $ost_name $stack_type
 EOF"
     ec=`get_devno $host echo_client $client_name`
     if [ -z "$ec" ]; then
-       echo "Can't setup echo-client" 1>&2
-       return
+       echo "Can't setup echo-client"
+       exit 1
     fi
-    echo $ec $client_name 1
+    echo $ec $client_name 1 >&8
+    exit 0
 }
 
 # Create echo-clients using osc_names and osc_uuid
@@ -291,7 +315,7 @@ ec_using_srv_nid () {
     local server_nid=$1
     local ocsname=$2
     local oscuuid=$3
-    $lctl add_uuid echo_UUID $server_nid@tcp >/dev/null 2>&1
+    $lctl add_uuid echo_UUID $server_nid@$NETTYPE >/dev/null 2>&1
     $lctl <<EOF
         attach osc $ocsname $oscuuid
         cfg_device $ocsname
@@ -307,7 +331,7 @@ setup_osc_for_remote_ost () {
     local ost_nid=$1
     local obdfilter_name=$2
     local host_name=host_$3
-    $lctl add_uuid ${host_name}_UUID $ost_nid@tcp >/dev/null 2>&1
+    $lctl add_uuid ${host_name}_UUID $ost_nid@$NETTYPE >/dev/null 2>&1
     $lctl <<EOF
         attach osc ${obdfilter_name}_osc ${obdfilter_name}_osc_UUID
         cfg_device ${obdfilter_name}_osc 
@@ -367,7 +391,7 @@ split_hostname () {
 
 check_cleanup () {
     type_obj="$1"
-    osc_names_str=$(lctl dl | grep $type_obj)
+    osc_names_str=$($lctl dl | grep $type_obj)
     count=0;
     for name in $osc_names_str; do
         count=$((count+1))
@@ -382,7 +406,7 @@ check_cleanup () {
 
 check_setup () {
     type_obj="$1"
-    osc_names_str=$(lctl dl | grep $type_obj)
+    osc_names_str=$($lctl dl | grep $type_obj)
     count=0;
     for name in $osc_names_str; do
         count=$((count+1))