summaryrefslogtreecommitdiff
path: root/package/base-files/files/mdev/fs
diff options
context:
space:
mode:
Diffstat (limited to 'package/base-files/files/mdev/fs')
-rwxr-xr-xpackage/base-files/files/mdev/fs67
1 files changed, 67 insertions, 0 deletions
diff --git a/package/base-files/files/mdev/fs b/package/base-files/files/mdev/fs
new file mode 100755
index 000000000..86c4cee2f
--- /dev/null
+++ b/package/base-files/files/mdev/fs
@@ -0,0 +1,67 @@
+#!/bin/sh
+# skip root disk here, will be handled in /etc/init.d/fs
+rootdisk=$(readlink /dev/root)
+if [ "x${rootdisk}" = "x${MDEV}" ];then
+ exit 0
+fi
+uuid=$(blkid /dev/${MDEV} | sed -n '/^.*UUID="\([^"]*\)".*$/s//\1/p')
+if [ -z $uuid ];then
+ fs=$(grep "^/dev/${MDEV}[[:blank:]]" /etc/fstab | awk '{ print $3 }')
+ mnt=$(grep "^/dev/${MDEV}[[:blank:]]" /etc/fstab | awk '{ print $2 }')
+ disk="${MDEV}"
+else
+ fs=$(grep "^/dev/${MDEV}[[:blank:]]\|^UUID=$uuid" /etc/fstab | awk '{ print $3 }')
+ mnt=$(grep "^/dev/${MDEV}[[:blank:]]\|^UUID=$uuid" /etc/fstab | awk '{ print $2 }')
+ disk="${MDEV} (${uuid})"
+fi
+if [ -z $fs ];then
+ logger -t mdev "Disk $disk not registered in /etc/fstab"
+ exit 0
+fi
+
+procfs=$fs
+if [ $fs = "ntfs-3g" ];then
+ procfs=fuse
+fi
+
+# check if already mounted via /etc/init.d/fs
+adk_check() {
+ mount | grep "${MDEV}[[:blank:]]"
+ if [ $? -eq 0 ];then
+ logger -t mdev "Filesystem on ${MDEV} already mounted"
+ exit 0
+ fi
+}
+
+# filesystem check
+adk_fsck() {
+ [ -x /usr/sbin/fsck.$fs ] && {
+ logger -t mdev "Checking $fs filesystem on ${MDEV}"
+ fsck -p ${MDEV} >/dev/null
+ }
+}
+
+# mount filesystem
+adk_mount() {
+ mkdir -p $mnt >/dev/null 2>&1
+ grep $procfs /proc/filesystems >/dev/null 2>&1
+ if [ $? -eq 0 ];then
+ logger -t mdev "Mounting $disk to $mnt"
+ mount $mnt 2>> /tmp/mount.err
+ if [ $? -ne 0 ]; then
+ logger -t mdev "Mounting $disk failed with $?"
+ fi
+ else
+ logger -t mdev "Required filesystem $procfs not available"
+ fi
+}
+
+case "${ACTION}" in
+add)
+ logger -t mdev "Device ${MDEV} added to the system"
+ adk_check
+ adk_fsck
+ adk_mount
+ ;;
+esac
+exit 0