From b5dad3462d30d230734719a2f8995e1450fe7432 Mon Sep 17 00:00:00 2001
From: grev <grev>
Date: Tue, 12 Feb 2008 10:47:16 +0000
Subject: [PATCH] b=14330 i=Adilger

RUNAS dbench and iozone
---
 lustre/tests/acceptance-small.sh | 34 +++++++++++++++++++++-----------
 1 file changed, 23 insertions(+), 11 deletions(-)

diff --git a/lustre/tests/acceptance-small.sh b/lustre/tests/acceptance-small.sh
index 1c3194cbb2..3b649c0091 100755
--- a/lustre/tests/acceptance-small.sh
+++ b/lustre/tests/acceptance-small.sh
@@ -99,27 +99,33 @@ for NAME in $CONFIGS; do
 	which dbench > /dev/null 2>&1 || DBENCH=no
 	if [ "$DBENCH" != "no" ]; then
 	        title dbench
+		DBENCHDIR=$MOUNT/$HOSTNAME
+		mkdir -p $DBENCHDIR
 		SPACE=`df -P $MOUNT | tail -n 1 | awk '{ print $4 }'`
 		DB_THREADS=$((SPACE / 50000))
 		[ $THREADS -lt $DB_THREADS ] && DB_THREADS=$THREADS
 
 		$DEBUG_OFF
+		myUID=$RUNAS_ID
+		myRUNAS=$RUNAS
+		FAIL_ON_ERROR=false check_runas_id $myUID $myRUNAS || { myRUNAS="" && myUID=$UID; }
+		chown $myUID:$myUID $DBENCHDIR
 		duration=""
 		[ "$SLOW" = "no" ] && duration=" -t 120"
 		if [ "$SLOW" != "no" -o $DB_THREADS -eq 1 ]; then
-			bash rundbench 1 $duration
+			DIR=$DBENCHDIR $myRUNAS bash rundbench 1 $duration
 			$DEBUG_ON
 			$CLEANUP
 			$SETUP
 		fi
 		if [ $DB_THREADS -gt 1 ]; then
 			$DEBUG_OFF
-			bash rundbench $DB_THREADS $duration
+			DIR=$DBENCHDIR $myRUNAS bash rundbench $DB_THREADS $duration
 			$DEBUG_ON
 			$CLEANUP
 			$SETUP
 		fi
-		rm -f /mnt/lustre/`hostname`/client.txt
+		rm -rf $DBENCHDIR
 		DBENCH="done"
 	fi
 
@@ -150,18 +156,23 @@ for NAME in $CONFIGS; do
 	which iozone > /dev/null 2>&1 || IOZONE=no
 	if [ "$IOZONE" != "no" ]; then
 	        title iozone
-		mkdir -p $MOUNT/d0.iozone
-		$LFS setstripe -c -1 $MOUNT/d0.iozone
+		IOZDIR=$MOUNT/d0.iozone
+		mkdir -p $IOZDIR
+		$LFS setstripe -c -1 $IOZDIR
 		sync
 		MIN=`cat /proc/fs/lustre/osc/*/kbytesavail | sort -n | head -n1`
 		SPACE=$(( OSTCOUNT * MIN ))
 		[ $SPACE -lt $SIZE ] && SIZE=$((SPACE * 3 / 4))
 		log "min OST has ${MIN}kB available, using ${SIZE}kB file size"
 		IOZONE_OPTS="-i 0 -i 1 -i 2 -e -+d -r $RSIZE -s $SIZE"
-		IOZFILE="$MOUNT/d0.iozone/iozone"
+		IOZFILE="$IOZDIR/iozone"
 		# $SPACE was calculated with all OSTs
 		$DEBUG_OFF
-		iozone $IOZONE_OPTS -f $IOZFILE
+		myUID=$RUNAS_ID
+		myRUNAS=$RUNAS
+		FAIL_ON_ERROR=false check_runas_id $myUID $myRUNAS || { myRUNAS="" && myUID=$UID; }
+		chown $myUID:$myUID $IOZDIR
+		$myRUNAS iozone $IOZONE_OPTS -f $IOZFILE
 		$DEBUG_ON
 		$CLEANUP
 		$SETUP
@@ -176,7 +187,8 @@ for NAME in $CONFIGS; do
 		fi
 		if [ "$O_DIRECT" != "no" -a "$IOZONE_DIR" != "no" ]; then
 			$DEBUG_OFF
-			iozone -I $IOZONE_OPTS $IOZFILE.odir
+			# cd TMP to have write permission for tmp file iozone writes
+			( cd $TMP && $myRUNAS iozone -I $IOZONE_OPTS $IOZFILE.odir )
 			$DEBUG_ON
 			$CLEANUP
 			$SETUP
@@ -187,15 +199,15 @@ for NAME in $CONFIGS; do
 		[ $THREADS -lt $IOZ_THREADS ] && IOZ_THREADS=$THREADS
 		IOZVER=`iozone -v | awk '/Revision:/ {print $3}' | tr -d .`
 		if [ "$IOZ_THREADS" -gt 1 -a "$IOZVER" -ge 3145 ]; then
-			$LFS setstripe -c 1 $MOUNT/d0.iozone
+			$LFS setstripe -c 1 $IOZDIR
 			$DEBUG_OFF
 			THREAD=1
 			IOZFILE="-F "
 			while [ $THREAD -le $IOZ_THREADS ]; do
-				IOZFILE="$IOZFILE $MOUNT/iozone.$THREAD"
+				IOZFILE="$IOZFILE $IOZDIR/iozone.$THREAD"
 				THREAD=$((THREAD + 1))
 			done
-			iozone $IOZONE_OPTS -t $IOZ_THREADS $IOZFILE
+			$myRUNAS iozone $IOZONE_OPTS -t $IOZ_THREADS $IOZFILE
 			$DEBUG_ON
 			$CLEANUP
 			$SETUP
-- 
GitLab