Root/package/block-mount/files/40-mount

1#!/bin/sh
2# Copyright (C) 2009-2010 OpenWrt.org
3# Copyright (C) 2010 Vertical Communications
4# This is free software, licensed under the GNU General Public License v2.
5# See /LICENSE for more information.
6#
7
8. /lib/functions/block.sh
9
10blkdev=`dirname $DEVPATH`
11if [ `basename $blkdev` != "block" ]; then
12
13    device=`basename $DEVPATH`
14
15    case "$ACTION" in
16    add)
17
18        local from_fstab
19        local anon_mount
20        local anon_swap
21        local anon_fsck
22        local mds_mount_target
23        local mds_mount_device
24        local mds_mount_fstype
25        local sds_swap_device
26        local use_device
27        local do_fsck=0
28        local fsck_type
29        
30        local autoswap_from_fstab
31        local automount_from_fstab
32
33        mount_dev_section_cb() {
34            mds_mount_target="$2"
35            mds_mount_device="$3"
36            mds_mount_fstype="$4"
37            mds_mount_enabled="$6"
38        }
39
40        swap_dev_section_cb() {
41            sds_swap_device="$2"
42            return 0
43        }
44
45        config_get_automount
46        automount_from_fstab="$from_fstab"
47        [ "$automount_from_fstab" -eq 1 ] && {
48            config_get_mount_section_by_device "/dev/$device"
49            use_device="$mds_mount_device"
50            [ "$mds_mount_enabled" -eq 1 ] && {
51                if [ -n "$mds_mount_target" ]; then
52                    grep -q "/dev/$device" /proc/swaps || grep -q "/dev/$device" /proc/mounts || {
53                        ( mkdir -p "$mds_mount_target" && mount "$mds_mount_target" ) 2>&1 | tee /proc/self/fd/2 | logger -t 'fstab'
54                    }
55                else
56                    logger -t 'fstab' "Mount enabled for $mds_mount_device but it doesn't have a defined mountpoint (target)"
57                fi
58            }
59        }
60
61        [ -z "$use_device" ] && {
62            config_get_autoswap
63            autoswap_from_fstab="$from_fstab"
64        
65            [ "$autoswap_from_fstab" -eq 1 ] && {
66                config_get_swap_section_by_device "/dev/$device"
67                use_device="$sds_swap_device"
68            }
69        }
70        
71        grep -q "/dev/$device" /proc/swaps || grep -q "/dev/$device" /proc/mounts || {
72            [ "$anon_mount" -eq 1 -a -z "$use_device" ] && {
73                case "$device" in
74                    mtdblock*) ;;
75                    *)
76                        ( mkdir -p /mnt/$device && mount /dev/$device /mnt/$device ) 2>&1 | tee /proc/self/fd/2 | logger -t 'fstab'
77                    ;;
78                esac
79            }
80        }
81        reset_dev_section_cb
82        ;;
83    remove)
84        umount /dev/$device
85        ;;
86    esac
87
88fi
89
90

Archive Download this file



interactive