Whamcloud - gitweb
b=20308
authorgrev <grev>
Thu, 22 Oct 2009 15:20:20 +0000 (15:20 +0000)
committergrev <grev>
Thu, 22 Oct 2009 15:20:20 +0000 (15:20 +0000)
i=Robert.Read
statahead test: N mount points on all available clients

lustre/tests/parallel-scale.sh
lustre/tests/test-framework.sh

index ee2f2c9..bd720b1 100644 (file)
@@ -476,17 +476,20 @@ test_parallel_grouplock() {
 }
 run_test parallel_grouplock "parallel_grouplock"
 
-
 statahead_NUMMNTPTS=${statahead_NUMMNTPTS:-5}
 statahead_NUMFILES=${statahead_NUMFILES:-500000}
 
 cleanup_statahead () {
-    local mntpt_root=$1
-    local num_mntpts=$2
-        for i in $(seq 0 $num_mntpts);do
-                zconf_umount `hostname` ${mntpt_root}$i ||
-                        error_exit "Failed to umount lustre on ${mntpt_root}$i"
-        done
+    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 () {
@@ -521,29 +524,21 @@ test_statahead () {
     local mntpt_root=$TMP/mntpt/lustre
     mntopts=${MNTOPTSTATAHEAD:-$MOUNTOPT}
 
-    echo "Mounting $num_mntpts lustre clients starts"
-    trap "cleanup_statahead $mntpt_root $num_mntpts" EXIT ERR
+    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 `hostname` ${mntpt_root}$i $mntopts ||
-            error_exit "Failed to mount lustre on ${mntpt_root}$i"
+        zconf_mount_clients $clients ${mntpt_root}$i $mntopts ||
+            error_exit "Failed to mount lustre on ${mntpt_root}$i on $clients"
     done
 
-    cancel_lru_locks mdc
-
-    for i in $(seq 0 $num_mntpts); do
-        local cmd="ls -laf ${mntpt_root}$i/$dir" 
-        echo "+ $cmd"
-        $cmd > /dev/null &
-        pids="$pids $!"
-    done
+    do_rpc_nodes $clients cancel_lru_locks mdc
 
-    echo pids=$pids
-    for pid in $pids; do
-        echo wait $pid
-        wait $pid || error "$pid"
-    done
+    do_rpc_nodes $clients do_ls $mntpt_root $num_mntpts $dir
 
-    cleanup_statahead $mntpt_root $num_mntpts
+    cleanup_statahead $clients $mntpt_root $num_mntpts
 }
 
 run_test statahead "statahead test, multiple clients"
index 487dd41..682cf82 100644 (file)
@@ -562,13 +562,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
@@ -608,7 +608,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);
@@ -2804,3 +2804,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
+}
+