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 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 # 27 28 # 29 # Copyright (c) 2013 by Delphix. All rights reserved. 30 # 31 32 . $STF_SUITE/include/libtest.shlib 33 . $STF_SUITE/tests/functional/cachefile/cachefile.cfg 34 . $STF_SUITE/tests/functional/cachefile/cachefile.kshlib 35 36 # 37 # DESCRIPTION: 38 # Verify set, export and destroy when cachefile is set on pool. 39 # 40 # STRATEGY: 41 # 1. Create two pools with one same cahcefile1. 42 # 2. Set cachefile of the two pools to another same cachefile2. 43 # 3. Verify cachefile1 not exist. 44 # 4. Export the two pools. 45 # 5. Verify cachefile2 not exist. 46 # 6. Import the two pools and set cachefile to cachefile2. 47 # 7. Destroy the two pools. 48 # 8. Verify cachefile2 not exist. 49 # 50 51 verify_runnable "global" 52 53 function cleanup 54 { 55 poolexists $TESTPOOL1 && destroy_pool $TESTPOOL1 56 poolexists $TESTPOOL2 && destroy_pool $TESTPOOL2 57 58 mntpnt=$(get_prop mountpoint $TESTPOOL) 59 typeset -i i=0 60 while ((i < 2)); do 61 if [[ -e $mntpnt/vdev$i ]]; then 62 log_must $RM -f $mntpnt/vdev$i 63 fi 64 ((i += 1)) 65 done 66 67 if poolexists $TESTPOOL ; then 68 destroy_pool $TESTPOOL 69 fi 70 71 for file in $CPATH1 $CPATH2 ; do 72 if [[ -f $file ]] ; then 73 log_must $RM $file 74 fi 75 done 76 } 77 78 79 log_assert "Verify set, export and destroy when cachefile is set on pool." 80 log_onexit cleanup 81 82 log_must $ZPOOL create $TESTPOOL $DISKS 83 84 mntpnt=$(get_prop mountpoint $TESTPOOL) 85 typeset -i i=0 86 while ((i < 2)); do 87 log_must $MKFILE 64M $mntpnt/vdev$i 88 eval vdev$i=$mntpnt/vdev$i 89 ((i += 1)) 90 done 91 92 log_must $ZPOOL create -o cachefile=$CPATH1 $TESTPOOL1 $vdev0 93 log_must pool_in_cache $TESTPOOL1 $CPATH1 94 log_must $ZPOOL create -o cachefile=$CPATH1 $TESTPOOL2 $vdev1 95 log_must pool_in_cache $TESTPOOL2 $CPATH1 96 97 log_must $ZPOOL set cachefile=$CPATH2 $TESTPOOL1 98 log_must pool_in_cache $TESTPOOL1 $CPATH2 99 log_must $ZPOOL set cachefile=$CPATH2 $TESTPOOL2 100 log_must pool_in_cache $TESTPOOL2 $CPATH2 101 if [[ -f $CPATH1 ]]; then 102 log_fail "Verify set when cachefile is set on pool." 103 fi 104 105 log_must $ZPOOL export $TESTPOOL1 106 log_must $ZPOOL export $TESTPOOL2 107 if [[ -f $CPATH2 ]]; then 108 log_fail "Verify export when cachefile is set on pool." 109 fi 110 111 log_must $ZPOOL import -d $mntpnt $TESTPOOL1 112 log_must $ZPOOL set cachefile=$CPATH2 $TESTPOOL1 113 log_must pool_in_cache $TESTPOOL1 $CPATH2 114 log_must $ZPOOL import -d $mntpnt $TESTPOOL2 115 log_must $ZPOOL set cachefile=$CPATH2 $TESTPOOL2 116 log_must pool_in_cache $TESTPOOL2 $CPATH2 117 118 log_must $ZPOOL destroy $TESTPOOL1 119 log_must $ZPOOL destroy $TESTPOOL2 120 if [[ -f $CPATH2 ]]; then 121 log_fail "Verify destroy when cachefile is set on pool." 122 fi 123 124 log_pass "Verify set, export and destroy when cachefile is set on pool."