The original /sbin/usb-storage script didn't work on my NSLU2.

The below patch should be backwards compatible with the original script.

I've tested it thoroughly, and it even works with hotplug, although I
currently have to edit /etc/fstab prior to the hotplug, if the volume is
a different file system then the previous volume that was mounted.

Signed-off-by: Ross Smith <openwrtspam at netebb.com>

---

Index: usb-storage
===================================================================
--- usb-storage (revision 11495)
+++ usb-storage (working copy)
@@ -8,19 +8,34 @@
        logger "waiting on usb drive $i ..."
        i=$(($i+1))
        cd /sys${DEVPATH}
-       for blk in `find host* -type d 2>/dev/null`; do
+       for blk in `find host* -maxdepth 0 -type d 2>/dev/null`; do
                cd /sys/${DEVPATH}/${blk}
-               BLK=$(find block* -type l 2>/dev/null)
+               BLK=$(find . -name 'block*' \( -type l -o -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
+                               cd /sys${DEVPATH}/${blk}/${BLK}/${node}
+                               PARTS=`find ${node}* -type d 2>/dev/null | grep 
-v "/"`
+                               if [ -z "${PARTS}" ]
+                               then
+                                       echo "mounting /dev/${node} on 
/mnt/usbdrive"
+                                       mkdir -p /mnt/usbdrive
+                                       mount /dev/${node} /mnt/usbdrive
+                                       exit 0
+                               fi
+                               for part in ${PARTS}
+                               do
+                                       DEV=/dev/${part}
+                                       MNT=/mnt/${part}
+                                       logger "mounting ${DEV} on ${MNT}"
+                                       test -d ${MNT} || mkdir -p ${MNT}
+                                       mount | grep ${MNT} && umount ${DEV}
+                                       mount ${DEV} ${MNT}
+                               done
                        done
+                       exit 0
                }
        done
        sleep 1

_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
http://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel

Reply via email to