#!/bin/bash
-set -e
######################################################################
# customize per survey
# one can specify only case=disk or case=network or case=netdisk through
# command line.
-# Perquisite: For "disk" case and "netdisk" case you need to have lustre setup
+# Prerequisite: For "disk" case and "netdisk" case you need to have lustre setup
# with one or more ost's. For "network" case you need to have all
# modules (those llmount.sh loades) loaded in kernel. And the
# 'lctl dl' output must be blank.
echo $minusn "$*"
}
+# Return a numeric version code based on a version string. The version
+# code is useful for comparison two version strings to see which is newer.
version_code() {
# split arguments like "2.3.61" into "2", "3", "61"
eval set -- $(tr "[:punct:]" " " <<< $*)
echo -n "$((($1 << 16) | ($2 << 8) | $3))"
}
+# inspired from the lustre_build_version routine in test-framework.sh
get_lustre_version() {
local host=${1:-${unique_hosts[0]}}
- remote_shell $host $lctl get_param -n version |
- awk '/^lustre:/ {print $2}'
+ local ver
+
+ ver=$(remote_shell $host "$lctl get_param -n version 2>/dev/null ||
+ $lctl lustre_build_version 2>/dev/null ||
+ $lctl --version 2>/dev/null | cut -d' ' -f2")
+ local lver=$(egrep -i "lustre: |version: " <<<$ver | head -n 1)
+ [ -n "$lver" ] && ver="$lver"
+
+ sed -e 's/.*: //' -e 's/^v//' -e 's/-.*//' -e 's/_/./g' <<<$ver |
+ cut -d. -f1-4
}
# Check whether the record size (KBytes) exceeds the maximum bulk I/O RPC size
restart_nobj=1
# machine's page size (KB)
-PAGE_SIZE=${PAGE_SIZE:-$(($(getconf PAGE_SIZE) / 1024))}
-PAGE_SIZE=${PAGE_SIZE:-4}
+PAGE_SIZE_KB=${PAGE_SIZE_KB:-$(( ${PAGE_SIZE:-$(getconf PAGE_SIZE)} / 1024))}
+PAGE_SIZE_KB=${PAGE_SIZE_KB:-4}
snap=1
clean_srv_OSS=0
exit 1
fi
# Now start client setup
- osc_names_str=$($lctl dl| grep osc | grep -v mdt | grep UP)
+ osc_names_str=$($lctl dl| grep osc | grep -v mdt | grep UP || true)
if [ -n "$osc_names_str" ]; then
echo "The existing setup must be cleaned";
exit 0;
host=${host_names[$i]}
devno=($(get_ec_devno $host "${client_names[$i]}" "${ost_names[$i]}"))
if ((${#devno[@]} != 3)); then
- exit 1
+ cleanup 2
fi
devnos[$i]=${devno[0]}
client_names[$i]=${devno[1]}
# compute parameters
total_thr=$((ndevs * thr))
total_nobj=$((ndevs * nobj))
- pages=$((rsz / PAGE_SIZE))
- actual_rsz=$((pages * PAGE_SIZE))
+ pages=$(( (rsz + PAGE_SIZE_KB - 1) / PAGE_SIZE_KB))
+ actual_rsz=$((pages * PAGE_SIZE_KB))
count=$((size * 1024 / (actual_rsz * thr)))
actual_size=$((actual_rsz * count * thr))
total_size=$((actual_size * ndevs))
rm $tmpf
if [ $first_obj = "ERROR" ]; then
print_summary "created object #s on $client_name not contiguous"
- exit 1
+ cleanup 3
fi
first_objs[$idx]=$first_obj
done # $ndevs
declare -a pidarray
for host in ${unique_hosts[@]}; do
remote_shell $host \
- "lctl set_param -n osd*.*OST*.force_sync 1"
+ "lctl set_param -n osd*.*.force_sync 1 &>/dev/null || true"
echo "starting run for test: $test rsz: $rsz " \
"threads: $thr objects: $nobj" >> ${vmstatf}_${host}
done