blob: 03ad05693a59dfbec4bd2c6b367f999e98cf6650 [file] [log] [blame]
#! /bin/sh
# Copyright (c) 2015 Oracle and/or its affiliates. All Rights Reserved.
# Copyright (c) International Business Machines Corp., 2001
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation; either version 2 of
# the License, or (at your option) any later version.
#
# This program is distributed in the hope that it would be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# DESCRIPTION: This script sets up the NFS directories in the remote machine
# and runs the LTP's filesystem test: fs_inod.
#
# Created by: Robbie Williamson (robbiew@us.ibm.com)
TCID="nfs03"
TST_TOTAL=1
TST_CLEANUP="nfs03_cleanup"
. nfs_lib.sh
. test_net.sh
DIR_NUM=${DIR_NUM:-"100"}
FILE_NUM=${FILE_NUM:-"100"}
THREAD_NUM=${THREAD_NUM:-"1"}
ORIG_NFSD=
make_subdirs()
{
tst_resm TINFO "make '$DIR_NUM' directories"
for i in $(seq 0 $DIR_NUM); do
ROD mkdir -p dir$i
done
}
touch_files()
{
tst_resm TINFO "create files [0 - $DIR_NUM]/file$DIR_NUM[0 - $FILE_NUM]"
for j in $(seq 0 $DIR_NUM); do
cd dir$j
for k in $(seq 0 $FILE_NUM); do
ROD \>file$j$k
done
cd ..
done
}
rm_files()
{
tst_resm TINFO "rm files [0 - $DIR_NUM]/file$DIR_NUM[0 - $FILE_NUM]"
for j in $(seq 0 $DIR_NUM); do
cd dir$j
for k in $(seq 0 $FILE_NUM); do
ROD rm -f file$j$k
done
cd ..
done
}
do_test()
{
tst_resm TINFO "Multiple processes creating and deleting files"
tst_resm TINFO "creating dir1 subdirectories & files"
ROD mkdir -p dir1
ROD cd dir1
make_subdirs
touch_files &
pid1=$!
cd ..
tst_resm TINFO "creating dir2 subdirectories & files"
ROD mkdir -p dir2
ROD cd dir2
make_subdirs
touch_files &
pid2=$!
tst_resm TINFO "cd dir1 & removing files"
ROD cd ../dir1
wait $pid1
rm_files &
tst_resm TINFO "cd dir2 & removing files"
ROD cd ../dir2
wait $pid2
rm_files &
# wait for all background processes to complete execution
wait
tst_resm TPASS "test done"
}
nfs03_setup()
{
nfs_setup
tst_resm TINFO "Setting server side nfsd count to $THREAD_NUM"
ORIG_NFSD=$(tst_rhost_run -s -c 'ps -ef | grep nfsd | grep -v grep | wc -l')
tst_rhost_run -s -c "rpc.nfsd $THREAD_NUM"
}
nfs03_cleanup()
{
tst_rhost_run -c "rpc.nfsd $ORIG_NFSD"
nfs_cleanup
}
nfs03_setup
do_test
tst_exit