X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Ftests%2Ffunctions.sh;h=1807bb8d1771340156db269a6b41dd5ff7022f58;hb=56f69854dae234fa974ab4f1dff909aea601a592;hp=f3e8909bc92e37b109fc31b2231487db63019bb7;hpb=e16e3d46ee8c44e691c5cd3d25161f2f297fa0fd;p=fs%2Flustre-release.git diff --git a/lustre/tests/functions.sh b/lustre/tests/functions.sh index f3e8909..1807bb8 100644 --- a/lustre/tests/functions.sh +++ b/lustre/tests/functions.sh @@ -126,35 +126,35 @@ $msg" # # In the second usage the new value is appended to the old. setmodopts() { - local _append=false + local _append=false - if [ "$1" = -a ]; then - _append=true - shift - fi + if [ "$1" = -a ]; then + _append=true + shift + fi - local _var=MODOPTS_$1 - local _newvalue=$2 - local _savevar=$3 - local _oldvalue + local _var=MODOPTS_$1 + local _newvalue=$2 + local _savevar=$3 + local _oldvalue - # Dynamic naming of variables is a pain in bash. In ksh93 we could - # write "nameref opts_var=${modname}_MODOPTS" then assign directly - # to opts_var. Associative arrays would also help, alternatively. - # Alas, we're stuck with eval until all distros move to a more recent - # version of bash. Fortunately we don't need to eval unset and export. + # Dynamic naming of variables is a pain in bash. In ksh93 we could + # write "nameref opts_var=${modname}_MODOPTS" then assign directly + # to opts_var. Associative arrays would also help, alternatively. + # Alas, we're stuck with eval until all distros move to a more recent + # version of bash. Fortunately we don't need to eval unset and export. - if [ -z "$_newvalue" ]; then - unset $_var - return 0 - fi + if [ -z "$_newvalue" ]; then + unset $_var + return 0 + fi - _oldvalue=${!var} - $_append && _newvalue="$_oldvalue $_newvalue" - export $_var="$_newvalue" - echo setmodopts: ${_var}=${_newvalue} + _oldvalue=${!_var} + $_append && _newvalue="$_oldvalue $_newvalue" + export $_var="$_newvalue" + echo setmodopts: ${_var}=${_newvalue} - [ -n "$_savevar" ] && eval $_savevar=\""$_oldvalue"\" + [ -n "$_savevar" ] && eval $_savevar=\""$_oldvalue"\" } echoerr () { echo "$@" 1>&2 ; } @@ -169,26 +169,26 @@ signaled() { } mpi_run () { - local mpirun="$MPIRUN $MPIRUN_OPTIONS --oversubscribe" - local command="$mpirun $@" - local mpilog=$TMP/mpi.log - local rc - - if [ -n "$MPI_USER" -a "$MPI_USER" != root -a -n "$mpirun" ]; then - echo "+ chmod 0777 $MOUNT" - chmod 0777 $MOUNT - command="su $MPI_USER sh -c \"$command \"" - fi + local mpirun="$MPIRUN $MPIRUN_OPTIONS" + local command="$mpirun $@" + local mpilog=$TMP/mpi.log + local rc + + if [ -n "$MPI_USER" -a "$MPI_USER" != root -a -n "$mpirun" ]; then + echo "+ chmod 0777 $MOUNT" + chmod 0777 $MOUNT + command="su $MPI_USER bash -c \"$command \"" + fi - ls -ald $MOUNT - echo "+ $command" - eval $command 2>&1 | tee $mpilog || true + ls -ald $MOUNT + echo "+ $command" + eval $command 2>&1 | tee $mpilog || true - rc=${PIPESTATUS[0]} - if [ $rc -eq 0 ] && grep -q "p4_error:" $mpilog ; then - rc=1 - fi - return $rc + rc=${PIPESTATUS[0]} + if [ $rc -eq 0 ] && grep -q "p4_error:" $mpilog ; then + rc=1 + fi + return $rc } nids_list () { @@ -282,6 +282,25 @@ print_opts () { [ -e $MACHINEFILE ] && cat $MACHINEFILE } +is_lustre () { + [ "$(stat -f -c %T $1)" = "lustre" ] +} + +setstripe_getstripe () { + local file=$1 + shift + local params=$@ + + is_lustre $file || return 0 + + if [ -n "$params" ]; then + $LFS setstripe $params $file || + error "setstripe $params failed" + fi + $LFS getstripe $file || + error "getstripe $file failed" +} + run_compilebench() { local dir=${1:-$DIR} local cbench_DIR=${cbench_DIR:-""} @@ -314,7 +333,8 @@ run_compilebench() { # for new "test_foo" functions names # local testdir=$DIR/$tdir local testdir=$dir/d0.compilebench.$$ - mkdir -p $testdir + test_mkdir -p $testdir + setstripe_getstripe $testdir $cbench_STRIPEPARAMS local savePWD=$PWD cd $cbench_DIR @@ -347,7 +367,9 @@ run_metabench() { print_opts METABENCH clients mbench_NFILES mbench_THREADS local testdir=$dir/d0.metabench - mkdir -p $testdir + test_mkdir -p $testdir + setstripe_getstripe $testdir $mbench_STRIPEPARAMS + # mpi_run uses mpiuser chmod 0777 $testdir @@ -395,7 +417,9 @@ run_simul() { print_opts SIMUL clients simul_REP simul_THREADS local testdir=$DIR/d0.simul - mkdir -p $testdir + test_mkdir $testdir + setstripe_getstripe $testdir $simul_STRIPEPARAMS + # mpi_run uses mpiuser chmod 0777 $testdir @@ -436,16 +460,34 @@ run_mdtest() { local mdtest_custom_params=${mdtest_custom_params:-""} local type=${1:-"ssf"} + local mdtest_Nmntp=${mdtest_Nmntp:-1} + + if [ $type = "ssf" ] && [ $mdtest_Nmntp -ne 1 ]; then + skip "shared directory mode is not compatible" \ + "with multiple directory paths" + fi + # FIXME # Need space estimation here. print_opts MDTEST mdtest_iteration mdtest_THREADS mdtest_nFiles local testdir=$DIR/d0.mdtest - mkdir -p $testdir - # mpi_run uses mpiuser + test_mkdir $testdir + setstripe_getstripe $testdir $mdtest_STRIPEPARAMS chmod 0777 $testdir + for ((i=1; i $qos_prec_objs + "lod.$FSNAME-MDT0000*.qos_threshold_rr" > $qos_prec_objs save_lustre_params mds1 \ "osp.$FSNAME-OST*-osc-MDT0000.create_count" >> $qos_prec_objs @@ -998,10 +1058,17 @@ run_rr_alloc() { foeo_calc=$((rr_alloc_NFILES * total_MNTPTS / OSTCOUNT)) local create_count=$((2 * foeo_calc)) - do_facet mds1 "$LCTL set_param -n \ - lov.$FSNAME-MDT0000*.qos_threshold_rr 100 \ - osp.$FSNAME-OST*-osc-MDT0000.create_count $create_count" || - error "failed while setting qos_threshold_rr & creat_count" + + # create_count accepted values: + # [OST_MIN_PRECREATE=32, OST_MAX_PRECREATE=20000] + # values exceeding OST_MAX_PRECREATE are lowered to the maximum. + [[ $create_count -lt 32 ]] && create_count=32 + local i + for i in $(seq $MDSCOUNT); do + do_facet mds$i "$LCTL set_param -n \ + lod.$FSNAME-MDT*.qos_threshold_rr=100 \ + osp.$FSNAME-OST*-osc-MDT*.create_count=$create_count" + done # Create few temporary files in order to increase the precreated objects # to a desired value, before starting 'rr_alloc' app. Due to default @@ -1096,7 +1163,9 @@ run_fs_test() { print_opts FS_TEST clients fs_test_threads fs_test_objsize MACHINEFILE - mkdir -p $testdir + test_mkdir $testdir + setstripe_getstripe $testdir $fs_test_STRIPEPARAMS + # mpi_run uses mpiuser chmod 0777 $testdir @@ -1166,7 +1235,8 @@ run_fio() { [ x$FIO = x ] && skip_env "FIO not found" - mkdir -p $testdir + test_mkdir $testdir + setstripe_getstripe $testdir $fio_STRIPEPARAMS # use fio job file if exists, # create a simple one if missing @@ -1235,7 +1305,8 @@ run_xdd() { print_opts XDD clients xdd_queuedepth xdd_blocksize xdd_reqsize \ xdd_mbytes xdd_passes xdd_rwratio - mkdir -p $testdir + test_mkdir $testdir + setstripe_getstripe $testdir $xdd_STRIPEPARAMS local files="" # Target files creates based on the given number of targets