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# 24# Copyright 2009 Sun Microsystems, Inc. All rights reserved. 25# Use is subject to license terms. 26. $STF_SUITE/include/libtest.kshlib 27. $STF_SUITE/tests/cli_root/zpool_create/zpool_create.kshlib 28 29################################################################################ 30# 31# __stc_assertion_start 32# 33# ID: zpool_create_002_pos 34# 35# DESCRIPTION: 36# 'zpool create -f <pool> <vspec> ...' can successfully create a 37# new pool in some cases. 38# 39# STRATEGY: 40# 1. Prepare the scenarios for '-f' option 41# 2. Use -f to override the devices to create new pools 42# 3. Verify the pool created successfully 43# 44# TESTABILITY: explicit 45# 46# TEST_AUTOMATION_LEVEL: automated 47# 48# CODING_STATUS: COMPLETED (2005-07-04) 49# 50# __stc_assertion_end 51# 52################################################################################ 53 54verify_runnable "global" 55 56function cleanup 57{ 58 for pool in $TESTPOOL $TESTPOOL1 $TESTPOOL2 $TESTPOOL3 $TESTPOOL4 \ 59 $TESTPOOL5 $TESTPOOL6 60 do 61 poolexists $pool && destroy_pool $pool 62 done 63 64 clean_blockfile "$TESTDIR0 $TESTDIR1" 65 66 for file in $TMPDIR/$FILEDISK0 $TMPDIR/$FILEDISK1 $TMPDIR/$FILEDISK2 67 do 68 if [[ -e $file ]]; then 69 $RM -rf $file 70 fi 71 done 72} 73 74log_onexit cleanup 75 76log_assert "'zpool create -f <pool> <vspec> ...' can successfully create" \ 77 "a new pool in some cases." 78 79function create_fails_without_force 80{ 81 log_mustnot $ZPOOL create $TESTPOOL $* 82 create_pool $TESTPOOL $* 83 destroy_pool $TESTPOOL 84} 85 86[ -n "$DISK" ] && disk=$DISK || disk=$DISK0 87 88create_pool "$TESTPOOL" "${disk}p1" 89log_must $ZPOOL export $TESTPOOL 90log_note "'zpool create' without '-f' will fail " \ 91 "while device is belong to an exported pool." 92create_fails_without_force "${disk}p1" 93 94log_assert "'zpool create' mirror without '-f' will fail " \ 95 "when vdevs are different sizes." 96VDEV_SIZE=84m 97create_vdevs $TMPDIR/$FILEDISK0 98unset VDEV_SIZE 99log_must create_vdevs $TMPDIR/$FILEDISK1 100create_fails_without_force mirror $TMPDIR/$FILEDISK0 $TMPDIR/$FILEDISK1 101 102log_assert "'zpool create' mirror without '-f' will fail " \ 103 "when devices are different types." 104create_vdevs $TMPDIR/$FILEDISK0 105log_mustnot $ZPOOL create "$TESTPOOL4" "mirror" $TMPDIR/$FILEDISK0 ${disk}p3 106create_fails_without_force mirror $TMPDIR/$FILEDISK0 ${disk}p3 107 108log_assert "'zpool create' without '-f' will fail " \ 109 "while device is part of potentially active pool." 110create_vdevs $TMPDIR/$FILEDISK1 $TMPDIR/$FILEDISK2 111create_pool "$TESTPOOL5" "mirror" $TMPDIR/$FILEDISK1 $TMPDIR/$FILEDISK2 112log_must $ZPOOL offline $TESTPOOL5 $TMPDIR/$FILEDISK2 113log_must $ZPOOL export $TESTPOOL5 114create_fails_without_force $TMPDIR/$FILEDISK2 115 116log_pass "'zpool create -f <pool> <vspec> ...' success." 117