From: grev Date: Tue, 27 Oct 2009 10:33:19 +0000 (+0000) Subject: b=20308 X-Git-Tag: GIT_EPOCH_B_HD_KDMU~144 X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=commitdiff_plain;h=aa9e81ba4b97850105cc4d7b8cdd212e5ca5e9db b=20308 i=Robert.Read statahead test: N mountpoints on all available clients --- diff --git a/lustre/tests/parallel-scale.sh b/lustre/tests/parallel-scale.sh index a7613e0..5dac40a 100644 --- a/lustre/tests/parallel-scale.sh +++ b/lustre/tests/parallel-scale.sh @@ -479,6 +479,73 @@ test_parallel_grouplock() { } run_test parallel_grouplock "parallel_grouplock" +statahead_NUMMNTPTS=${statahead_NUMMNTPTS:-5} +statahead_NUMFILES=${statahead_NUMFILES:-500000} + +cleanup_statahead () { + trap 0 + + local clients=$1 + local mntpt_root=$2 + local num_mntpts=$3 + + for i in $(seq 0 $num_mntpts);do + zconf_umount_clients $clients ${mntpt_root}$i || + error_exit "Failed to umount lustre on ${mntpt_root}$i" + done +} + +test_statahead () { + + # create large dir + + local dir=d0.statahead + # FIXME has to use DIR + local testdir=$DIR/$dir + + mkdir -p $testdir + + local num_files=$statahead_NUMFILES + + local IFree=$(inodes_available) + if [ $IFree -lt $num_files ]; then + num_files=$IFree + fi + + cancel_lru_locks mdc + + log "createmany -o $testdir/f-%d $num_files" + createmany -o $testdir/$f-%d $num_files + + local rc=$? + if [ $rc != 0 ] ; then + error "createmany failed to create $rc" + return $rc + fi + + local num_mntpts=$statahead_NUMMNTPTS + local mntpt_root=$TMP/mntpt/lustre + mntopts=${MNTOPTSTATAHEAD:-$MOUNTOPT} + + local clients=$CLIENTS + [ -z $clients ] && clients=$(hostname) + + echo "Mounting $num_mntpts lustre clients starts on $clients" + trap "cleanup_statahead $clients $mntpt_root $num_mntpts" EXIT ERR + for i in $(seq 0 $num_mntpts);do + zconf_mount_clients $clients ${mntpt_root}$i $mntopts || + error_exit "Failed to mount lustre on ${mntpt_root}$i on $clients" + done + + do_rpc_nodes $clients cancel_lru_locks mdc + + do_rpc_nodes $clients do_ls $mntpt_root $num_mntpts $dir + + cleanup_statahead $clients $mntpt_root $num_mntpts +} + +run_test statahead "statahead test, multiple clients" + equals_msg `basename $0`: test complete, cleaning up check_and_cleanup_lustre [ -f "$TESTSUITELOG" ] && cat $TESTSUITELOG && grep -q FAIL $TESTSUITELOG && exit 1 || true diff --git a/lustre/tests/test-framework.sh b/lustre/tests/test-framework.sh index 302fcf5..aa76cc4 100644 --- a/lustre/tests/test-framework.sh +++ b/lustre/tests/test-framework.sh @@ -700,14 +700,13 @@ sanity_mount_check () { # mount clients if not mouted zconf_mount_clients() { - local OPTIONS local clients=$1 local mnt=$2 - + local OPTIONS=${3:-$MOUNTOPT} # Only supply -o to mount if we have options - if [ -n "$MOUNTOPT" ]; then - OPTIONS="-o $MOUNTOPT" + if [ "$OPTIONS" ]; then + OPTIONS="-o $OPTIONS" fi local device=$MGSNID:/$FSNAME if [ -z "$mnt" -o -z "$FSNAME" ]; then @@ -747,7 +746,7 @@ zconf_umount_clients() { echo "Stopping clients: $clients $mnt (opts:$force)" do_nodes $clients "running=\\\$(grep -c $mnt' ' /proc/mounts); if [ \\\$running -ne 0 ] ; then -echo Stopping client \\\$(hostname) client $mnt opts:$force; +echo Stopping client \\\$(hostname) $mnt opts:$force; lsof -t $mnt || need_kill=no; if [ "x$force" != "x" -a "x\\\$need_kill" != "xno" ]; then pids=\\\$(lsof -t $mnt | sort -u); @@ -3208,3 +3207,26 @@ cleanup_logs () { [ -n ${TESTSUITE} ] && do_nodes $list "rm -f $TMP/*${TESTSUITE}*" || true } +do_ls () { + local mntpt_root=$1 + local num_mntpts=$2 + local dir=$3 + local i + local cmd + local pids + local rc=0 + + for i in $(seq 0 $num_mntpts); do + cmd="ls -laf ${mntpt_root}$i/$dir" + echo + $cmd; + $cmd > /dev/null & + pids="$pids $!" + done + echo pids=$pids + for pid in $pids; do + wait $pid || rc=$? + done + + return $rc +} +