Whamcloud - gitweb
LU-1187 tests: Add test_mkdir in sanity for DNE.
[fs/lustre-release.git] / lustre / tests / test-framework.sh
index b941b1c..515c4d1 100644 (file)
@@ -282,8 +282,6 @@ init_test_env() {
             IDENTITY_UPCALL=false
             ;;
     esac
-    USE_OFD=${USE_OFD:-yes}
-    [ "$USE_OFD" = "yes" ] && LOAD_MODULES_REMOTE=true
 
     export LOAD_MODULES_REMOTE=${LOAD_MODULES_REMOTE:-false}
 
@@ -373,20 +371,24 @@ load_module() {
         optvar="MODOPTS_$(basename $module | tr a-z A-Z)"
         eval set -- \$$optvar
         if [ $# -eq 0 -a -n "$MODPROBECONF" ]; then
-            # Nothing in $MODOPTS_<MODULE>; try modprobe.conf
-            set -- $(grep -P "^options\\s+${BASE}" $MODPROBECONF)
-            # Get rid of "options $module"
-            (($# > 0)) && shift 2
-
-            # Ensure we have accept=all for lnet
-            if [ $(basename $module) = lnet ]; then
-                # OK, this is a bit wordy...
-                local arg accept_all_present=false
-                for arg in "$@"; do
-                    [ "$arg" = accept=all ] && accept_all_present=true
-                done
-                $accept_all_present || set -- "$@" accept=all
-            fi
+               # Nothing in $MODOPTS_<MODULE>; try modprobe.conf
+               local opt
+               opt=$(awk -v var="^options $BASE" '$0 ~ var \
+                       {gsub("'"options $BASE"'",""); print}' $MODPROBECONF)
+               set -- $(echo -n $opt)
+
+               # Ensure we have accept=all for lnet
+               if [ $(basename $module) = lnet ]; then
+                       # OK, this is a bit wordy...
+                       local arg accept_all_present=false
+
+                       for arg in "$@"; do
+                               [ "$arg" = accept=all ] && \
+                                       accept_all_present=true
+                       done
+                       $accept_all_present || set -- "$@" accept=all
+               fi
+               export $optvar="$*"
         fi
     fi
 
@@ -425,8 +427,6 @@ llite_lloop_enabled() {
 }
 
 load_modules_local() {
-       [ $(facet_fstype ost1) == "zfs" ] && export USE_OFD=yes
-
        if [ -n "$MODPROBE" ]; then
                # use modprobe
                echo "Using modprobe to load modules"
@@ -697,7 +697,7 @@ cleanup_gss() {
 facet_type() {
        local facet=$1
 
-       echo -n $facet | sed -e 's/^fs[0-9]\+//' -e 's/[0-9]\+//' |
+       echo -n $facet | sed -e 's/^fs[0-9]\+//' -e 's/[0-9_]\+//' |
                tr '[:lower:]' '[:upper:]'
 }
 
@@ -2486,8 +2486,6 @@ get_env_vars() {
                echo -n " ${var}=\"$value\""
        done
 
-       echo -n " USE_OFD=$USE_OFD"
-
        for facet in ${facets//,/ }; do
                var=${facet}_FSTYPE
                if [ -n "${!var}" ]; then
@@ -2884,21 +2882,22 @@ formatall() {
        if ! combined_mgs_mds ; then
                echo "Format mgs: $(mgsdevname)"
                add mgs $(mkfs_opts mgs $(mgsdevname)) --reformat \
-               $(mgsdevname) $(mgsvdevname) ${quiet:+>/dev/null} || exit 10
+                       $(mgsdevname) $(mgsvdevname) ${quiet:+>/dev/null} ||
+                       exit 10
        fi
 
        for num in $(seq $MDSCOUNT); do
                echo "Format mds$num: $(mdsdevname $num)"
                add mds$num $(mkfs_opts mds$num $(mdsdevname ${num})) \
-               --reformat $(mdsdevname $num) $(mdsvdevname $num) \
-               ${quiet:+>/dev/null} || exit 10
+                       --reformat $(mdsdevname $num) $(mdsvdevname $num) \
+                       ${quiet:+>/dev/null} || exit 10
        done
 
        for num in $(seq $OSTCOUNT); do
                echo "Format ost$num: $(ostdevname $num)"
                add ost$num $(mkfs_opts ost$num $(ostdevname ${num})) \
-               --reformat $(ostdevname $num) $(ostvdevname ${num}) \
-               ${quiet:+>/dev/null} || exit 10
+                       --reformat $(ostdevname $num) $(ostvdevname ${num}) \
+                       ${quiet:+>/dev/null} || exit 10
        done
 }
 
@@ -3773,6 +3772,17 @@ drop_reint_reply() {
     return $RC
 }
 
+drop_update_reply() {
+# OBD_FAIL_MDS_OBJ_UPDATE_NET
+       local index=$1
+       shift 1
+       RC=0
+       do_facet mds${index} lctl set_param fail_loc=0x188
+       do_facet client "$@" || RC=$?
+       do_facet mds${index} lctl set_param fail_loc=0
+       return $RC
+}
+
 pause_bulk() {
 #define OBD_FAIL_OST_BRW_PAUSE_BULK      0x214
     RC=0
@@ -5898,3 +5908,64 @@ generate_logname() {
 
        echo "$TESTLOG_PREFIX.$TESTNAME.$logname.$(hostname -s).log"
 }
+
+# mkdir directory on different MDTs
+test_mkdir() {
+       local option
+       local parent
+       local child
+       local path
+       local dir
+       local rc=0
+
+       if [ $# -eq 2 ]; then
+               option=$1
+               path=$2
+       else
+               path=$1
+       fi
+
+       child=${path##*/}
+       parent=${path%/*}
+
+       if [ "$parent" == "$child" ]; then
+               parent=$(pwd)
+       fi
+
+       if [ "$option" == "-p" -a -d ${parent}/${child} ]; then
+               return $rc
+       fi
+
+       # it needs to check whether there is further / in child
+       dir=$(echo $child | awk -F '/' '{print $2}')
+       if [ ! -z "$dir" ]; then
+               local subparent=$(echo $child | awk -F '/' '{ print $1 }')
+               parent=${parent}"/"${subparent}
+               child=$dir
+       fi
+
+       if [ ! -d ${parent} ]; then
+               if [ "$option" == "-p" ]; then
+                       mkdir -p ${parent}
+               else
+                       return 1
+               fi
+       fi
+
+       if [ $MDSCOUNT -le 1 ]; then
+               mkdir $option ${parent}/${child} || rc=$?
+       else
+               local mdt_idx=$($LFS getstripe -M $parent)
+
+               if [ "$mdt_idx" -ne 0 ]; then
+                       mkdir $option ${parent}/${child} || rc=$?
+                       return $rc
+               fi
+
+               local test_num=$(echo $testnum | sed -e 's/[^0-9]*//g')
+               local mdt_idx=$((test_num % MDSCOUNT))
+               echo "mkdir $mdt_idx for ${parent}/${child}"
+               $LFS setdirstripe -i $mdt_idx ${parent}/${child} || rc=$?
+       fi
+       return $rc
+}