fi
}
-create_pool() {
- do_facet $SINGLEMDS lctl pool_new $FSNAME.$1
- local RC=$?
- # get param should return err until pool is created
- [[ $RC -ne 0 ]] && return $RC
-
- wait_update $HOSTNAME "lctl get_param -n lov.$FSNAME-*.pools.$1 \
- 2>/dev/null || echo foo" "" || RC=1
- [[ $RC -ne 0 ]] && error "pool_new failed"
- return $RC
-}
-
drain_pool() {
pool=$1
wait_update $HOSTNAME "lctl get_param -n lov.$FSNAME-*.pools.$pool" ""\
}
create_pool_nofail() {
- create_pool $1
+ create_pool $FSNAME.$1
if [[ $? != 0 ]]
then
error "Pool creation of $1 failed"
}
create_pool_fail() {
- create_pool $1
+ create_pool $FSNAME.$1
if [[ $? == 0 ]]
then
error "Pool creation of $1 succeeded; should have failed"
remote_ost_nodsh && skip "remote OST with nodsh" && exit 0
ost_pools_init
-# Tests for new commands added
+trap "cleanup_pools $FSNAME" EXIT
+# Tests for new commands added
test_1() {
echo "Creating a pool with a 1 character pool name"
create_pool_nofail p
test_11() {
local POOL_ROOT=${POOL_ROOT:-$DIR/$tdir}
- [[ $OSTCOUNT -le 1 ]] && skip "Need atleast 2 OSTs" && return
+ [[ $OSTCOUNT -le 1 ]] && skip_env "Need atleast 2 OSTs" && return
create_pool_nofail $POOL
create_pool_nofail $POOL2
test_12() {
local POOL_ROOT=${POOL_ROOT:-$DIR/$tdir}
- [[ $OSTCOUNT -le 2 ]] && skip "Need atleast 3 OSTs" && return
+ [[ $OSTCOUNT -le 2 ]] && skip_env "Need atleast 3 OSTs" && return
create_pool_nofail $POOL
create_pool_nofail $POOL2
run_test 12 "OST Pool Membership"
test_13() {
- [[ $OSTCOUNT -le 2 ]] && skip "Need atleast 3 OSTs" && return
+ [[ $OSTCOUNT -le 2 ]] && skip_env "Need atleast 3 OSTs" && return
local POOL_ROOT=${POOL_ROOT:-$DIR/$tdir}
local numfiles=10
run_test 13 "Striping characteristics in a pool"
test_14() {
- [[ $OSTCOUNT -le 2 ]] && skip "Need atleast 3 OSTs" && return
+ [[ $OSTCOUNT -le 2 ]] && skip_env "Need atleast 3 OSTs" && return
local POOL_ROOT=${POOL_ROOT:-$DIR/$tdir}
local numfiles=100
test_21() {
local POOL_ROOT=${POOL_ROOT:-$DIR/$tdir}
- [[ $OSTCOUNT -le 1 ]] && skip "Need atleast 2 OSTs" && return
+ [[ $OSTCOUNT -le 1 ]] && skip_env "Need atleast 2 OSTs" && return
local numfiles=12
local i=0
test_22() {
local POOL_ROOT=${POOL_ROOT:-$DIR/$tdir}
- [[ $OSTCOUNT -le 1 ]] && skip "Need at least 2 OSTs" && return
+ [[ $OSTCOUNT -le 1 ]] && skip_env "Need at least 2 OSTs" && return
local numfiles=100
test_23() {
local POOL_ROOT=${POOL_ROOT:-$DIR/$tdir}
- [[ $OSTCOUNT -le 1 ]] && skip "Need atleast 2 OSTs" && return
+ [[ $OSTCOUNT -le 1 ]] && skip_env "Need atleast 2 OSTs" && return
mkdir -p $POOL_ROOT
check_runas_id $TSTID $TSTID $RUNAS || {
- skip "User $RUNAS_ID does not exist - skipping"
+ skip_env "User $RUNAS_ID does not exist - skipping"
return 0
}
test_24() {
local POOL_ROOT=${POOL_ROOT:-$DIR/$tdir}
- [[ $OSTCOUNT -le 1 ]] && skip "Need atleast 2 OSTs" && return
+ [[ $OSTCOUNT -le 1 ]] && skip_env "Need atleast 2 OSTs" && return
local numfiles=10
local i=0
log "cleanup: ======================================================"
cd $ORIG_PWD
-cleanup_tests
+cleanup_pools $FSNAME
check_and_cleanup_lustre
echo '=========================== finished ==============================='
[ -f "$POOLSLOG" ] && cat $POOLSLOG && grep -q FAIL $POOLSLOG && exit 1 || true
export mdtlov=
-cleanup_200 () {
- trap 0
- test_pools || return 0
- destroy_pool $POOL
-}
+trap "cleanup_pools $FSNAME" EXIT
test_200a() {
test_pools || return 0
- do_facet mgs $LCTL pool_new $FSNAME.$POOL
-
- trap cleanup_200 EXIT
- CLEANUP_200=yes
-
- # get param should return err until pool is created
- wait_update $HOSTNAME "lctl get_param -n lov.$FSNAME-*.pools.$POOL 2>/dev/null || echo foo" "" || error "Pool creation of $POOL failed"
+ create_pool $FSNAME.$POOL || return $?
+ [ $($LFS pool_list $FSNAME | grep -c $POOL) -eq 1 ] ||
+ error "$POOL not in lfs pool_list"
}
run_test 200a "Create new pool =========================================="
test_200b() {
test_pools || return 0
- TGT=$(for i in `seq $TGTPOOL_FIRST $TGTPOOL_STEP $TGTPOOL_MAX`; do printf "$FSNAME-OST%04x_UUID " $i; done)
+ TGT=$(for i in $TGTPOOL_LIST; do printf "$FSNAME-OST%04x_UUID " $i; done)
do_facet mgs $LCTL pool_add $FSNAME.$POOL \
$FSNAME-OST[$TGTPOOL_FIRST-$TGTPOOL_MAX/$TGTPOOL_STEP]
- wait_update $HOSTNAME "lctl get_param -n lov.$FSNAME-*.pools.$POOL | sort -u | tr '\n' ' ' " "$TGT" || error "Add to pool failed"
+
+ wait_update $HOSTNAME "lctl get_param -n lov.$FSNAME-*.pools.$POOL | sort -u | tr '\n' ' ' " "$TGT" ||
+ error "Add to pool failed"
}
run_test 200b "Add targets to a pool ===================================="
TGT=$($LCTL get_param -n lov.$FSNAME-*.pools.$POOL | head -1)
do_facet mgs $LCTL pool_remove $FSNAME.$POOL $TGT
- wait_update $HOSTNAME "lctl get_param -n lov.$FSNAME-*.pools.$POOL | grep $TGT" "" || error "$TGT not removed from $FSNAME.$POOL"
+ wait_update $HOSTNAME "lctl get_param -n lov.$FSNAME-*.pools.$POOL | grep $TGT" "" ||
+ error "$TGT not removed from $FSNAME.$POOL"
}
run_test 201a "Remove a target from a pool ============================="
do
do_facet mgs $LCTL pool_remove $FSNAME.$POOL $TGT
done
- wait_update $HOSTNAME "lctl get_param -n lov.$FSNAME-*.pools.$POOL" ""\
- || error "Pool $FSNAME.$POOL cannot be drained"
+ wait_update $HOSTNAME "lctl get_param -n lov.$FSNAME-*.pools.$POOL" "" ||
+ error "Pool $FSNAME.$POOL cannot be drained"
# striping on an empty/nonexistant pool should fall back to "pool of everything"
touch ${POOL_DIR}/$tfile || error "failed to use fallback striping for empty pool"
# setstripe on an empty pool should fail
error "expected failure when creating file with missing pool"
# get param should return err once pool is gone
- wait_update $HOSTNAME "lctl get_param -n lov.$FSNAME-*.pools.$POOL 2>/dev/null || echo foo" "foo" && unset CLEANUP_200 && trap 0 && return 0
+ if wait_update $HOSTNAME "lctl get_param -n lov.$FSNAME-*.pools.$POOL 2>/dev/null ||
+ echo foo" "foo"; then
+ remove_pool_from_list $FSNAME.$POOL
+ return 0
+ fi
error "Pool $FSNAME.$POOL is not destroyed"
}
run_test 201c "Remove a pool ============================================"
-[ "$CLEANUP_200" ] && cleanup_200
+cleanup_pools $FSNAME
test_202() {
$LFS setstripe -c 2 -s 1048576 $DIR/$tfile
*) EXT=".ko"; USE_QUOTA=yes;;
esac
+pool_list () {
+ do_facet mgs lctl pool_list $1
+}
+
+create_pool() {
+ local fsname=${1%%.*}
+ local poolname=${1##$fsname.}
+
+ do_facet mgs lctl pool_new $1
+ local RC=$?
+ # get param should return err unless pool is created
+ [[ $RC -ne 0 ]] && return $RC
+
+ wait_update $HOSTNAME "lctl get_param -n lov.$fsname-*.pools.$poolname \
+ 2>/dev/null || echo foo" "" || RC=1
+ if [[ $RC -eq 0 ]]; then
+ add_pool_to_list $1
+ else
+ error "pool_new failed $1"
+ fi
+ return $RC
+}
+
+add_pool_to_list () {
+ local fsname=${1%%.*}
+ local poolname=${1##$fsname.}
+
+ local listvar=${fsname}_CREATED_POOLS
+ eval export ${listvar}=$(expand_list ${!listvar} $poolname)
+}
+
+remove_pool_from_list () {
+ local fsname=${1%%.*}
+ local poolname=${1##$fsname.}
+
+ local listvar=${fsname}_CREATED_POOLS
+ eval export ${listvar}=$(exclude_items_from_list ${!listvar} $poolname)
+}
module_loaded () {
/sbin/lsmod | grep -q $1
do_facet mgs lctl pool_destroy $1
}
+# <fsname>.<poolname> or <poolname>
destroy_pool() {
+ local fsname=${1%%.*}
+ local poolname=${1##$fsname.}
+
+ [[ x$fsname = x$poolname ]] && fsname=$FSNAME
+
local RC
- do_facet mds lctl pool_list $FSNAME.$1
- RC=$?
- [[ $RC -ne 0 ]] && return $RC
+ pool_list $fsname.$poolname || return $?
- destroy_pool_int $FSNAME.$1
+ destroy_pool_int $fsname.$poolname
RC=$?
[[ $RC -ne 0 ]] && return $RC
- wait_update $HOSTNAME "lctl get_param -n lov.$FSNAME-*.pools.$1 \
- 2>/dev/null || echo foo" "foo" && return 0
+ wait_update $HOSTNAME "lctl get_param -n lov.$fsname-*.pools.$poolname \
+ 2>/dev/null || echo foo" "foo" || RC=1
+
+ if [[ $RC -eq 0 ]]; then
+ remove_pool_from_list $fsname.$poolname
+ else
+ error "destroy pool failed $1"
+ fi
+ return $RC
+}
+
+destroy_pools () {
+ local fsname=${1:-$FSNAME}
+ local poolname
+ local listvar=${fsname}_CREATED_POOLS
+
+ pool_list $fsname
+
+ [ x${!listvar} = x ] && return 0
+
+ echo destroy the created pools: ${!listvar}
+ for poolname in ${!listvar//,/ }; do
+ destroy_pool $fsname.$poolname
+ done
+}
+
+cleanup_pools () {
+ local fsname=${1:-$FSNAME}
+ trap 0
+ destroy_pools $fsname
}
gather_logs () {