Whamcloud - gitweb
This has a kernel patch for handle validation. All that is missing
[fs/lustre-release.git] / lustre / tests / common.sh
index eb5d156..8753e66 100644 (file)
@@ -4,7 +4,7 @@ export PATH=$PATH:/sbin:/usr/sbin
 [ -d /r ] && R=/r
 
 PORTALS=$SRCDIR../../portals
-LUSTRE=$SRCDIR../../obd
+LUSTRE=$SRCDIR../../lustre
 
 PTLCTL=$PORTALS/linux/utils/ptlctl
 DBGCTL=$PORTALS/linux/utils/debugctl
@@ -26,7 +26,7 @@ do_insmod() {
        BASE=`echo $MODULE | sed -e "s^.*/^^" -e "s/\.o$//"`
 
        [ "$MODULE" ] || fail "usage: $0 <module>"
-       [ -f $MODULE ] || fail "$0: module '$MODULE' not found"
+       [ -f $MODULE ] || echo "$0: module '$MODULE' not found" 1>&2
        lsmod | grep -q "\<$BASE\>" && return 0
        insmod $MODULE
 }
@@ -91,6 +91,9 @@ new_fs () {
                LOOPDEV=`next_loop_dev`
                losetup ${LOOPDEV} $2 1>&2 || exit -1
        fi
+
+       # Enable hash-indexed directories for extN filesystems
+       [ "$1" = "extN" ] && echo "feature FEATURE_C5" | debugfs -w $2
 }
 
 # Set up to use an existing filesystem.  We take the same parameters as
@@ -149,6 +152,7 @@ setup_portals() {
        fi
 
        [ -z "$OSTNODE" ] && OSTNODE=$SERVER
+       [ -z "$MDSNODE" ] && MDSNODE=$SERVER
 
        if [ -z "$DLM" ]; then
                if [ "$LOCALHOST" == "$SERVER" ]; then
@@ -176,13 +180,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
 }
@@ -190,22 +194,25 @@ setup_portals() {
 setup_lustre() {
        [ -c /dev/obd ] || mknod /dev/obd c 10 241
 
-       do_insmod $LUSTRE/class/obdclass.o || exit -1
-       do_insmod $LUSTRE/rpc/ptlrpc.o || exit -1
+       do_insmod $LUSTRE/obdclass/obdclass.o || exit -1
+       do_insmod $LUSTRE/ptlrpc/ptlrpc.o || exit -1
        do_insmod $LUSTRE/ldlm/ldlm.o || exit -1
-       do_insmod $LUSTRE/extN/extN.o
+       do_insmod $LUSTRE/extN/extN.o || \
+               echo "info: can't load extN.o module, not fatal if using ext3"
        do_insmod $LUSTRE/mds/mds.o || exit -1
-       do_insmod $LUSTRE/mds/mds_ext2.o || exit -1
-       do_insmod $LUSTRE/mds/mds_ext3.o || exit -1
-       do_insmod $LUSTRE/mds/mds_extN.o
+       #do_insmod $LUSTRE/mds/mds_ext2.o || exit -1
+       #do_insmod $LUSTRE/mds/mds_ext3.o || exit -1
+       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/ext2obd/obdext2.o || exit -1
-       do_insmod $LUSTRE/filterobd/obdfilter.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/llight/llite.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
@@ -213,7 +220,7 @@ setup_lustre() {
                return 0
        fi
 
-       $OBDCTL <<- EOF || return $rc
+       $OBDCTL <<- EOF || return $?
        newdev
        attach ptlrpc RPCDEV
        setup
@@ -228,7 +235,7 @@ setup_ldlm() {
 
        [ -c /dev/portals ] || mknod /dev/portals c 10 240
 
-       $OBDCTL <<- EOF || return $rc
+       $OBDCTL <<- EOF || return $?
        newdev
        attach ldlm LDLMDEV
        setup
@@ -268,7 +275,7 @@ setup_mds() {
        $DO_FS ${MDSFS} ${MDSDEV} ${MDSSIZE}
        MDS=${LOOPDEV}
 
-       $OBDCTL <<- EOF || return $rc
+       $OBDCTL <<- EOF || return $?
        newdev
        attach mds MDSDEV
        setup ${MDS} ${MDSFS}
@@ -321,10 +328,13 @@ setup_ost() {
                OBD=${LOOPDEV}
        fi
 
-       $OBDCTL <<- EOF || return $rc
+       $OBDCTL <<- EOF || return $?
        newdev
        attach ${OSTTYPE} OBDDEV
        setup ${OBD} ${OBDARG}
+       quit
+       EOF
+       $OBDCTL <<- EOF || return $?
        newdev
        attach ost OSTDEV
        setup \$OBDDEV
@@ -337,37 +347,73 @@ setup_server() {
 }
 
 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
+           fi
 
        $OBDCTL <<- EOF || return $rc
        newdev
-       attach osc OSCDEV
-       setup -1
+       attach osc $THEOSC
+       setup OSTDEV $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 mdc $THEMDC
+       setup MDSDEV $MDSNODE
        quit
        EOF
+        done
 }
 
+
 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
-       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_mount
 }
 
 DEBUG_ON="echo 0xffffffff > /proc/sys/portals/debug"
@@ -392,13 +438,14 @@ debug_client_on() {
 }
 
 cleanup_portals() {
+       [ -z "$NETWORK" ] && NETWORK=tcp
        $PTLCTL <<- EOF
-       setup tcp
+       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
 
@@ -493,23 +540,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() {
@@ -525,7 +594,7 @@ cleanup_rpc() {
 }
 
 cleanup_client() {
-       cleanup_mount && cleanup_osc && cleanup_rpc
+       cleanup_mount && cleanup_osc && cleanup_mdc && cleanup_rpc
 }
 
 fail() {