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 2009 Sun Microsystems, Inc. All rights reserved. 24# Use is subject to license terms. 25# 26 27# 28# Copyright (c) 2016 by Delphix. All rights reserved. 29# 30 31. $STF_SUITE/include/libtest.shlib 32 33DEPTH_FS=$TESTPOOL/depth_fs 34MAX_DEPTH=3 35DS_COUNT=3 36set -A depth_options "d 0" "d 1" "d 2" "d 4" "d 32" 37set -A depth_array 0 1 2 4 32 38 39# 40# Setup multiple depths datasets, including fs, volumes, snapshots and bookmarks. 41# 42function depth_fs_setup 43{ 44 typeset -i i j k 45 typeset fslist 46 47 log_must zfs create $DEPTH_FS 48 49 (( i=1 )) 50 while (( i<=MAX_DEPTH )); do 51 if (( i==1 )); then 52 fslist=$DEPTH_FS 53 else 54 (( k=i-1 )) 55 fslist=$(zfs list -rH -t filesystem -o name $DEPTH_FS|grep depth"$k"$) 56 if (( $? != 0 )); then 57 log_fail "No depth$k filesystem" 58 fi 59 fi 60 for fs in $fslist; do 61 (( j=1 )) 62 while (( j<=DS_COUNT )); do 63 log_must zfs create $fs/fs_"$j"_depth"$i" 64 if is_global_zone ; then 65 log_must zfs create -V 8M $fs/vol_"$j"_depth"$i" 66 fi 67 log_must zfs snapshot $fs@snap_"$j"_depth"$i" 68 log_must zfs bookmark $fs@snap_"$j"_depth"$i" '#bookmark'_"$j"_depth"$i" 69 (( j=j+1 )) 70 done 71 done 72 (( i=i+1 )) 73 done 74} 75 76# 77# Cleanup multiple depths filesystem. 78# 79function depth_fs_cleanup 80{ 81 datasetexists $DEPTH_FS && destroy_dataset $DEPTH_FS -rR 82} 83