diff --git a/lustre/tests/sanity.sh b/lustre/tests/sanity.sh
index 60b66ee4b7294f44d2149933ecf85ae38b2432be..d227799dbba90cd7b5c7e0f920fbfbd3546cdf68 100644
--- a/lustre/tests/sanity.sh
+++ b/lustre/tests/sanity.sh
@@ -2199,39 +2199,54 @@ test_51b() {
 run_test 51b "mkdir .../t-0 --- .../t-$NUMTEST ===================="
 
 test_51bb() {
-	[ -z "$CLIENTS" ] && skip "needs >= 2 CLIENTS" && return
 	[ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs" && return 
- 
-	NUMFREE=`df -i -P $DIR | tail -n 1 | awk '{ print $4 }'`
-	[ $NUMFREE -lt 21000 ] && \
-		skip "not enough free inodes ($NUMFREE)" && \
-		return
 
-	check_kernel_version 40 || NUMTEST=31000
-	[ $NUMFREE -lt $NUMTEST ] && NUMTEST=$(($NUMFREE - 50))
+	local ndirs=${TEST51BB_NDIRS:-10}
+	local nfiles=${TEST51BB_NFILES:-100}
 
-	mkdir -p $DIR/d51bb
+	local numfree=`df -i -P $DIR | tail -n 1 | awk '{ print $4 }'`
 
-	IUSED=$(lfs df -i $DIR | grep MDT | awk '{print $3}')
+	[ $numfree -lt $(( ndirs * nfiles)) ] && \
+		nfiles=$(( numfree / ndirs - 10 ))
+
+	local dir=$DIR/d51bb
+	mkdir -p $dir
+	local savePOLICY=$(lctl get_param -n lmv.*.placement)
+	lctl set_param -n lmv.*.placement=CHAR
+
+	lfs df -i $dir
+	local IUSED=$(lfs df -i $dir | grep MDT | awk '{print $3}')
 	OLDUSED=($IUSED)
 
-	do_nodes $CLIENTS "mkdir -p $DIR/\$(hostname)"
+	declare -a dirs
+	for ((i=0; i < $ndirs; i++)); do
+		dirs[i]=$dir/$RANDOM
+		echo Creating directory ${dirs[i]} 
+		mkdir -p ${dirs[i]}
+		ls $dir
+		echo Creating $nfiles in dir ${dirs[i]} ...
+		echo "createmany -o ${dirs[i]}/$tfile- $nfiles"
+		createmany -o ${dirs[i]}/$tfile- $nfiles
+	done
+	ls $dir
 
-	ls $DIR
+	sleep 1
 
-	do_nodes $CLIENTS "createmany -d $DIR/\$(hostname)/t- $NUMTEST"
-	IUSED=$(lfs df -i $DIR | grep MDT | awk '{print $3}')
+	IUSED=$(lfs df -i $dir | grep MDT | awk '{print $3}')
 	NEWUSED=($IUSED)
 
 	local rc=0
 	for ((i=0; i<${#NEWUSED[@]}; i++)); do
 		echo "mds $i: inodes count OLD ${OLDUSED[$i]} NEW ${NEWUSED[$i]}"
-		[ ${OLDUSED[$i]} -lt ${NEWUSED[$i]} ] || rc=1
+		[ ${OLDUSED[$i]} -lt ${NEWUSED[$i]} ] || rc=$((rc + 1))
 	done
 	
-	[ $rc -ne 0 ] && error "no CMD functionality!"
+	lctl set_param -n lmv.*.placement=$savePOLICY
+
+	[ $rc -ne $MDSCOUNT ] || \
+		error "Objects/inodes are not distributed over all mds servers"
 }
-run_test 51bb "mkdir .../t-0 --- .../t-$NUMTEST (CMD) ===================="
+run_test 51bb "mkdir createmany CMD $MDSCOUNT  ===================="
 
 
 test_51c() {