1# 2# CDDL HEADER START 3# 4# The contents of this file are subject to the terms of the 5# Common Development and Distribution License (the "License"). 6# You may not use this file except in compliance with the License. 7# 8# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9# or http://www.opensolaris.org/os/licensing. 10# See the License for the specific language governing permissions 11# and limitations under the License. 12# 13# When distributing Covered Code, include this CDDL HEADER in each 14# file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15# If applicable, add the following below this CDDL HEADER, with the 16# fields enclosed by brackets "[]" replaced with your own identifying 17# information: Portions Copyright [yyyy] [name of copyright owner] 18# 19# CDDL HEADER END 20# 21 22# 23# Copyright 2009 Sun Microsystems, Inc. All rights reserved. 24# Use is subject to license terms. 25# 26 27# 28# Copyright (c) 2012, 2016 by Delphix. All rights reserved. 29# 30 31. $STF_SUITE/include/libtest.shlib 32. $STF_SUITE/tests/functional/cli_root/zpool_create/zpool_create.cfg 33 34# 35# Given a pool vdevs list, create the pool,verify the created pool, 36# and destroy the pool 37# $1, pool name 38# $2, pool type, mirror, raidz, or none 39# $3, vdevs list 40# 41function create_pool_test 42{ 43 typeset pool=$1 44 typeset keywd=$2 45 typeset vdevs 46 eval "typeset -a diskarray=($3)" 47 48 for vdevs in "${diskarray[@]}";do 49 create_pool $pool $keywd $vdevs 50 log_must poolexists $pool 51 destroy_pool $pool 52 done 53} 54 55# 56# Create a ufs file system and make a file within the file 57# system for storage pool vdev 58# $1, file size 59# $2, file name 60# $3, disk name to create ufs file system 61# 62function create_blockfile 63{ 64 typeset size=$1 65 typeset file=$2 66 typeset disk=$3 67 typeset dir=`dirname $file` 68 69 if [[ -d $dir ]]; then 70 ismounted $dir ufs 71 (( $? == 0 )) && \ 72 log_must umount -f $dir 73 else 74 log_must mkdir -p $dir 75 fi 76 77 echo "y" | newfs /dev/rdsk/$disk >/dev/null 2>&1 78 (( $? != 0 )) && 79 log_fail "Create ufs file system fail." 80 81 log_must mount /dev/dsk/$disk $dir 82 log_must mkfile $size $file 83} 84 85# 86# Umount the ufs filesystem and remove the mountpoint 87# $1, the mount point 88# 89function clean_blockfile 90{ 91 typeset dirs=$1 92 93 for dir in $dirs; do 94 if [[ -d $dir ]]; then 95 if ismounted $dir ufs; then 96 typeset dev=$(df -lhF ufs | grep "$dir" | \ 97 awk '{print $1}') 98 log_must umount -f $dir 99 create_pool ${TESTPOOL}.tmp $dev 100 destroy_pool ${TESTPOOL}.tmp 101 fi 102 log_must rm -rf $dir 103 fi 104 done 105} 106 107# 108# Find the storage device in /etc/vfstab 109# 110function find_vfstab_dev 111{ 112 typeset vfstab="/etc/vfstab" 113 typeset tmpfile="/tmp/vfstab.tmp" 114 typeset vfstabdev 115 typeset vfstabdevs="" 116 typeset line 117 118 cat $vfstab | grep "^/dev/dsk" >$tmpfile 119 while read -r line 120 do 121 vfstabdev=`echo "$line" | awk '{print $1}'` 122 vfstabdev=${vfstabdev%%:} 123 vfstabdevs="$vfstabdev $vfstabdevs" 124 done <$tmpfile 125 126 rm -f $tmpfile 127 echo $vfstabdevs 128} 129 130# 131# Save the systme current dump device configuration 132# 133function save_dump_dev 134{ 135 136 typeset dumpdev 137 typeset fnd="Dump device" 138 139 dumpdev=`dumpadm | grep "$fnd" | cut -f2 -d : | \ 140 awk '{print $1}'` 141 echo $dumpdev 142} 143