1f38cb554SJohn Wren Kennedy# 2f38cb554SJohn Wren Kennedy# CDDL HEADER START 3f38cb554SJohn Wren Kennedy# 4f38cb554SJohn Wren Kennedy# The contents of this file are subject to the terms of the 5f38cb554SJohn Wren Kennedy# Common Development and Distribution License (the "License"). 6f38cb554SJohn Wren Kennedy# You may not use this file except in compliance with the License. 7f38cb554SJohn Wren Kennedy# 8f38cb554SJohn Wren Kennedy# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9f38cb554SJohn Wren Kennedy# or http://www.opensolaris.org/os/licensing. 10f38cb554SJohn Wren Kennedy# See the License for the specific language governing permissions 11f38cb554SJohn Wren Kennedy# and limitations under the License. 12f38cb554SJohn Wren Kennedy# 13f38cb554SJohn Wren Kennedy# When distributing Covered Code, include this CDDL HEADER in each 14f38cb554SJohn Wren Kennedy# file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15f38cb554SJohn Wren Kennedy# If applicable, add the following below this CDDL HEADER, with the 16f38cb554SJohn Wren Kennedy# fields enclosed by brackets "[]" replaced with your own identifying 17f38cb554SJohn Wren Kennedy# information: Portions Copyright [yyyy] [name of copyright owner] 18f38cb554SJohn Wren Kennedy# 19f38cb554SJohn Wren Kennedy# CDDL HEADER END 20f38cb554SJohn Wren Kennedy# 21f38cb554SJohn Wren Kennedy 22f38cb554SJohn Wren Kennedy# 23f38cb554SJohn Wren Kennedy# Copyright 2009 Sun Microsystems, Inc. All rights reserved. 24f38cb554SJohn Wren Kennedy# Use is subject to license terms. 25f38cb554SJohn Wren Kennedy# 26f38cb554SJohn Wren Kennedy 27f38cb554SJohn Wren Kennedy# 281d32ba66SJohn Wren Kennedy# Copyright (c) 2013, 2016 by Delphix. All rights reserved. 29f38cb554SJohn Wren Kennedy# 30f38cb554SJohn Wren Kennedy 31f38cb554SJohn Wren Kennedy. $STF_SUITE/tests/functional/mv_files/mv_files.cfg 32f38cb554SJohn Wren Kennedy 33f38cb554SJohn Wren Kennedy# 34f38cb554SJohn Wren Kennedy# Determine whether this version of the ksh being 35f38cb554SJohn Wren Kennedy# executed has a bug where the limit of background 36f38cb554SJohn Wren Kennedy# processes of 25. 37f38cb554SJohn Wren Kennedy# 38f38cb554SJohn Wren Kennedyfunction check_bg_procs_limit_num 39f38cb554SJohn Wren Kennedy{ 401d32ba66SJohn Wren Kennedyecho "#!/usr/bin/ksh" > /var/tmp/exitsZero.ksh 411d32ba66SJohn Wren Kennedyecho "exit 0" >> /var/tmp/exitsZero.ksh 421d32ba66SJohn Wren Kennedychmod 777 /var/tmp/exitsZero.ksh 43f38cb554SJohn Wren Kennedy 441d32ba66SJohn Wren Kennedycat <<EOF > /var/tmp/testbackgprocs.ksh 45f38cb554SJohn Wren Kennedy#!/usr/bin/ksh 46f38cb554SJohn Wren Kennedy# 47f38cb554SJohn Wren Kennedy# exitsZero.ksh is a one line script 48f38cb554SJohn Wren Kennedy# that exit with status of "0" 49f38cb554SJohn Wren Kennedy# 50f38cb554SJohn Wren Kennedy 51f38cb554SJohn Wren KennedyPIDS="" 52f38cb554SJohn Wren Kennedytypeset -i i=1 53f38cb554SJohn Wren Kennedywhile [ \$i -le 50 ] 54f38cb554SJohn Wren Kennedydo 55f38cb554SJohn Wren Kennedy /var/tmp/exitsZero.ksh & 56f38cb554SJohn Wren Kennedy PIDS="\$PIDS \$!" 57f38cb554SJohn Wren Kennedy (( i = i + 1 )) 58f38cb554SJohn Wren Kennedydone 59f38cb554SJohn Wren Kennedy 60*f5fb56deSJohn Wren Kennedysleep 1 61f38cb554SJohn Wren Kennedy 62f38cb554SJohn Wren Kennedyfor pid in \$PIDS 63f38cb554SJohn Wren Kennedydo 64*f5fb56deSJohn Wren Kennedy wait \$pid 65f38cb554SJohn Wren Kennedy (( \$? == 127 )) && exit 1 66f38cb554SJohn Wren Kennedydone 67f38cb554SJohn Wren Kennedyexit 0 68f38cb554SJohn Wren KennedyEOF 69f38cb554SJohn Wren Kennedy 701d32ba66SJohn Wren Kennedyksh /var/tmp/testbackgprocs.ksh 71f38cb554SJohn Wren Kennedyif [[ $? -eq 1 ]]; then 72f38cb554SJohn Wren Kennedy# 73f38cb554SJohn Wren Kennedy# Current ksh being executed has a limit 74f38cb554SJohn Wren Kennedy# of 25 background processes. 75f38cb554SJohn Wren Kennedy# 76f38cb554SJohn Wren Kennedy return 1 77f38cb554SJohn Wren Kennedyelse 78f38cb554SJohn Wren Kennedy return 0 79f38cb554SJohn Wren Kennedyfi 80f38cb554SJohn Wren Kennedy} 81f38cb554SJohn Wren Kennedy 82f38cb554SJohn Wren Kennedyfunction init_setup 83f38cb554SJohn Wren Kennedy{ 84f38cb554SJohn Wren Kennedy 85f38cb554SJohn Wren Kennedy typeset disklist=$1 86f38cb554SJohn Wren Kennedy 87f38cb554SJohn Wren Kennedy create_pool $TESTPOOL "$disklist" 88f38cb554SJohn Wren Kennedy 89f38cb554SJohn Wren Kennedy if ! is_global_zone ; then 90f38cb554SJohn Wren Kennedy reexport_pool 91f38cb554SJohn Wren Kennedy fi 92f38cb554SJohn Wren Kennedy 931d32ba66SJohn Wren Kennedy rm -rf $TESTDIR || log_unresolved Could not remove $TESTDIR 941d32ba66SJohn Wren Kennedy mkdir -p $TESTDIR || log_unresolved Could not create $TESTDIR 95f38cb554SJohn Wren Kennedy 961d32ba66SJohn Wren Kennedy rm -rf $TESTDIR_TGT || log_unresolved Could not remove $TESTDIR_TGT 971d32ba66SJohn Wren Kennedy mkdir -p $TESTDIR_TGT || log_unresolved Could not create $TESTDIR_TGT 98f38cb554SJohn Wren Kennedy 991d32ba66SJohn Wren Kennedy log_must zfs create $TESTPOOL/$TESTFS 1001d32ba66SJohn Wren Kennedy log_must zfs set mountpoint=$TESTDIR $TESTPOOL/$TESTFS 101f38cb554SJohn Wren Kennedy 1021d32ba66SJohn Wren Kennedy log_must zfs create $TESTPOOL/$TESTFS_TGT 1031d32ba66SJohn Wren Kennedy log_must zfs set mountpoint=$TESTDIR_TGT $TESTPOOL/$TESTFS_TGT 104f38cb554SJohn Wren Kennedy 1051d32ba66SJohn Wren Kennedy mkdir -p $OLDDIR || log_unresolved Could not create $OLDDIR 1061d32ba66SJohn Wren Kennedy mkdir -p $NEWDIR_IN_FS || log_unresolved Could not create $NEWDIR_IN_FS 1071d32ba66SJohn Wren Kennedy mkdir -p $NEWDIR_ACROSS_FS || log_unresolved Could not create $NEWDIR_ACROSS_FS 108f38cb554SJohn Wren Kennedy 109f38cb554SJohn Wren Kennedy} 110f38cb554SJohn Wren Kennedy 111f38cb554SJohn Wren Kennedyfunction wait_pid 112f38cb554SJohn Wren Kennedy{ 113f38cb554SJohn Wren Kennedy for pid in $1 114f38cb554SJohn Wren Kennedy do 1151d32ba66SJohn Wren Kennedy ps -e | grep $pid >/dev/null 2>&1 1161d32ba66SJohn Wren Kennedy (( $? == 0 )) && wait $pid 117f38cb554SJohn Wren Kennedy done 118f38cb554SJohn Wren Kennedy} 119f38cb554SJohn Wren Kennedy 120f38cb554SJohn Wren Kennedy 121f38cb554SJohn Wren Kennedy# 122f38cb554SJohn Wren Kennedy# Generate given number files in a 123f38cb554SJohn Wren Kennedy# directory of zfs file system 124f38cb554SJohn Wren Kennedy# $1 - the directory holds the generated files 125f38cb554SJohn Wren Kennedy# $2 - number of to-be-generated files 126f38cb554SJohn Wren Kennedy# 127f38cb554SJohn Wren Kennedy 128f38cb554SJohn Wren Kennedyfunction generate_files 129f38cb554SJohn Wren Kennedy{ 130f38cb554SJohn Wren Kennedy typeset -i count 131f38cb554SJohn Wren Kennedy typeset -i proc_num=0 132f38cb554SJohn Wren Kennedy 133f38cb554SJohn Wren Kennedy if (( $2 == $MVNUMFILES )); then 134f38cb554SJohn Wren Kennedy count=1 135f38cb554SJohn Wren Kennedy else 136f38cb554SJohn Wren Kennedy count=$MVNUMFILES+1 137f38cb554SJohn Wren Kennedy fi 138f38cb554SJohn Wren Kennedy 139f38cb554SJohn Wren Kennedy while (( count <= $2 )) 140f38cb554SJohn Wren Kennedy do 1411d32ba66SJohn Wren Kennedy cp /etc/passwd $1/file_$count \ 142f38cb554SJohn Wren Kennedy > /dev/null 2>&1 & 143f38cb554SJohn Wren Kennedy 144f38cb554SJohn Wren Kennedy PIDS="$PIDS $!" 145f38cb554SJohn Wren Kennedy 1461d32ba66SJohn Wren Kennedy proc_num=`echo $PIDS | wc -w` 147f38cb554SJohn Wren Kennedy if (( proc_num >= GANGPIDS )); then 148f38cb554SJohn Wren Kennedy wait_pid "$PIDS" 149f38cb554SJohn Wren Kennedy proc_num=0 150f38cb554SJohn Wren Kennedy PIDS="" 151f38cb554SJohn Wren Kennedy fi 152f38cb554SJohn Wren Kennedy 153f38cb554SJohn Wren Kennedy (( count = count + 1 )) 154f38cb554SJohn Wren Kennedy done 155f38cb554SJohn Wren Kennedy 156f38cb554SJohn Wren Kennedy} 157f38cb554SJohn Wren Kennedy 158f38cb554SJohn Wren Kennedy# 159f38cb554SJohn Wren Kennedy# Move given number files from one directory to 160f38cb554SJohn Wren Kennedy# another directory in parallel 161f38cb554SJohn Wren Kennedy# $1 - source directory 162f38cb554SJohn Wren Kennedy# $2 - target directory 163f38cb554SJohn Wren Kennedy# 164f38cb554SJohn Wren Kennedyfunction mv_files 165f38cb554SJohn Wren Kennedy{ 166f38cb554SJohn Wren Kennedy 1671d32ba66SJohn Wren Kennedy find $1 -type f -print | xargs -i \ 1681d32ba66SJohn Wren Kennedy mv {} $2 > /dev/null 2>&1 169f38cb554SJohn Wren Kennedy} 170f38cb554SJohn Wren Kennedy 171f38cb554SJohn Wren Kennedy# 172f38cb554SJohn Wren Kennedy# Count the files number after moving, and 173f38cb554SJohn Wren Kennedy# compare it with the original number 174f38cb554SJohn Wren Kennedy# $1 - directory that to be operated 175f38cb554SJohn Wren Kennedy# $2 - original files number 176f38cb554SJohn Wren Kennedy# 177f38cb554SJohn Wren Kennedyfunction count_files 178f38cb554SJohn Wren Kennedy{ 179f38cb554SJohn Wren Kennedy typeset -i file_num 1801d32ba66SJohn Wren Kennedy file_num=`find $1 -type f -print | \ 181f38cb554SJohn Wren Kennedy wc -l` 182f38cb554SJohn Wren Kennedy (( file_num != $2 )) && \ 183f38cb554SJohn Wren Kennedy log_fail "The file number of target directory"\ 184f38cb554SJohn Wren Kennedy "$2 is not equal to that of the source "\ 185f38cb554SJohn Wren Kennedy "directory $1" 186f38cb554SJohn Wren Kennedy 187f38cb554SJohn Wren Kennedy} 188f38cb554SJohn Wren Kennedy 189f38cb554SJohn Wren Kennedy# 190f38cb554SJohn Wren Kennedy# Running the 'mv' test 191f38cb554SJohn Wren Kennedy# $1 - old directory 192f38cb554SJohn Wren Kennedy# $2 - new directory 193f38cb554SJohn Wren Kennedy# 194f38cb554SJohn Wren Kennedyfunction mv_test 195f38cb554SJohn Wren Kennedy{ 196f38cb554SJohn Wren Kennedy typeset old=$1 197f38cb554SJohn Wren Kennedy typeset new=$2 198f38cb554SJohn Wren Kennedy 199f38cb554SJohn Wren Kennedy typeset -i inc_num=$(( MVNUMFILES + MVNUMINCR )) 200f38cb554SJohn Wren Kennedy typeset -i num=0 201f38cb554SJohn Wren Kennedy 202f38cb554SJohn Wren Kennedy for num in $MVNUMFILES $inc_num 203f38cb554SJohn Wren Kennedy do 204f38cb554SJohn Wren Kennedy generate_files $old $num 205f38cb554SJohn Wren Kennedy 206f38cb554SJohn Wren Kennedy mv_files $old $new 207f38cb554SJohn Wren Kennedy count_files $new $num 208f38cb554SJohn Wren Kennedy 209f38cb554SJohn Wren Kennedy mv_files $new $old 210f38cb554SJohn Wren Kennedy count_files $old $num 211f38cb554SJohn Wren Kennedy done 212f38cb554SJohn Wren Kennedy 213f38cb554SJohn Wren Kennedy typeset dir=$(get_device_dir $DISKS) 214f38cb554SJohn Wren Kennedy verify_filesys "$TESTPOOL" "$TESTPOOL/$TESTFS" "$dir" 215f38cb554SJohn Wren Kennedy 216f38cb554SJohn Wren Kennedy return 0 217f38cb554SJohn Wren Kennedy} 218