summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xpackage/base-files/default/etc/hotplug.d/block/01-mount26
-rwxr-xr-xpackage/base-files/default/etc/hotplug.d/usb/01-ln33
-rw-r--r--package/base-files/default/etc/hotplug.d/usb/01-mount52
3 files changed, 59 insertions, 52 deletions
diff --git a/package/base-files/default/etc/hotplug.d/block/01-mount b/package/base-files/default/etc/hotplug.d/block/01-mount
new file mode 100755
index 000000000..b6275e5a2
--- /dev/null
+++ b/package/base-files/default/etc/hotplug.d/block/01-mount
@@ -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/package/base-files/default/etc/hotplug.d/usb/01-ln b/package/base-files/default/etc/hotplug.d/usb/01-ln
new file mode 100755
index 000000000..f9eda0298
--- /dev/null
+++ b/package/base-files/default/etc/hotplug.d/usb/01-ln
@@ -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/package/base-files/default/etc/hotplug.d/usb/01-mount b/package/base-files/default/etc/hotplug.d/usb/01-mount
deleted file mode 100644
index c4d356b0d..000000000
--- a/package/base-files/default/etc/hotplug.d/usb/01-mount
+++ /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