IDENTITY_UPCALL=false
;;
esac
- USE_OFD=${USE_OFD:-yes}
- [ "$USE_OFD" = "yes" ] && LOAD_MODULES_REMOTE=true
export LOAD_MODULES_REMOTE=${LOAD_MODULES_REMOTE:-false}
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
}
load_modules_local() {
- [ $(facet_fstype ost1) == "zfs" ] && export USE_OFD=yes
-
if [ -n "$MODPROBE" ]; then
# use modprobe
echo "Using modprobe to load modules"
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:]'
}
echo -n " ${var}=\"$value\""
done
- echo -n " USE_OFD=$USE_OFD"
-
for facet in ${facets//,/ }; do
var=${facet}_FSTYPE
if [ -n "${!var}" ]; then
local fstype=$(facet_fstype mds1)
case $fstype in
- ldiskfs )
+ ldiskfs|zfs )
#if $MGSDEV isn't defined, default is $MDSDEV1
+ #ZFS independent mgsdev should be ${FSNAME}-mgs/mgs
eval DEVPTR=${!DEVNAME:=${MDSDEV1}};;
- zfs )
- #dataset name is independent of vdev device names
- eval DEVPTR=${FSNAME}-mgs/mgs;;
* )
error "unknown fstype!";;
esac
mkfs_opts() {
local facet=$1
local dev=$2
+ local fsname=${3:-"$FSNAME"}
local type=$(facet_type $facet)
local index=$(($(facet_number $facet) - 1))
local fstype=$(facet_fstype $facet)
fi
if [ $type != MGS ]; then
- opts+=" --fsname=$FSNAME --$(lower ${type/MDS/MDT}) --index=$index"
+ opts+=" --fsname=$fsname --$(lower ${type/MDS/MDT}) \
+ --index=$index"
fi
var=${facet}failover_HOST
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
}
zconf_mount `hostname` $1 || error "mount failed"
}
-writeconf_facet () {
- local facet=$1
- local dev=$2
+writeconf_facet() {
+ local facet=$1
+ local dev=$2
- do_facet $facet "$TUNEFS --writeconf $dev"
+ stop ${facet} -f
+ rm -f ${facet}active
+ do_facet ${facet} "$TUNEFS --quiet --writeconf $dev" || return 1
+ return 0
}
writeconf_all () {
- for num in `seq $MDSCOUNT`; do
- DEVNAME=$(mdsdevname $num)
- writeconf_facet mds$num $DEVNAME
- done
+ local mdt_count=${1:-$MDSCOUNT}
+ local ost_count=${2:-$OSTCOUNT}
+ local rc=0
- for num in `seq $OSTCOUNT`; do
- DEVNAME=$(ostdevname $num)
- writeconf_facet ost$num $DEVNAME
- done
+ for num in $(seq $mdt_count); do
+ DEVNAME=$(mdsdevname $num)
+ writeconf_facet mds$num $DEVNAME || rc=$?
+ done
+
+ for num in $(seq $ost_count); do
+ DEVNAME=$(ostdevname $num)
+ writeconf_facet ost$num $DEVNAME || rc=$?
+ done
+ return $rc
}
setupall() {
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
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
+}