Whamcloud - gitweb
Fix ordering of module unload in head.
[fs/lustre-release.git] / lustre / tests / common.sh
index dd2b36f..7b13219 100644 (file)
@@ -3,8 +3,8 @@ export PATH=$PATH:/sbin:/usr/sbin
 
 [ -d /r ] && R=/r
 
-PORTALS=$SRCDIR../../portals
-LUSTRE=$SRCDIR../../lustre
+PORTALS=$SRCDIR/../../portals
+LUSTRE=$SRCDIR/..
 
 PTLCTL=$PORTALS/linux/utils/ptlctl
 DBGCTL=$PORTALS/linux/utils/debugctl
@@ -28,7 +28,14 @@ do_insmod() {
        [ "$MODULE" ] || fail "usage: $0 <module>"
        [ -f $MODULE ] || echo "$0: module '$MODULE' not found" 1>&2
        lsmod | grep -q "\<$BASE\>" && return 0
-       insmod $MODULE
+       insmod  $MODULE
+}
+
+do_rmmod() {
+       MODULE=$1
+       [ "$MODULE" ] || fail "usage: $0 <module>"
+       lsmod | grep -q $MODULE || return 0
+       rmmod $MODULE || lsmod | sed "s/^/$MODULE failed: /"
 }
 
 # Return the next unused loop device on stdout and in the $LOOPDEV
@@ -93,7 +100,7 @@ new_fs () {
        fi
 
        # Enable hash-indexed directories for extN filesystems
-       [ "$1" = "extN" ] && echo "feature FEATURE_C5" | debugfs -w $2
+#      [ "$1" = "extN" ] && echo "feature FEATURE_C5" | debugfs -w $2
 }
 
 # Set up to use an existing filesystem.  We take the same parameters as
@@ -140,6 +147,19 @@ setup_opts() {
        [ -z "$OSC_RSH" ] && OSC_RSH="eval"
 }
 
+setup_variables() {
+       [ -z "$OSTNODE" ] && OSTNODE=$SERVER
+       [ -z "$MDSNODE" ] && MDSNODE=$SERVER
+
+       if [ -z "$DLM" ]; then
+               if [ "$LOCALHOST" == "$SERVER" ]; then
+                       DLM=localhost
+               else
+                       DLM=$SERVER
+               fi
+       fi
+}
+
 setup_portals() {
        if grep -q portals /proc/modules; then
                echo "$0: portals already appears to be set up, skipping"
@@ -151,15 +171,7 @@ setup_portals() {
                exit -1
        fi
 
-       [ -z "$OSTNODE" ] && OSTNODE=$SERVER
-
-       if [ -z "$DLM" ]; then
-               if [ "$LOCALHOST" == "$SERVER" ]; then
-                       DLM=localhost
-               else
-                       DLM=$SERVER
-               fi
-       fi
+        setup_variables
 
        [ -c /dev/portals ] || mknod /dev/portals c 10 240
 
@@ -179,13 +191,13 @@ setup_portals() {
        $PTLCTL <<- EOF
        setup $NETWORK
        mynid $LOCALHOST
-       connect $SERVER $PORT
-       add_uuid self
-       add_uuid mds
+       connect $MDSNODE $PORT
+       add_uuid $MDSNODE
        connect $OSTNODE $PORT
-       add_uuid ost
+       add_uuid $OSTNODE
        connect $DLM $PORT
-       add_uuid ldlm
+       add_uuid $DLM
+       add_uuid self
        quit
        EOF
 }
@@ -204,13 +216,15 @@ setup_lustre() {
        do_insmod $LUSTRE/mds/mds_extN.o || \
                echo "info: can't load mds_extN.o module, needs extN.o"
        do_insmod $LUSTRE/obdecho/obdecho.o || exit -1
-       do_insmod $LUSTRE/obdext2/obdext2.o || exit -1
+       #do_insmod $LUSTRE/obdext2/obdext2.o || exit -1
        do_insmod $LUSTRE/obdfilter/obdfilter.o || exit -1
        do_insmod $LUSTRE/ost/ost.o || exit -1
        do_insmod $LUSTRE/osc/osc.o || exit -1
        do_insmod $LUSTRE/mdc/mdc.o || exit -1
+       do_insmod $LUSTRE/lov/lov.o || exit -1
        do_insmod $LUSTRE/llite/llite.o || exit -1
 
+        echo "$R/tmp/lustre-log" > /proc/sys/portals/debug_path
        list_mods
 
        if $OBDCTL name2dev RPCDEV > /dev/null 2>&1; then
@@ -275,12 +289,31 @@ setup_mds() {
 
        $OBDCTL <<- EOF || return $?
        newdev
-       attach mds MDSDEV
+       attach mds MDSDEV MDSUUID  
        setup ${MDS} ${MDSFS}
        quit
        EOF
 }
 
+setup_mds_lov() { 
+
+       [ "$SETUP_MDS" = "y" ] || return 0
+
+        if [ -z "$LOVUUID" ]; then
+            echo "No LOV configured"
+            return
+        fi
+
+       $OBDCTL <<- EOF || return $?
+        name2dev MDSDEV
+        connect 
+        lovconfig ${LOVUUID} 1 4096 0 OSCUUID
+        disconnect
+       quit
+       EOF
+}
+
+
 setup_ost() {
        [ "$SETUP_OST" = "y" ] || return 0
 
@@ -328,55 +361,108 @@ setup_ost() {
 
        $OBDCTL <<- EOF || return $?
        newdev
-       attach ${OSTTYPE} OBDDEV
+       attach ${OSTTYPE} OBDDEV OBDUUID
        setup ${OBD} ${OBDARG}
        quit
        EOF
        $OBDCTL <<- EOF || return $?
        newdev
-       attach ost OSTDEV
+       attach ost OSTDEV OSTUUID
        setup \$OBDDEV
        quit
        EOF
 }
 
 setup_server() {
+       #setup_mds $1 && setup_mds_lov $1 && setup_ost $1
        setup_mds $1 && setup_ost $1
 }
 
 setup_osc() {
+       set -vx
        [ "$SETUP_OSC" != "y" ] && return 0
+        [ "$OSC_NAMES" ] || OSC_NAMES=OSCDEV
 
-       if $OBDCTL name2dev OSCDEV > /dev/null 2>&1; then
+        for THEOSC in $OSC_NAMES ; do 
+            OSCDEVNO=`find_devno $THEOSC`
+           if $OBDCTL name2dev $THEOSC > /dev/null 2>&1; then
                echo "$0: OSCDEV is already configured"
                return 0
+           fi
+
+       $OBDCTL <<- EOF || return $rc
+       newdev
+       attach osc $THEOSC ${THEOSC}-UUID
+       setup OBDUUID $OSTNODE
+       quit
+       EOF
+        done
+}
+
+setup_mdc() {
+       set -vx
+       [ "$SETUP_MDC" != "y" ] && return 0
+        [ "$MDC_NAMES" ] || MDC_NAMES=MDCDEV
+
+        for THEMDC in $MDC_NAMES ; do 
+            MDCDEVNO=`find_devno $THEMDC`
+       if $OBDCTL name2dev $THEMDC > /dev/null 2>&1; then
+               echo "$0: MDCDEV is already configured"
+               return 0
        fi
 
        $OBDCTL <<- EOF || return $?
        newdev
-       attach osc OSCDEV
-       setup -1
+       attach mdc $THEMDC  ${THEMDC}-UUID
+       setup MDSUUID $MDSNODE
        quit
        EOF
+        done
 }
 
+setup_lov () { 
+       [ "$SETUP_MDC" != "y" ] && return 0
+
+        if [ -z "$LOVUUID" ]; then
+            echo "No LOV configured"
+            return
+        fi
+
+       $OBDCTL <<- EOF || return $?
+       newdev
+       attach lov LOVNAME  ${LOVUUID}
+       setup  MDCDEV-UUID
+       quit
+       EOF
+}        
+
+
 setup_mount() {
+       set -vx
        [ "$SETUP_MOUNT" != "y" ] && return 0
+        [ "$MDC_NAMES" ] || MDC_NAMES=MDCDEV
+        [ "$OSC_NAMES" ] || OSC_NAMES=OSCDEV
+       [ -z "$MOUNT_LIST" -a "$OSCMT" ] && MOUNT_LIST="MT" && MT="$OSCMT OSCDEV MDCDEV"
 
-       [ "$OSCMT" ] || fail "error: $0: OSCMT unset"
+       [ "$MOUNT_LIST" ] || fail "error: $0: MOUNT_LIST unset"
 
-       if mount | grep -q $OSCMT; then
-               echo "$0: $OSCMT is already mounted"
-               return 0
-       fi
+       for THEMOUNT in $MOUNT_LIST; do
+           eval "echo \$$THEMOUNT" | while read MTPT THEOSC THEMDC; do
+               if mount | grep -q $MTPT; then
+                   echo "$0: $MTPT is already mounted"
+                   return 0
+               fi
 
-       [ ! -d $OSCMT ] && mkdir $OSCMT
-       echo "$0: mounting \$OSCDEV on $OSCMT"
-       mount -t lustre_lite -o device=`find_devno OSCDEV` none $OSCMT
+               [ ! -d $MTPT ] && mkdir $MTPT
+               echo mount -t lustre_lite -o ost=`find_devno $THEOSC`,mds=`find_devno $THEMDC` none $MTPT
+               mount -t lustre_lite -o ost=`find_devno $THEOSC`,mds=`find_devno $THEMDC` none $MTPT
+           done
+       done
 }
 
 setup_client() {
-       setup_osc && setup_mount
+       # setup_osc && setup_mdc && setup_lov  && setup_mount
+       setup_osc && setup_mdc && setup_mount
 }
 
 DEBUG_ON="echo 0xffffffff > /proc/sys/portals/debug"
@@ -402,45 +488,49 @@ debug_client_on() {
 
 cleanup_portals() {
        [ -z "$NETWORK" ] && NETWORK=tcp
+
+        setup_variables
+
        $PTLCTL <<- EOF
        setup $NETWORK
        disconnect
        del_uuid self
-       del_uuid mds
-       del_uuid ost
-       del_uuid ldlm
+       del_uuid $MDSNODE
+       del_uuid $OSTNODE
+       del_uuid $DLM
        quit
        EOF
 
-       rmmod kqswnal
-       rmmod ksocknal
-       rmmod portals
+       do_rmmod ldlm
+       do_rmmod ptlrpc
+       do_rmmod obdclass
+
+       do_rmmod kqswnal
+       do_rmmod ksocknal
+       do_rmmod portals
 }
 
 cleanup_lustre() {
        killall acceptor
 
+       do_rmmod llite
+       do_rmmod lov
+       do_rmmod mdc
+       do_rmmod osc
+
+       do_rmmod mds_extN
+       do_rmmod mds_ext3
+       do_rmmod mds_ext2
+       do_rmmod mds
+       do_rmmod ost
+       do_rmmod obdecho
+       do_rmmod obdfilter
+       do_rmmod obdext2
+       do_rmmod extN
+
        losetup -d ${LOOP}0
        losetup -d ${LOOP}1
        losetup -d ${LOOP}2
-
-       rmmod llite
-       rmmod mdc
-
-       rmmod mds_extN
-       rmmod mds_ext3
-       rmmod mds_ext2
-       rmmod mds
-       rmmod ost
-       rmmod osc
-       rmmod obdecho
-       rmmod obdfilter
-       rmmod obdext2
-       rmmod extN
-
-       rmmod ldlm
-       rmmod ptlrpc
-       rmmod obdclass
 }
 
 cleanup_ldlm() {
@@ -503,23 +593,45 @@ cleanup_mount() {
        [ "$SETUP" -a -z "$SETUP_MOUNT" ] && return 0
 
        [ "$OSCMT" ] || OSCMT=/mnt/lustre
-       if [ "`mount | grep $OSCMT`" ]; then
-               umount $OSCMT || fail "unable to unmount $OSCMT"
-       fi
+       for THEMOUNT in $OSCMT; do
+           if [ "`mount | grep $THEMOUNT`" ]; then
+               umount $THEMOUNT || fail "unable to unmount $THEMOUNT"
+           fi
+       done
 }
 
 cleanup_osc() {
        [ "$SETUP" -a -z "$SETUP_OSC" ] && return 0
+        [ "$OSC_NAMES" ] || OSC_NAMES=OSCDEV
 
-       OSCDEVNO=`find_devno OSCDEV`
-       if [ "$OSCDEVNO" ]; then
+        for THEOSC in $OSC_NAMES ; do 
+            OSCDEVNO=`find_devno $THEOSC`
+            if [ "$OSCDEVNO" ]; then
                $OBDCTL <<- EOF
                device $OSCDEVNO
                cleanup
                detach
                quit
                EOF
-       fi
+            fi
+        done
+}
+
+cleanup_mdc() {
+       [ "$SETUP" -a -z "$SETUP_MDC" ] && return 0
+        [ "$MDC_NAMES" ] || MDC_NAMES=MDCDEV
+
+        for THEMDC in $MDC_NAMES ; do 
+            MDCDEVNO=`find_devno $THEMDC`
+            if [ "$MDCDEVNO" ]; then
+               $OBDCTL <<- EOF
+               device $MDCDEVNO
+               cleanup
+               detach
+               quit
+               EOF
+            fi
+        done
 }
 
 cleanup_rpc() {
@@ -535,7 +647,7 @@ cleanup_rpc() {
 }
 
 cleanup_client() {
-       cleanup_mount && cleanup_osc && cleanup_rpc
+       cleanup_mount && cleanup_osc && cleanup_mdc && cleanup_rpc
 }
 
 fail() {