From: Mike Baker <mbm@openwrt.org>
Date: Sat, 26 Aug 2006 01:04:43 +0000 (+0000)
Subject: clean up hotplug mounting scripts
X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=69fb72bf22f0c30e09b88ee3b6df4417c382283d;p=openwrt%2Fstaging%2Fansuel.git

clean up hotplug mounting scripts

SVN-Revision: 4673
---

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
index 0000000000..b6275e5a28
--- /dev/null
+++ b/openwrt/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/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
index 0000000000..f9eda02988
--- /dev/null
+++ b/openwrt/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/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
index c4d356b0da..0000000000
--- a/openwrt/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