diff --git a/lustre/tests/acceptance-small.sh b/lustre/tests/acceptance-small.sh
index b6fe84dededf69054f5801d33b2fe59621511926..8d445de8e37e913c2504d70f88ed8712323242c0 100755
--- a/lustre/tests/acceptance-small.sh
+++ b/lustre/tests/acceptance-small.sh
@@ -124,14 +124,14 @@ for NAME in $CONFIGS; do
 		duration=""
 		[ "$SLOW" = "no" ] && duration=" -t 120"
 		if [ "$SLOW" != "no" -o $DB_THREADS -eq 1 ]; then
-			DIR=$DBENCHDIR $myRUNAS bash rundbench 1 $duration
+			$myRUNAS bash rundbench -D $DBENCHDIR 1 $duration || error "dbench failed!"
 			$DEBUG_ON
 			$CLEANUP
 			$SETUP
 		fi
 		if [ $DB_THREADS -gt 1 ]; then
 			$DEBUG_OFF
-			DIR=$DBENCHDIR $myRUNAS bash rundbench $DB_THREADS $duration
+			$myRUNAS bash rundbench -D $DBENCHDIR $DB_THREADS $duration
 			$DEBUG_ON
 			$CLEANUP
 			$SETUP
diff --git a/lustre/tests/rundbench b/lustre/tests/rundbench
index 40a8fdea9d58610210c395a2cb03866298bc9994..ce51eaff7a8dd4bf7d09241bd83982f30cf5d3e7 100755
--- a/lustre/tests/rundbench
+++ b/lustre/tests/rundbench
@@ -1,20 +1,66 @@
 #!/bin/sh
+
+usage() {
+    echo "-C use chroot instead of cd"
+    echo "-D DIR - use 'DIR' as work directory"
+    echo
+    exit;
+}
+
 MOUNT=${MOUNT:-/mnt/lustre}
 DIR=${DIR:-$MOUNT/`hostname`}
-#[ -e /proc/sys/lnet/debug ] && echo 0 > /proc/sys/lnet/debug 
+
+PREFIX="on"
+while getopts "CD:" opt $*; do
+	case $opt in
+		D) [ -d $OPTARG ] && DIR=$OPTARG ;;
+		C) CHROOT="yes" ;;
+		\?) usage ;;
+	esac
+done
+
 mkdir -p $DIR
 TGT=$DIR/client.txt
-DBENCH_LIB=${DBENCH_LIB:-/usr/share/dbench}
-SRC=${SRC:-$DBENCH_LIB/client.txt}
-[ ! -s $TGT -a -s $SRC ] && echo "copying $SRC to $TGT" && cp $SRC $TGT
-SRC=${SRC:-/usr/lib/dbench/client.txt}
-[ ! -s $TGT -a -s $SRC ] && echo "copying $SRC to $TGT" && cp $SRC $TGT
-SRC=/usr/lib/dbench/client_plain.txt
-[ ! -s $TGT -a -s $SRC ] && echo "copying $SRC to $TGT" && cp $SRC $TGT
-[ ! -s $TGT ] && echo "$0: $TGT doesn't exist (SRC=$SRC)" && exit 1
+CLIENT_PREFIX="${DBENCH_LIB} /usr/share/dbench /usr/local/share /usr/lib/dbench"
+CLIENT_FILE="client.txt client_plain.txt dbench_client"
+which dbench > /dev/null 2>&1 || { echo "dbench not installed, skip this test" && return 0; }
+CLIENT=""
+
+for prefix in $CLIENT_PREFIX; do
+	for file in $CLIENT_FILE; do
+		if [ -s "${prefix}/${file}" ]; then
+			CLIENT="${prefix}/${file}";
+			break;
+		fi
+	done
+	[ "x$CLIENT" != "x" ] && break;
+done
+
+if [ -n "$SRC" -a -s "$SRC" ]; then
+	CLIENT=${SRC}
+fi
+
+[ ! -s "$TGT" -a -n "$CLIENT" -a -s "$CLIENT" ] && echo "copying $CLIENT to $TGT" && cp $CLIENT $TGT
+[ ! -s "$TGT" ] && echo "$0: $TGT doesn't exist (SRC=$CLIENT)" && exit 1
+
+if [ "x$CHROOT" == "xyes" ]; then
+	echo "copying necessary libs to $DIR"
+	cp `which dbench` $DIR
+	LIBS71=$(ldd $DIR/dbench|sed -e 's/\t*//' -e 's/.*=> //' -e 's/ .*//' -e 's/^\///')
+	(cd / && tar chf - $LIBS71) | (cd $DIR && tar xvf -)
+	[ $? = 0 ] && ( echo "can't copy libs $LIBS71 to $DIR" && exit 1 )
+	RUN="chroot $DIR"
+	PREFIX="in"
+	PATH=.:/:$PATH
+fi
+
+shift $((OPTIND - 1))
+
 cd $DIR
-echo "running 'dbench $@' on $PWD at `date`"
-dbench -c client.txt $@
+echo "running 'dbench $@' $PREFIX $PWD at `date`"
+$RUN dbench -c client.txt $@
 RC=$?
 [ $RC -ne 0 ] && killall -9 dbench
+
+rm -rf dbench $LIBS71 client.txt
 exit $RC
diff --git a/lustre/tests/sanity.sh b/lustre/tests/sanity.sh
index cf59d9544b967db6292a46c6269e72ce1ddfa978..85911175d7e62374b9191fb30fcefb6d9df54735 100644
--- a/lustre/tests/sanity.sh
+++ b/lustre/tests/sanity.sh
@@ -3037,27 +3037,7 @@ test_69() {
 run_test 69 "verify oa2dentry return -ENOENT doesn't LBUG ======"
 
 test_71() {
-	which dbench > /dev/null 2>&1 || { skip "dbench not installed, skip this test" && return 0; }
-	DBENCH_LIB=${DBENCH_LIB:-/usr/lib/dbench}
-	PATH=${DBENCH_LIB}:${PATH}
-	cp `which dbench` $DIR
-
-	TGT=$DIR/client.txt
-	SRC=${SRC:-$DBENCH_LIB/client.txt}
-	[ ! -e $TGT -a -e $SRC ] && echo "copying $SRC to $TGT" && cp $SRC $TGT
-	SRC=$DBENCH_LIB/client_plain.txt
-	[ ! -e $TGT -a -e $SRC ] && echo "copying $SRC to $TGT" && cp $SRC $TGT
-	echo "copying necessary libs to $DIR"
-	LIBS71=$(ldd $DIR/dbench|sed -e 's/\t*//' -e 's/.*=> //' -e 's/ .*//' -e 's/^\///')
-	(cd / && tar chf - $LIBS71) | (cd $DIR && tar xvf -)
-	[ $? = 0 ] || error "can't copy libs $LIBS71 to $DIR"
-	echo "chroot $DIR /dbench -c client.txt 2"
-	chroot $DIR /dbench -c client.txt 2
-	RC=$?
-
-	rm -rf $DIR/dbench $DIR/lib $DIR/lib64
-
-	return $RC
+    sh rundbench -C -D $DIR 2 || error "dbench failed!"
 }
 run_test 71 "Running dbench on lustre (don't segment fault) ===="