diff --git a/package/base-files/files/sbin/usb-storage b/package/base-files/files/sbin/usb-storage
index 6c32de8982c9a4379dfe8616eb634f2314200d84..23be38593e481dbce6c42035a2a736e93d6a01bd 100755
--- a/package/base-files/files/sbin/usb-storage
+++ b/package/base-files/files/sbin/usb-storage
@@ -1,7 +1,5 @@
 #!/bin/sh
-
 # Copyright (C) 2007 OpenWrt.org
-
 logger "usb device is mass storage"
 i=0
 while [ $i -le 10 ]; do
@@ -9,20 +7,19 @@ while [ $i -le 10 ]; do
 	i=$(($i+1))
 	cd /sys${DEVPATH}
 	for blk in `find host* -type d 2>/dev/null`; do
-		cd /sys/${DEVPATH}/${blk}
-		BLK=$(find block* -type d 2>/dev/null)
-		[ -n "${BLK}" ] && {
-			cd /sys${DEVPATH}/${blk}/${BLK}
-			ls /dev/ > /tmp/d
-			sleep 2
-			for node in `find sd* -type d 2>/dev/null| grep -v "/"`; do
-				echo "mounting /dev/${node} on /mnt/usbdrive"
-				mkdir -p /mnt/usbdrive
-				mount /dev/${node} /mnt/usbdrive
-				exit 0
+		[ -d /sys/${DEVPATH}/${blk}/block/ ] && {
+			cd 
+			for disc in `find /sys/${DEVPATH}/${blk}/block -name sd*`; do	
+				sleep 2
+				cd $disc
+				for node in `find . -name sd* | cut -d "/" -f2`; do
+					echo "mounting /dev/${node} on /mnt/usbdrive"
+					mkdir -p /mnt/usbdrive
+					mount /dev/${node} /mnt/usbdrive
+					i=20	
+				done
 			done
 		}
 	done
 	sleep 1
 done
-