1# 2# CDDL HEADER START 3# 4# The contents of this file are subject to the terms of the 5# Common Development and Distribution License (the "License"). 6# You may not use this file except in compliance with the License. 7# 8# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9# or http://www.opensolaris.org/os/licensing. 10# See the License for the specific language governing permissions 11# and limitations under the License. 12# 13# When distributing Covered Code, include this CDDL HEADER in each 14# file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15# If applicable, add the following below this CDDL HEADER, with the 16# fields enclosed by brackets "[]" replaced with your own identifying 17# information: Portions Copyright [yyyy] [name of copyright owner] 18# 19# CDDL HEADER END 20# 21 22# 23# Copyright 2007 Sun Microsystems, Inc. All rights reserved. 24# Use is subject to license terms. 25# 26 27# 28# Copyright (c) 2012 by Delphix. All rights reserved. 29# 30 31. $STF_SUITE/tests/functional/cli_root/zfs_rename/zfs_rename.cfg 32 33function additional_setup 34{ 35 # Create testfile 36 log_must $CP $DATA $TESTDIR/$TESTFILE0 37 log_must $CP $DATA $TESTDIR1/$TESTFILE0 38 39 # Create snapshot 40 if ! snapexists $TESTPOOL/$TESTFS@snapshot; then 41 log_must $ZFS snapshot $TESTPOOL/$TESTFS@snapshot 42 log_must $ZFS clone $TESTPOOL/$TESTFS@snapshot \ 43 $TESTPOOL/$TESTFS-clone 44 fi 45 46 # Create file system 47 datasetexists $TESTPOOL/$TESTFS1 || \ 48 log_must $ZFS create $TESTPOOL/$TESTFS1 49 50 # Create testfile 51 log_must $CP $DATA $(get_prop mountpoint $TESTPOOL/$TESTFS1)/$TESTFILE0 52 53 # Create container 54 datasetexists $TESTPOOL/$TESTCTR1 || \ 55 log_must $ZFS create $TESTPOOL/$TESTCTR1 56 log_must $CP $DATA $(get_prop mountpoint $TESTPOOL/$TESTCTR1)/$TESTFILE0 57 58 # Create data in zvol 59 if is_global_zone; then 60 log_must eval "$DD if=$DATA of=$VOL_R_PATH bs=$BS count=$CNT \ 61 >/dev/null 2>&1" 62 else 63 log_must $CP $DATA $(get_prop mountpoint $TESTPOOL/$TESTVOL)/$TESTFILE0 64 fi 65 66} 67 68function rename_dataset # src dest 69{ 70 typeset src=$1 71 typeset dest=$2 72 73 log_must $ZFS rename $src $dest 74 75 # 76 # Verify src name no longer in use 77 # 78 log_mustnot datasetexists $src 79 log_must datasetexists $dest 80} 81 82function cleanup 83{ 84 typeset -i i=0 85 while ((i < ${#dataset[*]} )); do 86 if ! datasetexists ${dataset[i]}-new ; then 87 ((i = i + 1)) 88 continue 89 fi 90 91 if [[ ${dataset[i]}-new != *@* ]] ; then 92 $ZFS rename ${dataset[i]}-new ${dataset[i]} 93 if [[ $? -ne 0 ]]; then 94 typeset newfs=${dataset[i]}-new 95 typeset oldfs=${dataset[i]} 96 typeset mntp=$(get_prop mountpoint $newfs) 97 log_must $ZFS destroy -f $newfs 98 log_must $ZFS create -p $oldfs 99 log_must $ZFS set mountpoint=$mntp $oldfs 100 fi 101 else 102 log_must $ZFS destroy -fR ${dataset[i]}-new 103 fi 104 105 ((i = i + 1)) 106 done 107 108 if snapexists $TESTPOOL/$TESTFS@snapshot; then 109 log_must $ZFS destroy -fR $TESTPOOL/$TESTFS@snapshot 110 fi 111 112} 113 114function cmp_data #<$1 src data, $2 tgt data> 115{ 116 typeset src=$1 117 typeset tgt=$2 118 119 $CMP $src $tgt >/dev/null 2>&1 120 121 return $? 122} 123 124