xref: /openbmc/openbmc/poky/meta/recipes-core/busybox/files/mdev-mount.sh (revision bba38f38e7e41525c30116a2fe990d113b8157da)
1#!/bin/sh
2MDEV_AUTOMOUNT=y
3MDEV_AUTOMOUNT_ROOT=/run/media
4[ -f /etc/default/mdev ] && . /etc/default/mdev
5if [ "${MDEV_AUTOMOUNT}" = "n" ] ; then
6	exit 0
7fi
8
9case "$ACTION" in
10	add|"")
11		ACTION="add"
12		# check if already mounted
13		if grep -q "^/dev/${MDEV} " /proc/mounts ; then
14			# Already mounted
15			exit 0
16		fi
17		DEVBASE=`expr substr $MDEV 1 3`
18		if [ "${DEVBASE}" = "mmc" ] ; then
19			DEVBASE=`expr substr $MDEV 1 7`
20		fi
21		# check for "please don't mount it" file
22		if [ -f "/dev/nomount.${DEVBASE}" ] ; then
23			# blocked
24			exit 0
25		fi
26		# check for full-disk partition
27		if [ "${DEVBASE}" = "${MDEV}" ] ; then
28			if [ -f /sys/block/${DEVBASE}/${DEVBASE}*1/partition ] ; then
29				# Partition detected, just quit
30				exit 0
31			fi
32			if [ ! -f /sys/block/${DEVBASE}/size ] ; then
33				# No size at all
34				exit 0
35			fi
36			if [ "`cat /sys/block/${DEVBASE}/size`" = "0" ] ; then
37				# empty device, bail out
38				exit 0
39			fi
40		fi
41		# first allow fstab to determine the mountpoint
42		if ! mount /dev/$MDEV > /dev/null 2>&1
43		then
44			MOUNTPOINT="${MDEV_AUTOMOUNT_ROOT}/$MDEV"
45			mkdir -p "$MOUNTPOINT"
46			mount -t auto /dev/$MDEV "$MOUNTPOINT" || rmdir "$MOUNTPOINT"
47		fi
48		;;
49	remove)
50		MOUNTPOINT=`grep "^/dev/$MDEV\s" /proc/mounts | cut -d' ' -f 2`
51		if [ ! -z "$MOUNTPOINT" ]
52		then
53			umount "$MOUNTPOINT"
54			rmdir "$MOUNTPOINT"
55		else
56			umount /dev/$MDEV
57		fi
58		;;
59	*)
60		# Unexpected keyword
61		exit 1
62		;;
63esac
64