X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre-iokit%2Fobdfilter-survey%2Flibecho;h=b1d496f7c545521e875c3d4ccceb0694e3bd0734;hb=784bbd385b22b6578bb98691f3bb130a1ed84dc6;hp=860d547891a285b7aa5924a260c1217378284ea2;hpb=29e709dca64d0c475420a4ea8635acebfc901d74;p=fs%2Flustre-release.git diff --git a/lustre-iokit/obdfilter-survey/libecho b/lustre-iokit/obdfilter-survey/libecho index 860d547..b1d496f 100644 --- a/lustre-iokit/obdfilter-survey/libecho +++ b/lustre-iokit/obdfilter-survey/libecho @@ -1,19 +1,38 @@ #!/bin/bash -#* Copyright (C) 2002 Cluster File Systems, Inc. -#* Author: Jitendra Pawar -#* -#* 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. +# +# Copyright (c) 2012, Intel Corporation. +# +# This file is part of Lustre, http://www.lustre.org/ +# Lustre is a trademark of Sun Microsystems, Inc. +# +# Author: Jitendra Pawar + # binaries lsmod="/sbin/lsmod" @@ -32,6 +51,7 @@ declare -a do_unload_echo DSH=${DSH:-"ssh"} +NETTYPE=${NETTYPE:-tcp} dsh () { local node="$1" @@ -39,9 +59,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) @@ -127,10 +145,10 @@ unload_obdecho () { } # returns the device number which is displayed in "lctl device_list" -# +# # parameter: 1. hostname -# 2. type of device ex: echo_client -# 3. name of device ex: ECHO_matrix.linsyssoft.com +# 2. type of device ex: echo_client +# 3. name of device ex: ECHO_matrix.linsyssoft.com get_devno () { local host=$1 local type=$2 @@ -159,63 +177,68 @@ get_devnos () { # do cleanup for netdisk case. cleanup_netdisk () { for osc in $@; do - lctl </dev/null 2>&1" & pid=$! kill -term ${vmstatpids[$pidcount]} 2>/dev/null kill -kill ${vmstatpids[$pidcount]} 2>/dev/null wait $pid pidcount=$((pidcount+1)) - if ((${do_unload_obdecho[$host]})); then - unload_obdecho $host + if ((${do_unload_echo[$i]})); then + unload_obdecho $i fi done if [ $case == "network" ]; then - cleanup_network $1 + cleanup_network $1 fi if [ $case == "netdisk" ]; then - shift + shift cleanup_netdisk $@ fi if [ $exit_status ]; then @@ -229,60 +252,69 @@ 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 +# 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 - fi + if [ -z "$ost_name" ]; then + 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 <&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 # It creates echoclients for all osc listed using #lctl device_list command ec_using_osc () { local osc_name=$1 - $lctl </dev/null 2>&1 - $lctl </dev/null 2>&1 + $lctl <<-EOF + attach osc $ocsname $oscuuid + cfg_device $ocsname + setup echo_srv_UUID echo_UUID + EOF + $lctl <<-EOF + attach echo_client ${ocsname}_ecc $oscuuid + setup $ocsname + EOF } 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 </dev/null 2>&1 + $lctl <<-EOF + attach osc ${obdfilter_name}_osc ${obdfilter_name}_osc_UUID + cfg_device ${obdfilter_name}_osc + setup ${obdfilter_name}_UUID ${host_name}_UUID + EOF } # setup obdecho on server setup_srv_obd () { local server_nid=$1 local test_ostfsnm=$2 - remote_shell "root@$server_nid" "$lctl << EOF - attach obdecho $test_ostfsnm ${test_ostfsnm}_UUID - cfg_device $test_ostfsnm - setup -EOF" + remote_shell "root@$server_nid" \ + "$lctl <<-EOF + attach obdecho $test_ostfsnm ${test_ostfsnm}_UUID + cfg_device $test_ostfsnm + setup + EOF" } # setup OSS on server setup_OSS () { local server_nid=$1 - remote_shell "root@$server_nid" "$lctl << EOF - attach ost OSS OSS_UUID - cfg_device OSS - setup -EOF" + remote_shell "root@$server_nid" \ + "$lctl <<-EOF + attach ost OSS OSS_UUID + cfg_device OSS + setup + EOF" } # cleanup and detach the echo-clients that we have created during the test. # parameter: 1. hostname -# 2. client name, ex:- ns8:ECHO_ns8 +# 2. client name, ex:- ns8:ECHO_ns8 teardown_ec_devno () { local host=$1 local client_name=$2 - remote_shell $host "$lctl <