1d583b39bSJohn Wren Kennedy#!/bin/ksh -p 2d583b39bSJohn Wren Kennedy# 3d583b39bSJohn Wren Kennedy# CDDL HEADER START 4d583b39bSJohn Wren Kennedy# 5d583b39bSJohn Wren Kennedy# The contents of this file are subject to the terms of the 6d583b39bSJohn Wren Kennedy# Common Development and Distribution License (the "License"). 7d583b39bSJohn Wren Kennedy# You may not use this file except in compliance with the License. 8d583b39bSJohn Wren Kennedy# 9d583b39bSJohn Wren Kennedy# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 10d583b39bSJohn Wren Kennedy# or http://www.opensolaris.org/os/licensing. 11d583b39bSJohn Wren Kennedy# See the License for the specific language governing permissions 12d583b39bSJohn Wren Kennedy# and limitations under the License. 13d583b39bSJohn Wren Kennedy# 14d583b39bSJohn Wren Kennedy# When distributing Covered Code, include this CDDL HEADER in each 15d583b39bSJohn Wren Kennedy# file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16d583b39bSJohn Wren Kennedy# If applicable, add the following below this CDDL HEADER, with the 17d583b39bSJohn Wren Kennedy# fields enclosed by brackets "[]" replaced with your own identifying 18d583b39bSJohn Wren Kennedy# information: Portions Copyright [yyyy] [name of copyright owner] 19d583b39bSJohn Wren Kennedy# 20d583b39bSJohn Wren Kennedy# CDDL HEADER END 21d583b39bSJohn Wren Kennedy# 22d583b39bSJohn Wren Kennedy 23d583b39bSJohn Wren Kennedy# 24d583b39bSJohn Wren Kennedy# Copyright 2009 Sun Microsystems, Inc. All rights reserved. 25d583b39bSJohn Wren Kennedy# Use is subject to license terms. 26d583b39bSJohn Wren Kennedy# 27d583b39bSJohn Wren Kennedy 28d583b39bSJohn Wren Kennedy# 29*1d32ba66SJohn Wren Kennedy# Copyright (c) 2012, 2016 by Delphix. All rights reserved. 30d583b39bSJohn Wren Kennedy# 31d583b39bSJohn Wren Kennedy 32d583b39bSJohn Wren Kennedy. $STF_SUITE/include/libtest.shlib 33d583b39bSJohn Wren Kennedy. $STF_SUITE/tests/functional/cli_root/zpool_create/zpool_create.shlib 34d583b39bSJohn Wren Kennedy 35d583b39bSJohn Wren Kennedy# 36d583b39bSJohn Wren Kennedy# DESCRIPTION: 37d583b39bSJohn Wren Kennedy# 'zpool create -f <pool> <vspec> ...' can successfully create a 38d583b39bSJohn Wren Kennedy# new pool in some cases. 39d583b39bSJohn Wren Kennedy# 40d583b39bSJohn Wren Kennedy# STRATEGY: 41d583b39bSJohn Wren Kennedy# 1. Prepare the scenarios for '-f' option 42d583b39bSJohn Wren Kennedy# 2. Use -f to override the devices to create new pools 43d583b39bSJohn Wren Kennedy# 3. Verify the pool created successfully 44d583b39bSJohn Wren Kennedy# 45d583b39bSJohn Wren Kennedy 46d583b39bSJohn Wren Kennedyverify_runnable "global" 47d583b39bSJohn Wren Kennedy 48d583b39bSJohn Wren Kennedyfunction cleanup 49d583b39bSJohn Wren Kennedy{ 50d583b39bSJohn Wren Kennedy for pool in $TESTPOOL $TESTPOOL1 $TESTPOOL2 $TESTPOOL3 $TESTPOOL4 \ 51d583b39bSJohn Wren Kennedy $TESTPOOL5 $TESTPOOL6 52d583b39bSJohn Wren Kennedy do 53d583b39bSJohn Wren Kennedy poolexists $pool && destroy_pool $pool 54d583b39bSJohn Wren Kennedy done 55d583b39bSJohn Wren Kennedy 56d583b39bSJohn Wren Kennedy clean_blockfile "$TESTDIR0 $TESTDIR1" 57d583b39bSJohn Wren Kennedy 58d583b39bSJohn Wren Kennedy for file in /var/tmp/$FILEDISK0 /var/tmp/$FILEDISK1 /var/tmp/$FILEDISK2 59d583b39bSJohn Wren Kennedy do 60d583b39bSJohn Wren Kennedy if [[ -e $file ]]; then 61*1d32ba66SJohn Wren Kennedy rm -rf $file 62d583b39bSJohn Wren Kennedy fi 63d583b39bSJohn Wren Kennedy done 64d583b39bSJohn Wren Kennedy 65d583b39bSJohn Wren Kennedy partition_disk $SIZE $disk 6 66d583b39bSJohn Wren Kennedy} 67d583b39bSJohn Wren Kennedy 68d583b39bSJohn Wren Kennedylog_onexit cleanup 69d583b39bSJohn Wren Kennedy 70d583b39bSJohn Wren Kennedylog_assert "'zpool create -f <pool> <vspec> ...' can successfully create" \ 71d583b39bSJohn Wren Kennedy "a new pool in some cases." 72d583b39bSJohn Wren Kennedy 73d583b39bSJohn Wren Kennedyif [[ -n $DISK ]]; then 74d583b39bSJohn Wren Kennedy disk=$DISK 75d583b39bSJohn Wren Kennedyelse 76d583b39bSJohn Wren Kennedy disk=$DISK0 77d583b39bSJohn Wren Kennedyfi 78d583b39bSJohn Wren Kennedycreate_pool "$TESTPOOL" "${disk}s${SLICE0}" 79*1d32ba66SJohn Wren Kennedylog_must echo "y" | newfs /dev/rdsk/${disk}s${SLICE1} >/dev/null 2>&1 80d583b39bSJohn Wren Kennedycreate_blockfile $FILESIZE $TESTDIR0/$FILEDISK0 ${disk}s${SLICE4} 81d583b39bSJohn Wren Kennedycreate_blockfile $FILESIZE1 $TESTDIR1/$FILEDISK1 ${disk}s${SLICE5} 82*1d32ba66SJohn Wren Kennedylog_must mkfile $SIZE /var/tmp/$FILEDISK0 83*1d32ba66SJohn Wren Kennedylog_must mkfile $SIZE /var/tmp/$FILEDISK1 84*1d32ba66SJohn Wren Kennedylog_must mkfile $SIZE /var/tmp/$FILEDISK2 85d583b39bSJohn Wren Kennedy 86447b1e1fSJohn Wren Kennedyunset NOINUSE_CHECK 87*1d32ba66SJohn Wren Kennedylog_must zpool export $TESTPOOL 88d583b39bSJohn Wren Kennedylog_note "'zpool create' without '-f' will fail " \ 89d583b39bSJohn Wren Kennedy "while device is belong to an exported pool." 90*1d32ba66SJohn Wren Kennedylog_mustnot zpool create "$TESTPOOL1" "${disk}s${SLICE0}" 91d583b39bSJohn Wren Kennedycreate_pool "$TESTPOOL1" "${disk}s${SLICE0}" 92d583b39bSJohn Wren Kennedylog_must poolexists $TESTPOOL1 93d583b39bSJohn Wren Kennedy 94d583b39bSJohn Wren Kennedylog_note "'zpool create' without '-f' will fail " \ 95d583b39bSJohn Wren Kennedy "while device is using by an ufs filesystem." 96*1d32ba66SJohn Wren Kennedylog_mustnot zpool create "$TESTPOOL2" "${disk}s${SLICE1}" 97d583b39bSJohn Wren Kennedycreate_pool "$TESTPOOL2" "${disk}s${SLICE1}" 98d583b39bSJohn Wren Kennedylog_must poolexists $TESTPOOL2 99d583b39bSJohn Wren Kennedy 100d583b39bSJohn Wren Kennedylog_note "'zpool create' mirror without '-f' will fail " \ 101d583b39bSJohn Wren Kennedy "while devices have different size." 102*1d32ba66SJohn Wren Kennedylog_mustnot zpool create "$TESTPOOL3" "mirror" $TESTDIR0/$FILEDISK0 $TESTDIR1/$FILEDISK1 103d583b39bSJohn Wren Kennedycreate_pool "$TESTPOOL3" "mirror" $TESTDIR0/$FILEDISK0 $TESTDIR1/$FILEDISK1 104d583b39bSJohn Wren Kennedylog_must poolexists $TESTPOOL3 105d583b39bSJohn Wren Kennedy 106d583b39bSJohn Wren Kennedylog_note "'zpool create' mirror without '-f' will fail " \ 107d583b39bSJohn Wren Kennedy "while devices are of different types." 108*1d32ba66SJohn Wren Kennedylog_mustnot zpool create "$TESTPOOL4" "mirror" /var/tmp/$FILEDISK0 \ 109d583b39bSJohn Wren Kennedy ${disk}s${SLICE3} 110d583b39bSJohn Wren Kennedycreate_pool "$TESTPOOL4" "mirror" /var/tmp/$FILEDISK0 ${disk}s${SLICE3} 111d583b39bSJohn Wren Kennedylog_must poolexists $TESTPOOL4 112d583b39bSJohn Wren Kennedy 113d583b39bSJohn Wren Kennedylog_note "'zpool create' without '-f' will fail " \ 114d583b39bSJohn Wren Kennedy "while device is part of potentially active pool." 115d583b39bSJohn Wren Kennedycreate_pool "$TESTPOOL5" "mirror" /var/tmp/$FILEDISK1 \ 116d583b39bSJohn Wren Kennedy /var/tmp/$FILEDISK2 117*1d32ba66SJohn Wren Kennedylog_must zpool offline $TESTPOOL5 /var/tmp/$FILEDISK2 118*1d32ba66SJohn Wren Kennedylog_must zpool export $TESTPOOL5 119*1d32ba66SJohn Wren Kennedylog_mustnot zpool create "$TESTPOOL6" /var/tmp/$FILEDISK2 120d583b39bSJohn Wren Kennedycreate_pool $TESTPOOL6 /var/tmp/$FILEDISK2 121d583b39bSJohn Wren Kennedylog_must poolexists $TESTPOOL6 122d583b39bSJohn Wren Kennedy 123d583b39bSJohn Wren Kennedylog_pass "'zpool create -f <pool> <vspec> ...' success." 124