1# Copyright (c) 2015 Oracle and/or its affiliates. All Rights Reserved. 2# Copyright (c) International Business Machines Corp., 2001 3# 4# This program is free software; you can redistribute it and/or 5# modify it under the terms of the GNU General Public License as 6# published by the Free Software Foundation; either version 2 of 7# the License, or (at your option) any later version. 8# 9# This program is distributed in the hope that it would be useful, 10# but WITHOUT ANY WARRANTY; without even the implied warranty of 11# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12# GNU General Public License for more details. 13# 14# You should have received a copy of the GNU General Public License 15# along with this program. If not, see <http://www.gnu.org/licenses/>. 16 17nfs_setup() 18{ 19 VERSION=${VERSION:=3} 20 NFILES=${NFILES:=1000} 21 SOCKET_TYPE="${SOCKET_TYPE:=udp}${TST_IPV6}" 22 NFS_TYPE=${NFS_TYPE:=nfs} 23 24 tst_check_cmds mount exportfs 25 26 tst_tmpdir 27 28 # Check if current filesystem is NFS 29 if [ "$(stat -f . | grep "Type: nfs")" ]; then 30 tst_brkm TCONF "Cannot run nfs-stress test on mounted NFS" 31 fi 32 33 tst_resm TINFO "NFS_TYPE: $NFS_TYPE, NFS VERSION: $VERSION" 34 tst_resm TINFO "NFILES: $NFILES, SOCKET_TYPE: $SOCKET_TYPE" 35 36 if [ "$NFS_TYPE" != "nfs4" ]; then 37 OPTS=${OPTS:="-o proto=$SOCKET_TYPE,vers=$VERSION "} 38 fi 39 40 tst_rhost_run -s -c "mkdir -p $TST_TMPDIR" 41 42 if [ $TST_IPV6 ]; then 43 REMOTE_DIR="[$(tst_ipaddr rhost)]:$TST_TMPDIR" 44 else 45 REMOTE_DIR="$(tst_ipaddr rhost):$TST_TMPDIR" 46 fi 47 48 if [ "$NFS_TYPE" = "nfs4" ]; then 49 tst_rhost_run -s -c "mkdir -p /export$TST_TMPDIR" 50 tst_rhost_run -s -c "mount --bind $TST_TMPDIR /export$TST_TMPDIR" 51 tst_rhost_run -s -c "exportfs -o no_root_squash,rw,nohide,\ 52 insecure,no_subtree_check *:$TST_TMPDIR" 53 else 54 tst_rhost_run -s -c "exportfs -i -o no_root_squash,rw \ 55 *:$TST_TMPDIR" 56 fi 57 58 tst_resm TINFO "Mounting NFS '$REMOTE_DIR' with options '$OPTS'" 59 ROD mount -t $NFS_TYPE $OPTS $REMOTE_DIR $TST_TMPDIR 60 cd $TST_TMPDIR 61} 62 63nfs_cleanup() 64{ 65 tst_resm TINFO "Cleaning up testcase" 66 cd $LTPROOT 67 grep -q "$TST_TMPDIR" /proc/mounts && umount $TST_TMPDIR 68 69 tst_rhost_run -c "exportfs -u *:$TST_TMPDIR" 70 tst_rhost_run -c "rm -rf $TST_TMPDIR" 71} 72