Ticket #5478: hotplug-fstab.patch

File hotplug-fstab.patch, 2.0 KB (added by Daniel Dickinson <crazycshore@…>, 7 years ago)
  • package/base-files/files/etc/hotplug.d/block/10-mount

     
    22 
    33# Copyright (C) 2009 OpenWrt.org 
    44 
     5. /etc/functions.sh 
     6 
     7possible_mount() { 
     8        local args 
     9        local cfg="$1" 
     10 
     11        config_get device "$cfg" device 
     12        [ -b "$device" ] || return 0 
     13         
     14        [ "$device" == "$hotplug_device" ] || return 0 
     15         
     16        config_get fstype "$cfg" fstype 
     17        case "$fstype" in 
     18                ext2|ext3) 
     19                        [ -x /usr/sbin/e2fsck ] || return 0 
     20                        /usr/sbin/e2fsck -p "$device" 
     21                        local status="$?" 
     22                        case "$status" in 
     23                                0|1) continue;; 
     24                                2) reboot;; 
     25                                4) echo "e2fsck ($device): Warning! Uncorrected errors.";; 
     26                                *) echo "e2fsck ($device): Error $status. Check not complete.";; 
     27                        esac 
     28                        ;; 
     29                *) 
     30                        ;; 
     31        esac 
     32 
     33        config_get options "$cfg" options 
     34        options="${options:-rw}" 
     35        config_get target "$cfg" target 
     36        [ -n "$target" ] || return 0 
     37        mkdir -p $target 
     38        config_get_bool enabled "$cfg" "enabled" '1' 
     39        [ "$enabled" -eq 0 ] && options="noauto,$options" 
     40        echo "$device   $target $fstype $options        0       0" >> /tmp/fstab 
     41         
     42        /bin/mount "$target" 
     43         
     44} 
     45 
     46possible_swap() { 
     47        local args 
     48        local cfg="$1" 
     49 
     50        config_get device "$cfg" device 
     51        [ -b "$device" ] || return 0 
     52 
     53        [ "$device" == "$hotplug_device" ] || return 0 
     54 
     55        config_get_bool enabled "$cfg" "enabled" '1' 
     56        [ "$enabled" -gt 0 ] && { 
     57                echo "$device   none    swap    ${noauto}sw     0       0" >> /tmp/fstab 
     58        } 
     59        [ -x /sbin/swapon ] && swapon "$device" 
     60} 
     61 
    562blkdev=`dirname $DEVPATH` 
    663if [ `basename $blkdev` != "block" ]; then 
    764 
    865    device=`basename $DEVPATH` 
    966    case "$ACTION" in 
    1067        add) 
    11                 mkdir -p /mnt/$device 
    12                 mount /dev/$device /mnt/$device 
    13                 ;; 
     68            hotplug_device="/dev/$device" 
     69            config_load fstab 
     70            config_foreach possible_mount mount 
     71            config_foreach possible_swap swap 
     72            ;; 
    1473        remove) 
    15                 umount /dev/$device 
    16                 ;; 
     74            umount /dev/$device 
     75            ;; 
    1776    esac         
    1877 
    1978fi