hd-idle.init (1353B)
1 #!/bin/sh /etc/rc.common 2 # Copyright (C) 2008-2011 OpenWrt.org 3 4 START=50 5 STOP=10 6 7 USE_PROCD=1 8 9 validate_section_hdidle() 10 { 11 uci_validate_section hd-idle hd-idle "${1}" \ 12 'disk:string' \ 13 'enabled:bool' \ 14 'idle_time_interval:uinteger:10' \ 15 'idle_time_unit:string:minutes' 16 } 17 18 compute_seconds() { 19 local interval="$1" 20 local unit="$2" 21 22 # compute interval in seconds 23 case "$unit" in 24 "days" ) 25 interval_seconds=$(($interval*60*60*24)) 26 ;; 27 "hours" ) 28 interval_seconds=$(($interval*60*60)) 29 ;; 30 "minutes" ) 31 interval_seconds=$(($interval*60)) 32 ;; 33 "seconds" ) 34 interval_seconds=$interval 35 ;; 36 * ) 37 # default is minutes 38 interval_seconds=$(($interval*60)) 39 ;; 40 esac 41 42 echo $interval_seconds 43 } 44 45 hdidle_append() { 46 local disk enabled idle_time_interval idle_time_unit 47 48 validate_section_hdidle "${1}" || return 49 50 [ "$enabled" -gt 0 ] || return 51 52 if [ "$numdisks" = "0" ]; then 53 procd_open_instance 54 procd_set_param command /usr/bin/hd-idle 55 procd_append_param command -d -i 0 56 fi 57 procd_append_param command -a $disk 58 procd_append_param command -i "$(compute_seconds $idle_time_interval $idle_time_unit)" 59 numdisks=$(( numdisks + 1 )) 60 } 61 62 start_service() { 63 config_load "hd-idle" 64 65 numdisks="0" 66 config_foreach hdidle_append "hd-idle" 67 68 if [ "$numdisks" -gt 0 ]; then 69 procd_set_param respawn 70 procd_close_instance 71 fi 72 }