# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_create/zpool_create.cfg # # Given a pool vdevs list, create the pool,verify the created pool, # and destroy the pool # $1, pool name # $2, pool type, mirror, raidz, or none # $3, vdevs list # function create_pool_test { typeset pool=$1 typeset keywd=$2 typeset vdevs eval "typeset -a diskarray=($3)" for vdevs in "${diskarray[@]}";do create_pool $pool $keywd $vdevs log_must poolexists $pool destroy_pool $pool done } # # Create a ufs file system and make a file within the file # system for storage pool vdev # $1, file size # $2, file name # $3, disk name to create ufs file system # function create_blockfile { typeset size=$1 typeset file=$2 typeset disk=$3 typeset dir=`dirname $file` if [[ -d $dir ]]; then ismounted $dir ufs (( $? == 0 )) && \ log_must umount -f $dir else log_must mkdir -p $dir fi echo "y" | newfs /dev/rdsk/$disk >/dev/null 2>&1 (( $? != 0 )) && log_fail "Create ufs file system fail." log_must mount /dev/dsk/$disk $dir log_must mkfile $size $file } # # Umount the ufs filesystem and remove the mountpoint # $1, the mount point # function clean_blockfile { typeset dirs=$1 for dir in $dirs; do if [[ -d $dir ]]; then if ismounted $dir ufs; then typeset dev=$(df -lhF ufs | grep "$dir" | \ awk '{print $1}') log_must umount -f $dir create_pool ${TESTPOOL}.tmp $dev destroy_pool ${TESTPOOL}.tmp fi log_must rm -rf $dir fi done } # # Find the storage device in /etc/vfstab # function find_vfstab_dev { typeset vfstab="/etc/vfstab" typeset tmpfile="/tmp/vfstab.tmp" typeset vfstabdev typeset vfstabdevs="" typeset line cat $vfstab | grep "^/dev/dsk" >$tmpfile while read -r line do vfstabdev=`echo "$line" | awk '{print $1}'` vfstabdev=${vfstabdev%%:} vfstabdevs="$vfstabdev $vfstabdevs" done <$tmpfile rm -f $tmpfile echo $vfstabdevs } # # Save the systme current dump device configuration # function save_dump_dev { typeset dumpdev typeset fnd="Dump device" dumpdev=`dumpadm | grep "$fnd" | cut -f2 -d : | \ awk '{print $1}'` echo $dumpdev }