diff mbox series

[v5,1/5] nfs_lib.sh: Cleanup local and remote directories setup

Message ID 20230504131414.3826283-2-pvorel@suse.cz (mailing list archive)
State New, archived
Headers show
Series NFS: test on btrfs, ext4, xfs filesystems | expand

Commit Message

Petr Vorel May 4, 2023, 1:14 p.m. UTC
Logic for creating local and remote directories was on more places.
Create get_local_dir() and get_remote_dir() functions to keep it on
single place.

local dir is needed in nfs_mount(), but was defined in nfs_setup()
and reused local variable with shell inheritance (ugly!), because there
were all parameters from loop.  Similarly, remote dir is needed in
both nfs_mount() and nfs_setup_server(), but created with shell
inheritance in nfs_setup().  Pass these params to nfs_mount() and
nfs_setup_server() and define variables with new functions
get_local_dir() and get_remote_dir().

Use get_remote_dir() in nfs_get_remote_path().

Move cd to local directory to the end of nfs_mount() (it used to cd
after nfs_mount(), but only if -v parameter contained single version,
but it does not harm to always cd).

Signed-off-by: Petr Vorel <pvorel@suse.cz>
---
 testcases/network/nfs/nfs_stress/nfs_lib.sh | 52 ++++++++++++++-------
 1 file changed, 34 insertions(+), 18 deletions(-)

Comments

Cyril Hrubis May 4, 2023, 1:58 p.m. UTC | #1
Hi!
> Signed-off-by: Petr Vorel <pvorel@suse.cz>
> ---
>  testcases/network/nfs/nfs_stress/nfs_lib.sh | 52 ++++++++++++++-------
>  1 file changed, 34 insertions(+), 18 deletions(-)
> 
> diff --git a/testcases/network/nfs/nfs_stress/nfs_lib.sh b/testcases/network/nfs/nfs_stress/nfs_lib.sh
> index af7d46a21..1b5604ab5 100644
> --- a/testcases/network/nfs/nfs_stress/nfs_lib.sh
> +++ b/testcases/network/nfs/nfs_stress/nfs_lib.sh
> @@ -1,6 +1,6 @@
>  #!/bin/sh
>  # SPDX-License-Identifier: GPL-2.0-or-later
> -# Copyright (c) Linux Test Project, 2016-2022
> +# Copyright (c) Linux Test Project, 2016-2023
>  # Copyright (c) 2015-2018 Oracle and/or its affiliates. All Rights Reserved.
>  # Copyright (c) International Business Machines  Corp., 2001
>  
> @@ -53,6 +53,24 @@ get_socket_type()
>  	done
>  }
>  
> +# directory mounted by NFS client
> +get_local_dir()
> +{
> +	local v="$1"
> +	local n="$2"
> +
> +	echo "$TST_TMPDIR/$v/$n"
> +}
> +
> +# directory on NFS server
> +get_remote_dir()
> +{
> +	local v="$1"
> +	local n="$2"
> +
> +	echo "$TST_TMPDIR/$v/$n"
> +}

It's a bit puzzling why we have two identical functions with a different
name...
Petr Vorel May 4, 2023, 9:16 p.m. UTC | #2
Hi Cyril,

...
> > +# directory mounted by NFS client
> > +get_local_dir()
> > +{
> > +	local v="$1"
> > +	local n="$2"
> > +
> > +	echo "$TST_TMPDIR/$v/$n"
> > +}
> > +
> > +# directory on NFS server
> > +get_remote_dir()
> > +{
> > +	local v="$1"
> > +	local n="$2"
> > +
> > +	echo "$TST_TMPDIR/$v/$n"
> > +}

> It's a bit puzzling why we have two identical functions with a different
> name...

It's a preparation for TST_ALL_FILESYSTEMS=1 where the location changes.
I can squash this into that commit where it changes.

Kind regards,
Petr
Cyril Hrubis May 5, 2023, 10:42 a.m. UTC | #3
Hi!
> > It's a bit puzzling why we have two identical functions with a different
> > name...
> 
> It's a preparation for TST_ALL_FILESYSTEMS=1 where the location changes.
> I can squash this into that commit where it changes.

That is the missing bit. No need to squash maybe just note that the
directory will change in the last commit of the patchset.
Petr Vorel May 5, 2023, 10:44 a.m. UTC | #4
Hi Cyril,

> Hi!
> > > It's a bit puzzling why we have two identical functions with a different
> > > name...

> > It's a preparation for TST_ALL_FILESYSTEMS=1 where the location changes.
> > I can squash this into that commit where it changes.

> That is the missing bit. No need to squash maybe just note that the
> directory will change in the last commit of the patchset.

+1 (I intended and obviously forgot).

Kind regards,
Petr
diff mbox series

Patch

diff --git a/testcases/network/nfs/nfs_stress/nfs_lib.sh b/testcases/network/nfs/nfs_stress/nfs_lib.sh
index af7d46a21..1b5604ab5 100644
--- a/testcases/network/nfs/nfs_stress/nfs_lib.sh
+++ b/testcases/network/nfs/nfs_stress/nfs_lib.sh
@@ -1,6 +1,6 @@ 
 #!/bin/sh
 # SPDX-License-Identifier: GPL-2.0-or-later
-# Copyright (c) Linux Test Project, 2016-2022
+# Copyright (c) Linux Test Project, 2016-2023
 # Copyright (c) 2015-2018 Oracle and/or its affiliates. All Rights Reserved.
 # Copyright (c) International Business Machines  Corp., 2001
 
@@ -53,6 +53,24 @@  get_socket_type()
 	done
 }
 
+# directory mounted by NFS client
+get_local_dir()
+{
+	local v="$1"
+	local n="$2"
+
+	echo "$TST_TMPDIR/$v/$n"
+}
+
+# directory on NFS server
+get_remote_dir()
+{
+	local v="$1"
+	local n="$2"
+
+	echo "$TST_TMPDIR/$v/$n"
+}
+
 nfs_get_remote_path()
 {
 	local v
@@ -63,7 +81,7 @@  nfs_get_remote_path()
 	done
 
 	v=${1:-$v}
-	echo "$TST_TMPDIR/$v/$type"
+	echo "$(get_remote_dir $v $type)"
 }
 
 nfs_server_udp_enabled()
@@ -78,8 +96,8 @@  nfs_server_udp_enabled()
 
 nfs_setup_server()
 {
-
-	local fsid="$1"
+	local remote_dir="$1"
+	local fsid="$2"
 	local export_cmd="exportfs -i -o fsid=$fsid,no_root_squash,rw *:$remote_dir"
 
 	[ -z "$fsid" ] && tst_brk TBROK "empty fsid"
@@ -97,10 +115,14 @@  nfs_setup_server()
 
 nfs_mount()
 {
-	local opts="$1"
+	local local_dir="$1"
+	local remote_dir="$2"
+	local opts="$3"
 	local host_type=rhost
 	local mount_dir
 
+	mkdir -p "$local_dir"
+
 	tst_net_use_netns && host_type=
 
 	if [ $TST_IPV6 ]; then
@@ -131,6 +153,8 @@  nfs_mount()
 
 		tst_brk TBROK "mount command failed"
 	fi
+
+	cd "$local_dir"
 }
 
 nfs_setup()
@@ -162,20 +186,12 @@  nfs_setup()
 			tst_brk TCONF "UDP support disabled on NFS server"
 		fi
 
-		local_dir="$TST_TMPDIR/$i/$n"
-		remote_dir="$TST_TMPDIR/$i/$type"
-		mkdir -p $local_dir
-
-		nfs_setup_server $(($$ + n))
-
-		nfs_mount "-o proto=$type,vers=$i"
+		remote_dir="$(get_remote_dir $i $type)"
+		nfs_setup_server "$remote_dir" "$(($$ + n))"
+		nfs_mount "$(get_local_dir $i $n)" "$remote_dir" "-o proto=$type,vers=$i"
 
 		n=$(( n + 1 ))
 	done
-
-	if [ "$n" -eq 1 ]; then
-		cd ${VERSION}/0
-	fi
 }
 
 nfs_cleanup()
@@ -190,7 +206,7 @@  nfs_cleanup()
 
 	local n=0
 	for i in $VERSION; do
-		local_dir="$TST_TMPDIR/$i/$n"
+		local_dir="$(get_local_dir $i $n)"
 		grep -q "$local_dir" /proc/mounts && umount $local_dir
 		n=$(( n + 1 ))
 	done
@@ -198,7 +214,7 @@  nfs_cleanup()
 	n=0
 	for i in $VERSION; do
 		type=$(get_socket_type $n)
-		remote_dir="$TST_TMPDIR/$i/$type"
+		remote_dir="$(get_remote_dir $i $type)"
 		tst_rhost_run -c "test -d $remote_dir && exportfs -u *:$remote_dir"
 		tst_rhost_run -c "test -d $remote_dir && rm -rf $remote_dir"
 		n=$(( n + 1 ))