79 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			79 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
#!/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
 | 
						|
 | 
						|
blkdev=`dirname $DEVPATH`
 | 
						|
 | 
						|
if [ `basename $blkdev` != "block" ]; then
 | 
						|
 | 
						|
    device=`basename $DEVPATH`
 | 
						|
 | 
						|
 | 
						|
    case "$ACTION" in
 | 
						|
	add)
 | 
						|
		local autoswap_from_fstab
 | 
						|
		local automount_from_fstab
 | 
						|
		local from_fstab
 | 
						|
		local anon_mount
 | 
						|
		local anon_swap
 | 
						|
		local anon_fsck
 | 
						|
		local mds_mount_device
 | 
						|
		local sds_swap_device
 | 
						|
		local sds_swap_enabled
 | 
						|
		local use_device
 | 
						|
		local do_swap=0
 | 
						|
 | 
						|
	    mount_dev_section_cb() {
 | 
						|
			mds_mount_device="$3"
 | 
						|
	    }
 | 
						|
 | 
						|
	    swap_dev_section_cb() { 
 | 
						|
			sds_swap_device="$2"
 | 
						|
			sds_swap_enabled="$3"
 | 
						|
			return 0
 | 
						|
	    }
 | 
						|
 | 
						|
		config_get_automount
 | 
						|
		automount_from_fstab="$from_fstab"
 | 
						|
		
 | 
						|
		[ "$automount_from_fstab" -eq 1 ] && {
 | 
						|
			config_get_mount_section_by_device "/dev/$device"
 | 
						|
		}
 | 
						|
		
 | 
						|
		# skip trying swap if this device is defined as a mount point
 | 
						|
		[ -z "$mds_mount_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_swap="$sds_swap_enabled"
 | 
						|
			}
 | 
						|
 | 
						|
			[ -z "$use_device" ] && [ "$anon_swap" -eq 1 ] && {
 | 
						|
				use_device="/dev/$device" && do_swap=1
 | 
						|
			}
 | 
						|
		}
 | 
						|
 | 
						|
		[ -n "$use_device" ] && [ "$do_swap" -eq 1 ] && {
 | 
						|
			grep -q "$use_device" /proc/swaps || grep -q "$use_device" /proc/mounts || {
 | 
						|
				swapon "$use_device"
 | 
						|
			}
 | 
						|
		}
 | 
						|
		reset_dev_section_cb
 | 
						|
		;;
 | 
						|
	remove)
 | 
						|
		grep -q "/dev/$device" /proc/swaps && {
 | 
						|
			swapoff "/dev/$device"
 | 
						|
		}
 | 
						|
		;;
 | 
						|
    esac	
 | 
						|
fi
 | 
						|
 |