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

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

index 76dec5f..5c692e1 100644 (file)
@@ -428,6 +428,88 @@ test_write_disjoint() {
 }
 run_test write_disjoint "write_disjoint"
 
+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
+
+    # cancel_lru_locks mdc
+    do_nodes $clients "lctl mark \\\"cancel_lru_locks mdc start\\\";
+for d in \\\$(lctl get_param -N ldlm.namespaces.\\\*.lru_size | egrep -i mdc); do
+lctl set_param -n \\\$d=clear;
+done;
+lctl get_param ldlm.namespaces.\\\*.lock_unused_count | egrep -i mdc | grep -v '=0';
+lctl mark \\\"cancel_lru_locks mdc stop\\\"; "
+
+    do_nodes $clients " 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
+    echo wait \\\$pid;
+    wait \\\$pid || exit \\\$?;
+done"
+
+    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 || true
+[ -f "$TESTSUITELOG" ] && cat $TESTSUITELOG && grep -q FAIL $TESTSUITELOG && exit 1 || true
index 9a99f83..e175442 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 "set -x; 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);