diff options
Diffstat (limited to 'package/base-files/default/etc')
-rwxr-xr-x | package/base-files/default/etc/hotplug.d/block/01-mount | 26 | ||||
-rwxr-xr-x | package/base-files/default/etc/hotplug.d/usb/01-ln | 33 | ||||
-rw-r--r-- | package/base-files/default/etc/hotplug.d/usb/01-mount | 52 |
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 |