clean up hotplug mounting scripts
authorMike Baker <mbm@openwrt.org>
Sat, 26 Aug 2006 01:04:43 +0000 (01:04 +0000)
committerMike Baker <mbm@openwrt.org>
Sat, 26 Aug 2006 01:04:43 +0000 (01:04 +0000)
SVN-Revision: 4673

openwrt/package/base-files/default/etc/hotplug.d/block/01-mount [new file with mode: 0755]
openwrt/package/base-files/default/etc/hotplug.d/usb/01-ln [new file with mode: 0755]
openwrt/package/base-files/default/etc/hotplug.d/usb/01-mount [deleted file]

diff --git a/openwrt/package/base-files/default/etc/hotplug.d/block/01-mount b/openwrt/package/base-files/default/etc/hotplug.d/block/01-mount
new file mode 100755 (executable)
index 0000000..b6275e5
--- /dev/null
@@ -0,0 +1,26 @@
+#!/bin/sh
+# Copyright (C) 2006 OpenWrt.org
+
+DEV=${DEVPATH##*/}
+{
+echo "ACTION=$ACTION DEVPATH=$DEVPATH $0 $*"
+case "$ACTION" in
+add)
+       echo -ne "waiting for $DEV"
+       while [ ! -b /dev/$DEV ]; do {
+               echo -ne "."
+               sleep 1
+               time=$((time+1)); [ $time -gt 10 ] && break
+       }; done
+       
+       [ ${DEV%%[0-9]} != ${DEV} ] && {
+               mkdir -p /tmp/$DEV
+               mount /dev/$DEV /tmp/$DEV -t auto -o sync
+       }
+       ;;
+remove)
+       umount /tmp/$DEV
+       rm -rf /dev/$DEV /tmp/$DEV
+       ;;
+esac
+} 2>&1 | logger
diff --git a/openwrt/package/base-files/default/etc/hotplug.d/usb/01-ln b/openwrt/package/base-files/default/etc/hotplug.d/usb/01-ln
new file mode 100755 (executable)
index 0000000..f9eda02
--- /dev/null
@@ -0,0 +1,33 @@
+#!/bin/sh
+# Copyright (C) 2006 OpenWrt.org
+
+case "$ACTION" in
+add) 
+       [ -f /sys/${DEVPATH}/idVendor -a "$(cat /sys/${DEVPATH}/idVendor)" -ne "0000" ] && {
+               cd /sys/${DEVPATH}
+
+               NUM=${DEVPATH##*/}
+               HOST=$(find ${NUM}:*/host* -type d)
+               HOST=${HOST##*/host}
+
+               echo -ne "waiting for disk"
+
+               while [ ! -d "/dev/scsi/host${HOST}/bus0/target0/lun0" ]; do {
+                       echo -ne "."
+                       sleep 1;
+                       time=$((time+1)); [ $time -gt 10 ] && break
+               }; done
+               echo
+               
+               cd  /sys/bus/scsi/devices/${HOST}\:0\:0\:0
+               for BLOCK in block:* ; do {
+                       cd ${BLOCK}
+                       BLOCK=${BLOCK##block\:}
+                       ln -sf /dev/scsi/host${HOST}/bus0/target0/lun0/disc /dev/${BLOCK} 
+                       for DEV in ${BLOCK}*; do {
+                               ln -sf /dev/scsi/host${HOST}/bus0/target0/lun0/part${DEV##$BLOCK} /dev/$DEV
+                       }; done
+               }; done
+       } 2>&1 | logger 
+       ;;
+esac
diff --git a/openwrt/package/base-files/default/etc/hotplug.d/usb/01-mount b/openwrt/package/base-files/default/etc/hotplug.d/usb/01-mount
deleted file mode 100644 (file)
index c4d356b..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-#!/bin/sh
-# Copyright (C) 2006 OpenWrt.org
-
-mount_storage() {
-       cd /dev/discs
-       for dev in disc*; do
-               [ -f /tmp/.${dev}_id ] || {
-                       echo ${INTERFACE}${PRODUCT} > /tmp/.${dev}_id
-                       mount | grep /mnt/${dev} || (
-                               [ -d /mnt/. ] || {
-                                       mkdir -p /tmp/mnt
-                                       ln -s /tmp/mnt /
-                               }
-                               cd $dev
-                               for part in part*; do
-                                       path=/mnt/${dev}_${part##*part}
-                                       mkdir -p ${path}
-                                       mount ${part} ${path}
-                               done
-                       )
-               }
-       done
-}
-
-umount_storage() {
-       for tmp in /tmp/.*_id; do
-               id=$(cat $tmp 2>&-)
-               [ "${INTERFACE}${PRODUCT}" = "$id" ] && {
-                       rm -f $tmp
-                       disc=${tmp##*disc}
-                       disc=${disc%%_id}
-                       for disc in /mnt/disc${disc}*; do
-                               umount -f $disc || umount -l $disc
-                       done
-               }
-       done
-}
-
-[ -f /proc/bus/usb/devices ] || mount -t usbfs none /proc/bus/usb
-
-case "$ACTION" in
-       add)
-               case "${INTERFACE%%/*}" in
-                       8) mount_storage ;;
-               esac
-       ;;
-       remove)
-               case "${INTERFACE%%/*}" in
-                       8) umount_storage ;;
-               esac
-       ;;
-esac