1#!/usr/local/bin/ksh93 -p 2# 3# CDDL HEADER START 4# 5# The contents of this file are subject to the terms of the 6# Common Development and Distribution License (the "License"). 7# You may not use this file except in compliance with the License. 8# 9# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 10# or http://www.opensolaris.org/os/licensing. 11# See the License for the specific language governing permissions 12# and limitations under the License. 13# 14# When distributing Covered Code, include this CDDL HEADER in each 15# file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16# If applicable, add the following below this CDDL HEADER, with the 17# fields enclosed by brackets "[]" replaced with your own identifying 18# information: Portions Copyright [yyyy] [name of copyright owner] 19# 20# CDDL HEADER END 21# 22 23# $FreeBSD$ 24 25# 26# Copyright 2009 Sun Microsystems, Inc. All rights reserved. 27# Use is subject to license terms. 28# 29#ident "@(#)zpool_create_008_pos.ksh 1.5 09/06/22 SMI" 30# 31. $STF_SUITE/include/libtest.kshlib 32. $STF_SUITE/tests/cli_root/zpool_create/zpool_create.kshlib 33 34################################################################################ 35# 36# __stc_assertion_start 37# 38# ID: zpool_create_008_pos 39# 40# DESCRIPTION: 41# 'zpool create' have to use '-f' scenarios 42# 43# STRATEGY: 44# 1. Prepare the scenarios 45# 2. Create pool without '-f' and verify it fails 46# 3. Create pool with '-f' and verify it succeeds 47# 48# TESTABILITY: explicit 49# 50# TEST_AUTOMATION_LEVEL: automated 51# 52# CODING_STATUS: COMPLETED (2007-08-17) 53# 54# __stc_assertion_end 55# 56################################################################################ 57 58verify_runnable "global" 59 60function cleanup 61{ 62 if [[ $exported_pool == true ]]; then 63 if [[ $force_pool == true ]]; then 64 log_must $ZPOOL create -f $TESTPOOL ${disk}p1 65 else 66 log_must $ZPOOL import $TESTPOOL 67 fi 68 fi 69 70 if poolexists $TESTPOOL ; then 71 destroy_pool $TESTPOOL 72 fi 73 74 if poolexists $TESTPOOL1 ; then 75 destroy_pool $TESTPOOL1 76 fi 77 78 # 79 # recover it back to EFI label 80 # 81 wipe_partition_table $disk 82} 83 84# 85# create overlap slice 0 and 1 on $disk 86# 87function create_overlap_slice 88{ 89 typeset format_file=$TMPDIR/format_overlap.${TESTCASE_ID} 90 typeset disk=$1 91 92 $ECHO "partition" >$format_file 93 $ECHO "0" >> $format_file 94 $ECHO "" >> $format_file 95 $ECHO "" >> $format_file 96 $ECHO "0" >> $format_file 97 $ECHO "200m" >> $format_file 98 $ECHO "1" >> $format_file 99 $ECHO "" >> $format_file 100 $ECHO "" >> $format_file 101 $ECHO "0" >> $format_file 102 $ECHO "400m" >> $format_file 103 $ECHO "label" >> $format_file 104 $ECHO "" >> $format_file 105 $ECHO "q" >> $format_file 106 $ECHO "q" >> $format_file 107 108 $FORMAT -e -s -d $disk -f $format_file 109 typeset -i ret=$? 110 $RM -fr $format_file 111 112 if (( ret != 0 )); then 113 log_fail "unable to create overlap slice." 114 fi 115 116 return 0 117} 118 119log_assert "'zpool create' have to use '-f' scenarios" 120log_onexit cleanup 121 122typeset exported_pool=false 123typeset force_pool=false 124 125if [[ -n $DISK ]]; then 126 disk=$DISK 127else 128 disk=$DISK0 129fi 130 131# overlapped slices as vdev need -f to create pool 132 133# Make the disk is EFI labeled first via pool creation 134create_pool $TESTPOOL $disk 135destroy_pool $TESTPOOL 136 137# Make the disk is VTOC labeled since only VTOC label supports overlap 138log_must labelvtoc $disk 139log_must create_overlap_slice $disk 140 141log_mustnot $ZPOOL create $TESTPOOL ${disk}p1 142log_must $ZPOOL create -f $TESTPOOL ${disk}p1 143destroy_pool $TESTPOOL 144 145# exported device to be as spare vdev need -f to create pool 146 147log_must $ZPOOL create -f $TESTPOOL $disk 148destroy_pool $TESTPOOL 149log_must partition_disk $SIZE $disk 6 150create_pool $TESTPOOL ${disk}p1 ${disk}p2 151log_must $ZPOOL export $TESTPOOL 152exported_pool=true 153log_mustnot $ZPOOL create $TESTPOOL1 ${disk}p3 spare ${disk}p2 154create_pool $TESTPOOL1 ${disk}p3 spare ${disk}p2 155force_pool=true 156destroy_pool $TESTPOOL1 157 158log_pass "'zpool create' have to use '-f' scenarios" 159