# Skip specific tests by setting EXCEPT.
#
-SRCDIR=$(dirname $0)
-export PATH=$PWD/$SRCDIR:$SRCDIR:$PWD/$SRCDIR/../utils:$PATH:/sbin
-
ONLY=${ONLY:-"$*"}
-ALWAYS_EXCEPT="$OST_POOLS_EXCEPT"
-# bug number for skipped test: -
-# UPDATE THE COMMENT ABOVE WITH BUG NUMBERS WHEN CHANGING ALWAYS_EXCEPT!
-
-[ "$ALWAYS_EXCEPT$EXCEPT" ] &&
- echo "Skipping tests: $(echo $ALWAYS_EXCEPT $EXCEPT)"
-
-TMP=${TMP:-/tmp}
ORIG_PWD=${PWD}
-LUSTRE=${LUSTRE:-$(cd $(dirname $0)/..; echo $PWD)}
+LUSTRE=${LUSTRE:-$(dirname $0)/..}
. $LUSTRE/tests/test-framework.sh
init_test_env $@
-. ${CONFIG:=$LUSTRE/tests/cfg/$NAME.sh}
init_logging
+ALWAYS_EXCEPT="$OST_POOLS_EXCEPT"
+# bug number for skipped test: -
+# UPDATE THE COMMENT ABOVE WITH BUG NUMBERS WHEN CHANGING ALWAYS_EXCEPT!
+
+build_test_filter
+
check_and_setup_lustre
if ! combined_mgs_mds; then
error "unable to mount $MOUNT on the MGS"
fi
-# 9 12.5 (min)"
-[ "$SLOW" = "no" ] && EXCEPT_SLOW="18 23b"
-
DIR=${DIR:-$MOUNT}
assert_DIR
-build_test_filter
-
MAXFREE=${MAXFREE:-$((2000000 * OSTCOUNT))}
# OST pools tests
}
# Initialization
-remote_mds_nodsh && skip "remote MDS with nodsh" && exit 0
-remote_ost_nodsh && skip "remote OST with nodsh" && exit 0
+remote_mds_nodsh && skip "remote MDS with nodsh"
+remote_ost_nodsh && skip "remote OST with nodsh"
ost_pools_init
# Tests for new commands added
run_test 1i "pool_new should fail if poolname and fs-name are missing"
test_1j() {
- create_pool ${FSNAME},$POOL
+ do_facet mgs lctl pool_new ${FSNAME},$POOL
[[ $? -ne 0 ]] ||
error "pool_new did not fail even if poolname format was wrong"
}
run_test 1j "pool_new should fail if poolname format is wrong"
test_1k() {
- create_pool ${FSNAME}/$POOL
+ do_facet mgs lctl pool_new ${FSNAME}/$POOL
[[ $? -ne 0 ]] ||
error "pool_new did not fail even if poolname format was wrong"
}
create_pool_nofail $POOL
- TGT="$FSNAME-OST0000_UUID "
+ TGT="$FSNAME-OST0000_UUID"
do_facet mgs lctl pool_add $FSNAME.$POOL $TGT
- wait_update $HOSTNAME "lctl get_param -n lov.$FSNAME-*.pools.$POOL |
- sort -u | tr '\n' ' ' " "$TGT" || error "Add to pool failed"
+ wait_update_facet $SINGLEMDS \
+ "lctl pool_list $FSNAME.$POOL | sed '1d'" "$TGT" ||
+ error "Add $TGT to $FSNAME.$POOL failed"
RESULT=$(do_facet mgs \
"LOCALE=C $LCTL pool_add $FSNAME.$POOL $TGT 2>&1")
RC=$?
add_pool $POOL $TGT_ALL "$TGT_UUID"
mkdir -p $POOL_DIR
- $SETSTRIPE -c -1 -p $POOL $POOL_DIR
- [[ $? -eq 0 ]] || error "$SETSTRIPE -p $POOL failed."
+ $LFS setstripe -c -1 -p $POOL $POOL_DIR
+ [[ $? -eq 0 ]] || error "$LFS setstripe -p $POOL failed."
check_dir_in_pool $POOL_DIR $POOL
# If an invalid pool name is specified, the command should fail
- $SETSTRIPE -c 2 -p $INVALID_POOL $POOL_DIR 2>/dev/null
+ $LFS setstripe -c 2 -p $INVALID_POOL $POOL_DIR 2>/dev/null
[[ $? -ne 0 ]] || error "setstripe to invalid pool did not fail."
# If the pool name does not exist, the command should fail
- $SETSTRIPE -c 2 -p $NON_EXISTANT_POOL $POOL_DIR 2>/dev/null
+ $LFS setstripe -c 2 -p $NON_EXISTANT_POOL $POOL_DIR 2>/dev/null
[[ $? -ne 0 ]] || error "setstripe to non-existant pool did not fail."
# lfs setstripe should work as before if a pool name is not specified.
- $SETSTRIPE -c -1 $POOL_DIR
- [[ $? -eq 0 ]] || error "$SETSTRIPE -p $POOL_DIR failed."
- $SETSTRIPE -c -1 $POOL_FILE
- [[ $? -eq 0 ]] || error "$SETSTRIPE -p $POOL_FILE failed."
+ $LFS setstripe -c -1 $POOL_DIR
+ [[ $? -eq 0 ]] || error "$LFS setstripe -c -1 $POOL_DIR failed."
+ $LFS setstripe -c -1 $POOL_FILE
+ [[ $? -eq 0 ]] || error "$LFS setstripe -c -1 $POOL_FILE failed."
# lfs setstripe should fail if a start index that is outside the
# pool is specified.
create_pool_nofail $POOL2
add_pool $POOL2 "OST0000" "$FSNAME-OST0000_UUID "
- $SETSTRIPE -i 1 -p $POOL2 $ROOT_POOL/$tfile 2>/dev/null
+ $LFS setstripe -i 1 -p $POOL2 $ROOT_POOL/$tfile 2>/dev/null
[[ $? -ne 0 ]] ||
- error "$SETSTRIPE with start index outside the pool did not fail."
+ error "$LFS setstripe with start index outside the pool did not fail."
}
run_test 6 "getstripe/setstripe"
pool_add $pool || error "pool_add failed"
pool_add_targets $pool 0 1 || error "pool_add_targets failed"
- $SETSTRIPE -c 1 $DIR/$tdir/testfile1 --pool "$pool" || \
+ $LFS setstripe -c 1 $DIR/$tdir/testfile1 --pool "$pool" ||
error "setstripe failed"
- $SETSTRIPE -c 1 $DIR/$tdir/testfile2 --pool "$FSNAME.$pool" || \
+ $LFS setstripe -c 1 $DIR/$tdir/testfile2 --pool "$FSNAME.$pool" ||
error "setstripe failed"
mkdir $DIR/$tdir/testdir
- $SETSTRIPE -c 1 $DIR/$tdir/testdir -p "$pool" || \
+ $LFS setstripe -c 1 $DIR/$tdir/testdir -p "$pool" ||
error "setstripe failed"
- $SETSTRIPE -c 1 $DIR/$tdir/testdir -p "$FSNAME.$pool" || \
+ $LFS setstripe -c 1 $DIR/$tdir/testdir -p "$FSNAME.$pool" ||
error "setstripe failed"
rm -f $DIR/$tdir/testfile1
test_7a()
{
- [ $OSTCOUNT -lt 2 ] && skip "needs >= 2 OSTs" && return
+ [ $OSTCOUNT -lt 2 ] && skip_env "needs >= 2 OSTs"
mkdir -p $DIR/$tdir
test_7c()
{
- [ $OSTCOUNT -lt 2 ] && skip "needs >= 2 OSTs" && return
+ [ $OSTCOUNT -lt 2 ] && skip_env "needs >= 2 OSTs"
mkdir -p $DIR/$tdir
pool_add_targets $pool 0 1 || error "pool_add_targets failed"
# setstripe with the same pool name plus 1 letter
- $SETSTRIPE -c 1 $DIR/$tdir/testfile1 --pool "${pool}X" && \
+ $LFS setstripe -c 1 $DIR/$tdir/testfile1 --pool "${pool}X" &&
error "setstripe succedeed"
# setstripe with the same pool name minus 1 letter
- $SETSTRIPE -c 1 $DIR/$tdir/testfile1 --pool "${pool%?}" && \
+ $LFS setstripe -c 1 $DIR/$tdir/testfile1 --pool "${pool%?}" &&
error "setstripe succedeed"
rm -f $DIR/$tdir/testfile1
test_11() {
local POOL_ROOT=${POOL_ROOT:-$DIR/$tdir}
- [[ $OSTCOUNT -le 1 ]] && skip_env "needs >= 2 OSTs" && return
+ [[ $OSTCOUNT -le 1 ]] && skip_env "needs >= 2 OSTs"
create_pool_nofail $POOL
create_pool_nofail $POOL2
test_12() {
local POOL_ROOT=${POOL_ROOT:-$DIR/$tdir}
- [[ $OSTCOUNT -le 2 ]] && skip_env "needs >=3 OSTs" && return
+ [[ $OSTCOUNT -le 2 ]] && skip_env "needs >=3 OSTs"
create_pool_nofail $POOL
create_pool_nofail $POOL2
run_test 12 "OST Pool Membership"
test_13() {
- [[ $OSTCOUNT -le 2 ]] && skip_env "needs >= 3 OSTs" && return
+ [[ $OSTCOUNT -le 2 ]] && skip_env "needs >= 3 OSTs"
local POOL_ROOT=${POOL_ROOT:-$DIR/$tdir}
local numfiles=10
run_test 13 "Striping characteristics in a pool"
test_14() {
- [[ $OSTCOUNT -le 2 ]] && skip_env "needs >= 3 OSTs" && return
+ [[ $OSTCOUNT -le 2 ]] && skip_env "needs >= 3 OSTs"
local POOL_ROOT=${POOL_ROOT:-$DIR/$tdir}
local numfiles=100
local i
[ $OSTSIZE -gt $((MAXFREE / OSTCOUNT)) ] &&
- skip_env "OST size $OSTSIZE is larger than $((MAXFREE / OSTCOUNT))" &&
- return 0
+ skip_env "OST size $OSTSIZE is larger than $((MAXFREE / OSTCOUNT))"
create_pool_nofail $POOL
create_pool_nofail $POOL2
run_test 19 "Pools should not come into play when not specified"
test_20() {
+ [[ $OSTCOUNT -ge 2 ]] || skip_env "needs >= 2 OSTs"
+
local POOL_ROOT=${POOL_ROOT:-$DIR/$tdir}
local numfiles=12
local dir1=$POOL_ROOT/dir1
add_pool $POOL2 "$FSNAME-OST[$start-$TGT_MAX/2]" "$TGT"
create_dir $dir1 $POOL
- create_file $dir1/file1 $POOL2
+ create_file $dir1/file1 $POOL2 # Should replace $dir1 pool with $POOL2
create_dir $dir2 $POOL2
- touch $dir2/file2
- mkdir $dir3
- $SETSTRIPE -c 1 $dir3 # No pool assignment
- touch $dir3/file3
- $SETSTRIPE -c 1 $dir2/file4 # No pool assignment
+ touch $dir2/file2 # Should inherit $POOL2 from $dir2
+ mkdir $dir3 # Should inherit $POOL from $dir1
+ $LFS setstripe -c 1 $dir3 # Should remain existing $POOL
+ touch $dir3/file3 # Should inherit $POOL from $dir3
+ $LFS setstripe -c 1 $dir2/file4 # Should inherit $POOL2 from dir2
+ $LFS setstripe -S 64K $dir1/file5 # Should inderit $POOL from $dir1
check_file_in_pool $dir1/file1 $POOL2
check_file_in_pool $dir2/file2 $POOL2
-
- check_dir_not_in_pool $dir3 $POOL
check_dir_not_in_pool $dir3 $POOL2
-
- check_file_not_in_pool $dir3/file3 $POOL
check_file_not_in_pool $dir3/file3 $POOL2
-
check_file_not_in_pool $dir2/file4 $POOL
- check_file_not_in_pool $dir2/file4 $POOL2
+ check_file_not_in_pool $dir1/file5 $POOL2
+
+ if [ "$MDS1_VERSION" -ge $(version_code 2.10.54) ]; then
+ check_dir_in_pool $dir3 $POOL
+ check_file_in_pool $dir3/file3 $POOL
+ check_file_in_pool $dir2/file4 $POOL2
+ check_file_in_pool $dir1/file5 $POOL
+ fi
rm -rf $dir1
test_21() {
local POOL_ROOT=${POOL_ROOT:-$DIR/$tdir}
- [[ $OSTCOUNT -le 1 ]] && skip_env "needs >= 2 OSTs" && return
+ [[ $OSTCOUNT -le 1 ]] && skip_env "needs >= 2 OSTs"
local numfiles=12
local i=0
test_22() {
local POOL_ROOT=${POOL_ROOT:-$DIR/$tdir}
- [[ $OSTCOUNT -le 1 ]] && skip_env "needs >= 2 OSTs" && return
+ [[ $OSTCOUNT -le 1 ]] && skip_env "needs >= 2 OSTs"
local numfiles=100
test_23a() {
local POOL_ROOT=${POOL_ROOT:-$DIR/$tdir}
- [[ $OSTCOUNT -le 1 ]] && skip_env "needs >= 2 OSTs" && return
+ [[ $OSTCOUNT -le 1 ]] && skip_env "needs >= 2 OSTs"
mkdir -p $POOL_ROOT
- check_runas_id $RUNAS_ID $RUNAS_GID $RUNAS || {
+ check_runas_id $RUNAS_ID $RUNAS_GID $RUNAS ||
skip_env "User $RUNAS_ID does not exist - skipping"
- return 0
- }
local i=0
local TGT
# XXX remove the interoperability code once we drop the old server
# ( < 2.3.50) support.
- if [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.3.50) ]; then
+ if [ "$MDS1_VERSION" -lt $(version_code 2.3.50) ]; then
$LFS quotaoff -ug $MOUNT
$LFS quotacheck -ug $MOUNT
else
- do_facet mgs $LCTL conf_param $FSNAME.quota.ost=ug
+ if [[ $PERM_CMD == *"set_param -P"* ]]; then
+ do_facet mgs $PERM_CMD \
+ osd-*.$FSNAME-OST*.quota_slave.enable=ug
+ else
+ do_facet mgs $PERM_CMD $FSNAME.quota.ost=ug
+ fi
sleep 5
fi
sleep 3
$LFS quota -v -u $RUNAS_ID $dir
- $SETSTRIPE -c 1 -p $POOL $file
+ $LFS setstripe -c 1 -p $POOL $file
chown $RUNAS_ID.$RUNAS_GID $file
ls -l $file
test_23b() {
local POOL_ROOT=${POOL_ROOT:-$DIR/$tdir}
- [[ $OSTCOUNT -le 1 ]] && skip_env "needs >= 2 OSTs" && return 0
+ [[ $OSTCOUNT -le 1 ]] && skip_env "needs >= 2 OSTs"
mkdir -p $POOL_ROOT
check_runas_id $RUNAS_ID $RUNAS_GID $RUNAS || {
skip_env "User $RUNAS_ID does not exist - skipping"
- return 0
}
local i=0
local AVAIL=$(lfs_df -p $POOL $dir | awk '/summary/ { print $4 }')
[ $AVAIL -gt $maxfree ] &&
skip_env "Filesystem space $AVAIL is larger than " \
- "$maxfree limit" && return 0
+ "$maxfree limit"
echo "OSTCOUNT=$OSTCOUNT, OSTSIZE=$OSTSIZE, AVAIL=$AVAIL"
echo "MAXFREE=$maxfree, SLOW=$SLOW"
# XXX remove the interoperability code once we drop the old server
# ( < 2.3.50) support.
- if [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.3.50) ]; then
+ if [ "$MDS1_VERSION" -lt $(version_code 2.3.50) ]; then
$LFS quotaoff -ug $MOUNT
else
- do_facet mgs $LCTL conf_param $FSNAME.quota.ost=none
+ if [[ $PERM_CMD == *"set_param -P"* ]]; then
+ do_facet mgs $PERM_CMD \
+ osd-*.$FSNAME-OST*.quota_slave.enable=none
+ else
+ do_facet mgs $PERM_CMD $FSNAME.quota.ost=none
+ fi
sleep 5
fi
run_test 23b "OST pools and OOS"
test_24() {
- local POOL_ROOT=${POOL_ROOT:-$DIR/$tdir}
- [[ $OSTCOUNT -le 1 ]] && skip_env "needs >= 2 OSTs" && return
-
- local server_version=$(lustre_version_code $SINGLEMDS)
- [[ $server_version -ge $(version_code 2.8.56) ]] ||
- { skip "Need server version newer than 2.8.55"; return 0; }
+ [[ $OSTCOUNT -le 1 ]] && skip_env "needs >= 2 OSTs"
+ [[ "$MDS1_VERSION" -ge $(version_code 2.8.56) ]] ||
+ skip "Need server version newer than 2.8.55"
+ local POOL_ROOT=${POOL_ROOT:-$DIR/$tdir}
local numfiles=10
local i=0
local TGT
create_dir $POOL_ROOT/dir1 $POOL $OSTCOUNT
mkdir $POOL_ROOT/dir2
- $SETSTRIPE -p $POOL -S 65536 -i 0 -c 1 $POOL_ROOT/dir2 ||
- error "$SETSTRIPE $POOL_ROOT/dir2 failed"
+ $LFS setstripe -p $POOL -S 65536 -i 0 -c 1 $POOL_ROOT/dir2 ||
+ error "$LFS setstripe $POOL_ROOT/dir2 failed"
mkdir $POOL_ROOT/dir3
- $SETSTRIPE -S 65536 -i 0 -c 1 $POOL_ROOT/dir3 ||
- error "$SETSTRIPE $POOL_ROOT/dir3 failed"
+ $LFS setstripe -S 65536 -i 0 -c 1 $POOL_ROOT/dir3 ||
+ error "$LFS setstripe $POOL_ROOT/dir3 failed"
mkdir $POOL_ROOT/dir4
[[ "$pool" != "$pool1" ]] &&
error "Pool '$pool' not on $file:$pool1"
[[ "$count" != "$count1" ]] &&
- error "Stripe count $count not on $file:$count1"
+ [[ "$count" != "-1" ]] &&
+ error "Stripe count $count not on"\
+ "$file:$count1"
+ [[ "$count1" != "$OSTCOUNT" ]] &&
+ [[ "$count" = "-1" ]] &&
+ error "Stripe count $count1 not on"\
+ "$file:$OSTCOUNT"
[[ "$size" != "$size1" ]] && [[ "$size" != "0" ]] &&
error "Stripe size $size not on $file:$size1"
done
sleep 5
# Make sure OST0 can be striped on
- $SETSTRIPE -i 0 -c 1 $POOL_ROOT/$tfile
+ $LFS setstripe -i 0 -c 1 $POOL_ROOT/$tfile
local STR=$($LFS getstripe -i $POOL_ROOT/$tfile)
rm $POOL_ROOT/$tfile
if [[ "$STR" == "0" ]]; then
run_test 25 "Create new pool and restart MDS"
test_26() {
- [[ $OSTCOUNT -le 2 ]] && skip_env "needs >= 3 OSTs" && return
+ [[ $OSTCOUNT -le 2 ]] && skip_env "needs >= 3 OSTs"
local dev=$(mdsdevname ${SINGLEMDS//mds/})
local POOL_ROOT=${POOL_ROOT:-$DIR/$tdir}
run_test 26 "Choose other OSTs in the pool first in the creation remedy"
test_27() {
- [[ $OSTCOUNT -le 1 ]] && skip_env "Need at least 2 OSTs" && return
+ [[ $OSTCOUNT -le 1 ]] && skip_env "Need at least 2 OSTs"
local osts
local pid
create_pool_nofail $POOL
do_facet mgs lctl pool_add $FSNAME.$POOL $TGT_ALL
+ wait_update_facet $SINGLEMDS \
+ "lctl pool_list $FSNAME.$POOL | wc -l" "$((OSTCOUNT + 1))" ||
+ error "MDS: pool_list $FSNAME.$POOL failed"
osts=$(list_pool $FSNAME.$POOL)
for ost in ${osts}; do
((count--))