1f08c3bdfSopenharmony_ci#! /bin/sh
2f08c3bdfSopenharmony_ci# SPDX-License-Identifier: GPL-2.0-or-later
3f08c3bdfSopenharmony_ci# Copyright (c) 2015-2018 Oracle and/or its affiliates. All Rights Reserved.
4f08c3bdfSopenharmony_ci# Copyright (c) International Business Machines  Corp., 2001
5f08c3bdfSopenharmony_ci# Created by: Robbie Williamson (robbiew@us.ibm.com)
6f08c3bdfSopenharmony_ci
7f08c3bdfSopenharmony_ciTST_CLEANUP="nfs03_cleanup"
8f08c3bdfSopenharmony_ciTST_SETUP="nfs03_setup"
9f08c3bdfSopenharmony_ciTST_TESTFUNC="do_test"
10f08c3bdfSopenharmony_ci
11f08c3bdfSopenharmony_ciDIR_NUM=${DIR_NUM:-"100"}
12f08c3bdfSopenharmony_ciFILE_NUM=${FILE_NUM:-"100"}
13f08c3bdfSopenharmony_ciTHREAD_NUM=${THREAD_NUM:-"1"}
14f08c3bdfSopenharmony_ciORIG_NFSD=
15f08c3bdfSopenharmony_ci
16f08c3bdfSopenharmony_cimake_subdirs()
17f08c3bdfSopenharmony_ci{
18f08c3bdfSopenharmony_ci	tst_res TINFO "make '$DIR_NUM' directories"
19f08c3bdfSopenharmony_ci	for i in $(seq 0 $DIR_NUM); do
20f08c3bdfSopenharmony_ci		ROD mkdir -p dir$i
21f08c3bdfSopenharmony_ci	done
22f08c3bdfSopenharmony_ci}
23f08c3bdfSopenharmony_ci
24f08c3bdfSopenharmony_citouch_files()
25f08c3bdfSopenharmony_ci{
26f08c3bdfSopenharmony_ci	for j in $(seq 0 $DIR_NUM); do
27f08c3bdfSopenharmony_ci		cd dir$j
28f08c3bdfSopenharmony_ci		for k in $(seq 0 $FILE_NUM); do
29f08c3bdfSopenharmony_ci			ROD touch file$j$k
30f08c3bdfSopenharmony_ci		done
31f08c3bdfSopenharmony_ci		cd ..
32f08c3bdfSopenharmony_ci	done
33f08c3bdfSopenharmony_ci}
34f08c3bdfSopenharmony_ci
35f08c3bdfSopenharmony_cirm_files()
36f08c3bdfSopenharmony_ci{
37f08c3bdfSopenharmony_ci	for j in $(seq 0 $DIR_NUM); do
38f08c3bdfSopenharmony_ci		cd dir$j
39f08c3bdfSopenharmony_ci		for k in $(seq 0 $FILE_NUM); do
40f08c3bdfSopenharmony_ci			ROD rm -f file$j$k
41f08c3bdfSopenharmony_ci		done
42f08c3bdfSopenharmony_ci		cd ..
43f08c3bdfSopenharmony_ci	done
44f08c3bdfSopenharmony_ci}
45f08c3bdfSopenharmony_ci
46f08c3bdfSopenharmony_cido_test()
47f08c3bdfSopenharmony_ci{
48f08c3bdfSopenharmony_ci	tst_res TINFO "Multiple processes creating and deleting files"
49f08c3bdfSopenharmony_ci
50f08c3bdfSopenharmony_ci	tst_res TINFO "creating dir1 subdirectories & files"
51f08c3bdfSopenharmony_ci	ROD mkdir -p dir1
52f08c3bdfSopenharmony_ci	cd dir1
53f08c3bdfSopenharmony_ci	make_subdirs
54f08c3bdfSopenharmony_ci	touch_files &
55f08c3bdfSopenharmony_ci	pid1=$!
56f08c3bdfSopenharmony_ci	cd ..
57f08c3bdfSopenharmony_ci
58f08c3bdfSopenharmony_ci	tst_res TINFO "creating dir2 subdirectories & files"
59f08c3bdfSopenharmony_ci	ROD mkdir -p dir2
60f08c3bdfSopenharmony_ci	cd dir2
61f08c3bdfSopenharmony_ci	make_subdirs
62f08c3bdfSopenharmony_ci	touch_files &
63f08c3bdfSopenharmony_ci	pid2=$!
64f08c3bdfSopenharmony_ci
65f08c3bdfSopenharmony_ci	tst_res TINFO "cd dir1 & removing files"
66f08c3bdfSopenharmony_ci	cd ../dir1
67f08c3bdfSopenharmony_ci	wait $pid1
68f08c3bdfSopenharmony_ci	rm_files &
69f08c3bdfSopenharmony_ci	pid3=$!
70f08c3bdfSopenharmony_ci
71f08c3bdfSopenharmony_ci	tst_res TINFO "cd dir2 & removing files"
72f08c3bdfSopenharmony_ci	cd ../dir2
73f08c3bdfSopenharmony_ci	wait $pid2
74f08c3bdfSopenharmony_ci	rm_files
75f08c3bdfSopenharmony_ci	wait $pid3
76f08c3bdfSopenharmony_ci
77f08c3bdfSopenharmony_ci	tst_res TPASS "test done"
78f08c3bdfSopenharmony_ci}
79f08c3bdfSopenharmony_ci
80f08c3bdfSopenharmony_cinfs03_setup()
81f08c3bdfSopenharmony_ci{
82f08c3bdfSopenharmony_ci	nfs_setup
83f08c3bdfSopenharmony_ci
84f08c3bdfSopenharmony_ci	tst_res TINFO "Setting server side nfsd count to $THREAD_NUM"
85f08c3bdfSopenharmony_ci	ORIG_NFSD=$(tst_rhost_run -s -c 'ps -ef | grep -w nfsd | grep -v grep | wc -l')
86f08c3bdfSopenharmony_ci	tst_rhost_run -s -c "rpc.nfsd $THREAD_NUM"
87f08c3bdfSopenharmony_ci}
88f08c3bdfSopenharmony_ci
89f08c3bdfSopenharmony_cinfs03_cleanup()
90f08c3bdfSopenharmony_ci{
91f08c3bdfSopenharmony_ci	tst_rhost_run -c "rpc.nfsd $ORIG_NFSD"
92f08c3bdfSopenharmony_ci	nfs_cleanup
93f08c3bdfSopenharmony_ci}
94f08c3bdfSopenharmony_ci
95f08c3bdfSopenharmony_ci. nfs_lib.sh
96f08c3bdfSopenharmony_citst_run
97