tests = ['zpool_detach_001_neg']
# DISABLED: Requires full FMA support in ZED
-# zpool_expand_* - https://github.com/zfsonlinux/zfs/issues/2437
-#[tests/functional/cli_root/zpool_expand]
-#tests = ['zpool_expand_001_pos', 'zpool_expand_002_pos',
-# 'zpool_expand_003_neg']
+# zpool_expand_001_pos - https://github.com/zfsonlinux/zfs/issues/2437
+# zpool_expand_003_pos - https://github.com/zfsonlinux/zfs/issues/2437
+[tests/functional/cli_root/zpool_expand]
+tests = ['zpool_expand_002_pos']
# DISABLED:
# zpool_export_004_pos - https://github.com/zfsonlinux/zfs/issues/3484
#
# Copyright (c) 2016 by Delphix. All rights reserved.
+# Copyright (c) 2017 Lawrence Livermore National Security, LLC.
#
. $STF_SUITE/include/commands.cfg
export TESTDIR1=${TEST_BASE_DIR%%/}/testdir1$$
export TESTDIR2=${TEST_BASE_DIR%%/}/testdir2$$
+# some temp files
+export TEMPFILE=${TEST_BASE_DIR%%/}/tempfile$$
+export TEMPFILE0=${TEST_BASE_DIR%%/}/tempfile0$$
+export TEMPFILE1=${TEST_BASE_DIR%%/}/tempfile1$$
+export TEMPFILE2=${TEST_BASE_DIR%%/}/tempfile2$$
+
export ZFSROOT=
export TESTSNAP=testsnap$$
# Use is subject to license terms.
# Copyright (c) 2012, 2015 by Delphix. All rights reserved.
# Copyright 2016 Nexenta Systems, Inc.
+# Copyright (c) 2017 Lawrence Livermore National Security, LLC.
#
. ${STF_TOOLS}/include/logapi.shlib
# Simple function to get the specified property of pool. If unable to
# get the property then exits.
#
+# Note property is in 'parsable' format (-p)
+#
function get_pool_prop # property pool
{
typeset prop_val
typeset pool=$2
if poolexists $pool ; then
- prop_val=$($ZPOOL get $prop $pool 2>/dev/null | $TAIL -1 | \
+ prop_val=$($ZPOOL get -pH $prop $pool 2>/dev/null | $TAIL -1 | \
$AWK '{print $3}')
if [[ $? -ne 0 ]]; then
log_note "Unable to get $prop property for pool " \
#
-export org_size=1g
-export exp_size=2g
+export org_size=$MINVDEVSIZE
+export exp_size=$((2*$org_size))
export VFS=$TESTPOOL/$TESTFS
-
-export EX_1GB=1073741824
-export EX_3GB=3221225472
if [[ $zfs_expand_size > $zfs_prev_size ]]; then
# check for zpool history for the pool size expansion
if [[ $type == " " ]]; then
+ typeset expansion_size=$(($exp_size-$org_size))
typeset size_addition=$($ZPOOL history -il $TESTPOOL1 |\
$GREP "pool '$TESTPOOL1' size:" | \
$GREP "vdev online" | \
- $GREP "(+${EX_1GB}" | wc -l)
+ $GREP "(+${expansion_size}" | wc -l)
if [[ $size_addition -ne $i ]]; then
log_fail "pool $TESTPOOL1 is not autoexpand " \
"after LUN expansion"
fi
elif [[ $type == "mirror" ]]; then
+ typeset expansion_size=$(($exp_size-$org_size))
$ZPOOL history -il $TESTPOOL1 | \
$GREP "pool '$TESTPOOL1' size:" | \
$GREP "vdev online" | \
- $GREP "(+${EX_1GB})" >/dev/null 2>&1
+ $GREP "(+${expansion_size})" >/dev/null 2>&1
if [[ $? -ne 0 ]] ; then
log_fail "pool $TESTPOOL1 is not autoexpand " \
"after LUN expansion"
fi
else
+ typeset expansion_size=$((3*($exp_size-$org_size)))
$ZPOOL history -il $TESTPOOL1 | \
$GREP "pool '$TESTPOOL1' size:" | \
$GREP "vdev online" | \
- $GREP "(+${EX_3GB})" >/dev/null 2>&1
+ $GREP "(+${expansion_size})" >/dev/null 2>&1
if [[ $? -ne 0 ]]; then
log_fail "pool $TESTPOOL is not autoexpand " \
#
# Copyright (c) 2012, 2015 by Delphix. All rights reserved.
+# Copyright (c) 2017 Lawrence Livermore National Security, LLC.
#
. $STF_SUITE/include/libtest.shlib
#
#
# STRATEGY:
-# 1) Create a pool
-# 2) Create volume on top of the pool
-# 3) Create pool by using the zvols
-# 4) Expand the vol size by zfs set volsize
-# 5 Use zpool online -e to online the zvol vdevs
-# 6) Check that the pool size was expaned
+# 1) Create 3 files
+# 2) Create a pool backed by the files
+# 3) Expand the files' size with truncate
+# 4) Use zpool online -e to online the vdevs
+# 5) Check that the pool size was expanded
#
verify_runnable "global"
fi
for i in 1 2 3; do
- if datasetexists $VFS/vol$i; then
- log_must $ZFS destroy $VFS/vol$i
- fi
+ [ -e ${TEMPFILE}.$i ] && log_must $RM ${TEMPFILE}.$i
done
}
log_assert "zpool can expand after zpool online -e zvol vdevs on LUN expansion"
-for i in 1 2 3; do
- log_must $ZFS create -V $org_size $VFS/vol$i
-done
for type in " " mirror raidz raidz2; do
- log_must $ZPOOL create $TESTPOOL1 $type ${ZVOL_DEVDIR}/$VFS/vol1 \
- ${ZVOL_DEVDIR}/$VFS/vol2 ${ZVOL_DEVDIR}/$VFS/vol3
+ for i in 1 2 3; do
+ log_must $TRUNCATE -s $org_size ${TEMPFILE}.$i
+ done
+
+ log_must $ZPOOL create $TESTPOOL1 $type $TEMPFILE.1 \
+ $TEMPFILE.2 $TEMPFILE.3
typeset autoexp=$(get_pool_prop autoexpand $TESTPOOL1)
$AWK '{print $3}')
for i in 1 2 3; do
- log_must $ZFS set volsize=$exp_size $VFS/vol$i
+ log_must $TRUNCATE -s $exp_size ${TEMPFILE}.$i
done
for i in 1 2 3; do
- log_must $ZPOOL online -e $TESTPOOL1 ${ZVOL_DEVDIR}/$VFS/vol$i
+ log_must $ZPOOL online -e $TESTPOOL1 ${TEMPFILE}.$i
done
$SYNC
if [[ $zfs_expand_size -gt $zfs_prev_size ]]; then
# check for zpool history for the pool size expansion
if [[ $type == " " ]]; then
+ typeset expansion_size=$(($exp_size-$org_size))
typeset size_addition=$($ZPOOL history -il $TESTPOOL1 \
| $GREP "pool '$TESTPOOL1' size:" | \
$GREP "vdev online" | \
- $GREP "(+${EX_1GB}" | wc -l)
+ $GREP "(+${expansion_size}" | wc -l)
if [[ $size_addition -ne $i ]]; then
log_fail "pool $TESTPOOL1 is not autoexpand " \
"after LUN expansion"
fi
elif [[ $type == "mirror" ]]; then
+ typeset expansion_size=$(($exp_size-$org_size))
$ZPOOL history -il $TESTPOOL1 | \
$GREP "pool '$TESTPOOL1' size:" | \
$GREP "vdev online" | \
- $GREP "(+${EX_1GB})" >/dev/null 2>&1
+ $GREP "(+${expansion_size})" >/dev/null 2>&1
if [[ $? -ne 0 ]]; then
log_fail "pool $TESTPOOL1 is not autoexpand " \
"after LUN expansion"
fi
else
+ typeset expansion_size=$((3*($exp_size-$org_size)))
$ZPOOL history -il $TESTPOOL1 | \
$GREP "pool '$TESTPOOL1' size:" | \
$GREP "vdev online" | \
- $GREP "(+${EX_3GB})" >/dev/null 2>&1
+ $GREP "(+${expansion_size})" >/dev/null 2>&1
if [[ $? -ne 0 ]] ; then
log_fail "pool $TESTPOOL1 is not autoexpand " \
"expansion"
fi
log_must $ZPOOL destroy $TESTPOOL1
- for i in 1 2 3; do
- log_must $ZFS set volsize=$org_size $VFS/vol$i
- done
done
log_pass "zpool can expand after zpool online -e zvol vdevs on LUN expansion"