1#!/bin/ksh -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 https://opensource.org/licenses/CDDL-1.0. 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# 27 28# 29# Copyright (c) 2012, 2016 by Delphix. All rights reserved. 30# 31 32. $STF_SUITE/include/libtest.shlib 33. $STF_SUITE/tests/functional/cli_root/zpool_create/zpool_create.shlib 34 35# 36# DESCRIPTION: 37# Verify zpool create succeed with multiple keywords combination. 38# 39# STRATEGY: 40# 1. Create base filesystem to hold virtual disk files. 41# 2. Create several files == $MINVDEVSIZE. 42# 3. Verify 'zpool create' succeed with valid keywords combination. 43# 44 45verify_runnable "global" 46 47function cleanup 48{ 49 poolexists $TESTPOOL1 && destroy_pool $TESTPOOL1 50 poolexists $TESTPOOL && destroy_pool $TESTPOOL 51} 52 53 54log_assert "Verify 'zpool create' succeed with keywords combination." 55log_onexit cleanup 56 57create_pool $TESTPOOL $DISKS 58mntpnt=$(get_prop mountpoint $TESTPOOL) 59 60typeset -i i=0 61while ((i < 10)); do 62 log_must truncate -s $MINVDEVSIZE $mntpnt/vdev$i 63 64 eval vdev$i=$mntpnt/vdev$i 65 ((i += 1)) 66done 67 68set -A valid_args \ 69 "mirror $vdev0 $vdev1 $vdev2 mirror $vdev3 $vdev4 $vdev5" \ 70 "mirror $vdev0 $vdev1 mirror $vdev2 $vdev3 mirror $vdev4 $vdev5" \ 71 "mirror $vdev0 $vdev1 $vdev2 mirror $vdev3 $vdev4 $vdev5 \ 72 spare $vdev6" \ 73 "mirror $vdev0 $vdev1 mirror $vdev2 $vdev3 mirror $vdev4 $vdev5 \ 74 spare $vdev6 $vdev7" \ 75 "mirror $vdev0 $vdev1 spare $vdev2 mirror $vdev3 $vdev4" \ 76 "mirror $vdev0 $vdev1 raidz $vdev2 $vdev3" \ 77 "mirror $vdev0 $vdev1 raidz $vdev2 $vdev3 $vdev4" \ 78 "mirror $vdev0 $vdev1 $vdev2 raidz2 $vdev3 $vdev4 $vdev5" \ 79 "mirror $vdev0 $vdev1 $vdev2 $vdev3 \ 80 raidz3 $vdev4 $vdev5 $vdev6 $vdev7" \ 81 "raidz $vdev0 $vdev1 $vdev2 mirror $vdev3 $vdev4" \ 82 "raidz $vdev0 $vdev1 $vdev2 raidz1 $vdev3 $vdev4 $vdev5" \ 83 "raidz $vdev0 $vdev1 raidz1 $vdev2 $vdev3 raidz $vdev4 $vdev5" \ 84 "raidz $vdev0 $vdev1 $vdev2 raidz1 $vdev3 $vdev4 $vdev5 \ 85 spare $vdev6" \ 86 "raidz $vdev0 $vdev1 raidz1 $vdev2 $vdev3 raidz $vdev4 $vdev5 \ 87 spare $vdev6 $vdev7" \ 88 "raidz $vdev0 $vdev1 spare $vdev2 raidz $vdev3 $vdev4" \ 89 "raidz2 $vdev0 $vdev1 $vdev2 mirror $vdev3 $vdev4 $vdev5" \ 90 "raidz2 $vdev0 $vdev1 $vdev2 raidz2 $vdev3 $vdev4 $vdev5" \ 91 "raidz2 $vdev0 $vdev1 $vdev2 raidz2 $vdev3 $vdev4 $vdev5 \ 92 raidz2 $vdev6 $vdev7 $vdev8" \ 93 "raidz2 $vdev0 $vdev1 $vdev2 raidz2 $vdev3 $vdev4 $vdev5 \ 94 spare $vdev6" \ 95 "raidz2 $vdev0 $vdev1 $vdev2 raidz2 $vdev3 $vdev4 $vdev5 \ 96 raidz2 $vdev6 $vdev7 $vdev8 spare $vdev9" \ 97 "raidz2 $vdev0 $vdev1 $vdev2 spare $vdev3 raidz2 $vdev4 $vdev5 $vdev6" \ 98 "raidz3 $vdev0 $vdev1 $vdev2 $vdev3 \ 99 mirror $vdev4 $vdev5 $vdev6 $vdev7" \ 100 "draid $vdev0 $vdev1 $vdev2 mirror $vdev3 $vdev4" \ 101 "draid $vdev0 $vdev1 $vdev2 raidz1 $vdev3 $vdev4 $vdev5" \ 102 "draid $vdev0 $vdev1 $vdev2 draid1 $vdev3 $vdev4 $vdev5" \ 103 "draid $vdev0 $vdev1 $vdev2 special mirror $vdev3 $vdev4" \ 104 "draid2 $vdev0 $vdev1 $vdev2 $vdev3 mirror $vdev4 $vdev5 $vdev6" \ 105 "draid2 $vdev0 $vdev1 $vdev2 $vdev3 raidz2 $vdev4 $vdev5 $vdev6" \ 106 "draid2 $vdev0 $vdev1 $vdev2 $vdev3 draid2 $vdev4 $vdev5 $vdev6 $vdev7"\ 107 "draid2 $vdev0 $vdev1 $vdev2 $vdev3 \ 108 special mirror $vdev4 $vdev5 $vdev6" \ 109 "draid2 $vdev0 $vdev1 $vdev2 $vdev3 \ 110 special mirror $vdev4 $vdev5 $vdev6 \ 111 cache $vdev7 log mirror $vdev8 $vdev9" \ 112 "draid $vdev0 $vdev1 $vdev2 draid $vdev4 $vdev5 $vdev6 $vdev7 \ 113 special mirror $vdev8 $vdev9" \ 114 "spare $vdev0 $vdev1 $vdev2 mirror $vdev3 $vdev4 raidz $vdev5 $vdev6" 115 116set -A forced_args \ 117 "$vdev0 raidz $vdev1 $vdev2 raidz1 $vdev3 $vdev4 $vdev5" \ 118 "$vdev0 raidz2 $vdev1 $vdev2 $vdev3 raidz2 $vdev4 $vdev5 $vdev6" \ 119 "$vdev0 mirror $vdev1 $vdev2 mirror $vdev3 $vdev4" \ 120 "$vdev0 mirror $vdev1 $vdev2 raidz $vdev3 $vdev4 \ 121 raidz2 $vdev5 $vdev6 $vdev7 spare $vdev8" \ 122 "$vdev0 mirror $vdev1 $vdev2 spare $vdev3 raidz $vdev4 $vdev5" \ 123 "raidz $vdev0 $vdev1 raidz2 $vdev2 $vdev3 $vdev4" \ 124 "raidz $vdev0 $vdev1 raidz2 $vdev2 $vdev3 $vdev4 spare $vdev5" \ 125 "raidz $vdev0 $vdev1 spare $vdev2 raidz2 $vdev3 $vdev4 $vdev5" \ 126 "raidz $vdev0 $vdev1 draid2 $vdev2 $vdev3 $vdev4 $vdev5" \ 127 "raidz $vdev0 $vdev1 draid3 $vdev2 $vdev3 $vdev4 $vdev5 $vdev6" \ 128 "mirror $vdev0 $vdev1 raidz $vdev2 $vdev3 raidz2 $vdev4 $vdev5 $vdev6" \ 129 "mirror $vdev0 $vdev1 raidz $vdev2 $vdev3 \ 130 raidz2 $vdev4 $vdev5 $vdev6 spare $vdev7" \ 131 "mirror $vdev0 $vdev1 raidz $vdev2 $vdev3 \ 132 spare $vdev4 raidz2 $vdev5 $vdev6 $vdev7" \ 133 "mirror $vdev0 $vdev1 draid $vdev2 $vdev3 $vdev4 \ 134 draid2 $vdev5 $vdev6 $vdev7 $vdev8 spare $vdev9" \ 135 "draid $vdev0 $vdev1 $vdev2 $vdev3 \ 136 draid2 $vdev4 $vdev5 $vdev6 $vdev7 $vdev8" \ 137 "draid $vdev0 $vdev1 $vdev2 draid $vdev4 $vdev5 $vdev6 \ 138 special mirror $vdev7 $vdev8 $vdev9" \ 139 "spare $vdev0 $vdev1 $vdev2 mirror $vdev3 $vdev4 \ 140 raidz2 $vdev5 $vdev6 $vdev7" 141 142i=0 143while ((i < ${#valid_args[@]})); do 144 log_must zpool create $TESTPOOL1 ${valid_args[$i]} 145 log_must zpool destroy -f $TESTPOOL1 146 147 ((i += 1)) 148done 149 150i=0 151while ((i < ${#forced_args[@]})); do 152 log_mustnot zpool create $TESTPOOL1 ${forced_args[$i]} 153 log_must zpool create -f $TESTPOOL1 ${forced_args[$i]} 154 log_must zpool destroy -f $TESTPOOL1 155 156 ((i += 1)) 157done 158 159log_pass "'zpool create' succeed with keywords combination." 160