X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Ftests%2Fcommon.sh;h=fe77905c538dfb4c950847bf796ef40ec66d684c;hb=cee4763f010a922b5e2b750c10290463d0ef9189;hp=dd2b36fa8a0c932a7cf2e8769866019b60d24342;hpb=10cd01ded389754532a3cdc96f4ae5d63149713f;p=fs%2Flustre-release.git diff --git a/lustre/tests/common.sh b/lustre/tests/common.sh index dd2b36f..fe77905 100644 --- a/lustre/tests/common.sh +++ b/lustre/tests/common.sh @@ -4,7 +4,7 @@ export PATH=$PATH:/sbin:/usr/sbin [ -d /r ] && R=/r PORTALS=$SRCDIR../../portals -LUSTRE=$SRCDIR../../lustre +LUSTRE=$SRCDIR.. PTLCTL=$PORTALS/linux/utils/ptlctl DBGCTL=$PORTALS/linux/utils/debugctl @@ -28,7 +28,14 @@ do_insmod() { [ "$MODULE" ] || fail "usage: $0 " [ -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 " + 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,106 @@ 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_ost $1 + setup_mds $1 && setup_mds_lov $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 } DEBUG_ON="echo 0xffffffff > /proc/sys/portals/debug" @@ -402,19 +486,22 @@ 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 kqswnal + do_rmmod ksocknal + do_rmmod portals } cleanup_lustre() { @@ -424,23 +511,24 @@ cleanup_lustre() { losetup -d ${LOOP}1 losetup -d ${LOOP}2 - rmmod llite - rmmod mdc + do_rmmod llite + do_rmmod lov + do_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 + do_rmmod mds_extN + do_rmmod mds_ext3 + do_rmmod mds_ext2 + do_rmmod mds + do_rmmod ost + do_rmmod osc + do_rmmod obdecho + do_rmmod obdfilter + do_rmmod obdext2 + do_rmmod extN - rmmod ldlm - rmmod ptlrpc - rmmod obdclass + do_rmmod ldlm + do_rmmod ptlrpc + do_rmmod obdclass } cleanup_ldlm() { @@ -503,23 +591,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 +645,7 @@ cleanup_rpc() { } cleanup_client() { - cleanup_mount && cleanup_osc && cleanup_rpc + cleanup_mount && cleanup_osc && cleanup_mdc && cleanup_rpc } fail() {