1#! /bin/sh 2# Copyright (c) 2015 Oracle and/or its affiliates. All Rights Reserved. 3# Copyright (c) International Business Machines Corp., 2001 4# 5# This program is free software; you can redistribute it and/or 6# modify it under the terms of the GNU General Public License as 7# published by the Free Software Foundation; either version 2 of 8# the License, or (at your option) any later version. 9# 10# This program is distributed in the hope that it would be useful, 11# but WITHOUT ANY WARRANTY; without even the implied warranty of 12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13# GNU General Public License for more details. 14# 15# You should have received a copy of the GNU General Public License 16# along with this program. If not, see <http://www.gnu.org/licenses/>. 17# 18# DESCRIPTION: This script sets up the NFS directories in the remote machine 19# and runs the LTP's filesystem test: fs_inod. 20# 21# Created by: Robbie Williamson (robbiew@us.ibm.com) 22 23TCID="nfs03" 24TST_TOTAL=1 25TST_CLEANUP="nfs03_cleanup" 26 27. nfs_lib.sh 28. test_net.sh 29 30DIR_NUM=${DIR_NUM:-"100"} 31FILE_NUM=${FILE_NUM:-"100"} 32THREAD_NUM=${THREAD_NUM:-"1"} 33ORIG_NFSD= 34 35make_subdirs() 36{ 37 tst_resm TINFO "make '$DIR_NUM' directories" 38 for i in $(seq 0 $DIR_NUM); do 39 ROD mkdir -p dir$i 40 done 41} 42 43touch_files() 44{ 45 tst_resm TINFO "create files [0 - $DIR_NUM]/file$DIR_NUM[0 - $FILE_NUM]" 46 for j in $(seq 0 $DIR_NUM); do 47 cd dir$j 48 for k in $(seq 0 $FILE_NUM); do 49 ROD \>file$j$k 50 done 51 cd .. 52 done 53} 54 55rm_files() 56{ 57 tst_resm TINFO "rm files [0 - $DIR_NUM]/file$DIR_NUM[0 - $FILE_NUM]" 58 for j in $(seq 0 $DIR_NUM); do 59 cd dir$j 60 for k in $(seq 0 $FILE_NUM); do 61 ROD rm -f file$j$k 62 done 63 cd .. 64 done 65} 66 67do_test() 68{ 69 tst_resm TINFO "Multiple processes creating and deleting files" 70 71 tst_resm TINFO "creating dir1 subdirectories & files" 72 ROD mkdir -p dir1 73 ROD cd dir1 74 make_subdirs 75 touch_files & 76 pid1=$! 77 cd .. 78 79 tst_resm TINFO "creating dir2 subdirectories & files" 80 ROD mkdir -p dir2 81 ROD cd dir2 82 make_subdirs 83 touch_files & 84 pid2=$! 85 86 tst_resm TINFO "cd dir1 & removing files" 87 ROD cd ../dir1 88 wait $pid1 89 rm_files & 90 91 tst_resm TINFO "cd dir2 & removing files" 92 ROD cd ../dir2 93 wait $pid2 94 rm_files & 95 96 # wait for all background processes to complete execution 97 wait 98 99 tst_resm TPASS "test done" 100} 101 102nfs03_setup() 103{ 104 nfs_setup 105 106 tst_resm TINFO "Setting server side nfsd count to $THREAD_NUM" 107 ORIG_NFSD=$(tst_rhost_run -s -c 'ps -ef | grep nfsd | grep -v grep | wc -l') 108 tst_rhost_run -s -c "rpc.nfsd $THREAD_NUM" 109} 110 111nfs03_cleanup() 112{ 113 tst_rhost_run -c "rpc.nfsd $ORIG_NFSD" 114 nfs_cleanup 115} 116 117nfs03_setup 118 119do_test 120 121tst_exit 122