diff --git a/tests/runfiles/linux.run b/tests/runfiles/linux.run index 06bd8b6a421f..1ef1ccf3c7a4 100644 --- a/tests/runfiles/linux.run +++ b/tests/runfiles/linux.run @@ -275,10 +275,10 @@ post = 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 diff --git a/tests/zfs-tests/include/default.cfg.in b/tests/zfs-tests/include/default.cfg.in index ef34d2b90b62..a3e4881df0d3 100644 --- a/tests/zfs-tests/include/default.cfg.in +++ b/tests/zfs-tests/include/default.cfg.in @@ -26,6 +26,7 @@ # # Copyright (c) 2016 by Delphix. All rights reserved. +# Copyright (c) 2017 Lawrence Livermore National Security, LLC. # . $STF_SUITE/include/commands.cfg @@ -129,6 +130,12 @@ export TESTDIR0=${TEST_BASE_DIR%%/}/testdir0$$ 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$$ diff --git a/tests/zfs-tests/include/libtest.shlib b/tests/zfs-tests/include/libtest.shlib index da80407a962f..4493d97cdb28 100644 --- a/tests/zfs-tests/include/libtest.shlib +++ b/tests/zfs-tests/include/libtest.shlib @@ -25,6 +25,7 @@ # 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 @@ -1041,6 +1042,8 @@ function get_prop # property dataset # 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 @@ -1048,7 +1051,7 @@ function get_pool_prop # property pool 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 " \ diff --git a/tests/zfs-tests/tests/functional/cli_root/zpool_expand/zpool_expand.cfg b/tests/zfs-tests/tests/functional/cli_root/zpool_expand/zpool_expand.cfg index 16df1d91d322..e15471e22743 100644 --- a/tests/zfs-tests/tests/functional/cli_root/zpool_expand/zpool_expand.cfg +++ b/tests/zfs-tests/tests/functional/cli_root/zpool_expand/zpool_expand.cfg @@ -29,10 +29,7 @@ # -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 diff --git a/tests/zfs-tests/tests/functional/cli_root/zpool_expand/zpool_expand_001_pos.ksh b/tests/zfs-tests/tests/functional/cli_root/zpool_expand/zpool_expand_001_pos.ksh index a063b083bfd7..06ff6f9d5b8a 100755 --- a/tests/zfs-tests/tests/functional/cli_root/zpool_expand/zpool_expand_001_pos.ksh +++ b/tests/zfs-tests/tests/functional/cli_root/zpool_expand/zpool_expand_001_pos.ksh @@ -102,30 +102,33 @@ for type in " " mirror raidz raidz2; do 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 " \ diff --git a/tests/zfs-tests/tests/functional/cli_root/zpool_expand/zpool_expand_002_pos.ksh b/tests/zfs-tests/tests/functional/cli_root/zpool_expand/zpool_expand_002_pos.ksh index ce27e22320b8..180bc85489d0 100755 --- a/tests/zfs-tests/tests/functional/cli_root/zpool_expand/zpool_expand_002_pos.ksh +++ b/tests/zfs-tests/tests/functional/cli_root/zpool_expand/zpool_expand_002_pos.ksh @@ -27,6 +27,7 @@ # # Copyright (c) 2012, 2015 by Delphix. All rights reserved. +# Copyright (c) 2017 Lawrence Livermore National Security, LLC. # . $STF_SUITE/include/libtest.shlib @@ -39,12 +40,11 @@ # # # 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" @@ -56,9 +56,7 @@ function cleanup 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 } @@ -66,13 +64,14 @@ log_onexit cleanup 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) @@ -85,11 +84,11 @@ for type in " " mirror raidz raidz2; do $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 @@ -106,30 +105,33 @@ for type in " " mirror raidz raidz2; do 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 " \ @@ -141,8 +143,5 @@ for type in " " mirror raidz raidz2; do "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"