diff options
author | Felix Fietkau <nbd@openwrt.org> | 2010-02-26 22:45:39 +0000 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2010-02-26 22:45:39 +0000 |
commit | bfeb96126dedec0133b8fc5138225394a3ab3af3 (patch) | |
tree | 15fc6051ae24767ae1d830fb96f8df8b7064e2a8 /package/block-mount/files/20-fsck | |
parent | 87298f0de2bf3cfb615c0e6cdeefee58b0534707 (diff) | |
download | mtk-20170518-bfeb96126dedec0133b8fc5138225394a3ab3af3.zip mtk-20170518-bfeb96126dedec0133b8fc5138225394a3ab3af3.tar.gz mtk-20170518-bfeb96126dedec0133b8fc5138225394a3ab3af3.tar.bz2 |
add the block-mount package by Daniel Dickinson (cshore), replacing existing automount functionality
SVN-Revision: 19877
Diffstat (limited to 'package/block-mount/files/20-fsck')
-rw-r--r-- | package/block-mount/files/20-fsck | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/package/block-mount/files/20-fsck b/package/block-mount/files/20-fsck new file mode 100644 index 0000000..c59e5ab --- /dev/null +++ b/package/block-mount/files/20-fsck @@ -0,0 +1,83 @@ +#!/bin/sh +# Copyright (C) 2009-2010 OpenWrt.org +# Copyright (C) 2010 Vertical Communications +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +. /lib/functions/block.sh +. /lib/functions/fsck.sh + +blkdev=`dirname $DEVPATH` + +if [ `basename $blkdev` != "block" ]; then + + device=`basename $DEVPATH` + + case "$ACTION" in + add) + local from_fstab + local anon_mount + local anon_swap + local anon_fsck + local mds_mount_target + local mds_mount_device + local mds_mount_fstype + local mds_mount_enabled_fsck + local sds_swap_device + local use_device + local do_fsck=0 + local fsck_type + + local autoswap_from_fstab + local automount_from_fstab + local hotplug_blkid_fstype_match + + mount_dev_section_cb() { + mds_mount_device="$3" + mds_mount_fstype="$4" + mds_mount_enabled_fsck="$7" + } + + swap_dev_section_cb() { + sds_swap_device="$2" + return 0 + } + + config_get_automount + automount_from_fstab="$from_fstab" + + [ "$automount_from_fstab" -eq 1 ] && { + config_get_mount_section_by_device "/dev/$device" + use_device="$mds_mount_device" + [ "$mds_mount_enabled_fsck" -eq 1 ] && { + do_fsck=1 + fsck_type="$mds_mount_fstype" + } + } + + [ -z "$use_device" ] && { + config_get_autoswap + autoswap_from_fstab="$from_fstab" + + [ "$autoswap_from_fstab" -eq 1 ] && { + config_get_swap_section_by_device "/dev/$device" + use_device="$sds_swap_device" && do_fsck=0 + } + } + + grep -q "/dev/$device" /proc/swaps || grep -q "/dev/$device" /proc/mounts || { + [ "$anon_fsck" -eq 1 ] && [ -z "$use_device" ] && { + use_device="/dev/$device" && do_fsck=1 && mds_mount_fstype="" && hotplug_blkid_fstype_match=0 + } + } + + [ "$do_fsck" -eq 1 ] && { + libmount_fsck "$use_device" "$fsck_type" "$do_fsck" + } + + reset_dev_section_cb + ;; + esac +fi + |