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