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 https://opensource.org/licenses/CDDL-1.0. 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, 2016 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 # Create temporary %recv clone 67 create_recv_clone $TESTPOOL/$RECVFS 68} 69 70function rename_dataset # src dest 71{ 72 typeset src=$1 73 typeset dest=$2 74 75 log_must zfs rename $src $dest 76 block_device_wait 77 78 # 79 # Verify src name no longer in use 80 # 81 log_mustnot datasetexists $src 82 log_must datasetexists $dest 83} 84 85function cleanup 86{ 87 typeset -i i=0 88 while ((i < ${#dataset[*]} )); do 89 if ! datasetexists ${dataset[i]}-new ; then 90 ((i = i + 1)) 91 continue 92 fi 93 94 if [[ ${dataset[i]}-new != *@* ]] ; then 95 if ! zfs rename ${dataset[i]}-new ${dataset[i]}; then 96 typeset newfs=${dataset[i]}-new 97 typeset oldfs=${dataset[i]} 98 typeset mntp=$(get_prop mountpoint $newfs) 99 log_must zfs destroy -f $newfs 100 log_must zfs create -p $oldfs 101 log_must zfs set mountpoint=$mntp $oldfs 102 fi 103 else 104 log_must zfs destroy -fR ${dataset[i]}-new 105 fi 106 107 ((i = i + 1)) 108 done 109 110 snapexists $TESTPOOL/$TESTFS@snapshot && \ 111 destroy_dataset $TESTPOOL/$TESTFS@snapshot -fR 112 113 datasetexists $TESTPOOL/$RECVFS && \ 114 destroy_dataset $TESTPOOL/$RECVFS -r 115} 116 117function cmp_data #<$1 src data, $2 tgt data> 118{ 119 typeset src=$1 120 typeset tgt=$2 121 122 cmp $src $tgt >/dev/null 123} 124 125