1*493908c4SLexi Winter#!/bin/sh 2*493908c4SLexi Winter# 3*493908c4SLexi Winter# 4*493908c4SLexi Winter 5*493908c4SLexi Winter# If there is a global system configuration file, suck it in. 6*493908c4SLexi Winter# 7*493908c4SLexi Winter 8*493908c4SLexi Winterif [ -r /etc/defaults/periodic.conf ] 9*493908c4SLexi Winterthen 10*493908c4SLexi Winter . /etc/defaults/periodic.conf 11*493908c4SLexi Winter source_periodic_confs 12*493908c4SLexi Winterfi 13*493908c4SLexi Winter 14*493908c4SLexi Wintercase "$daily_trim_zfs_enable" in 15*493908c4SLexi Winter [Yy][Ee][Ss]) 16*493908c4SLexi Winter echo 17*493908c4SLexi Winter echo 'Trimming of zfs pools:' 18*493908c4SLexi Winter 19*493908c4SLexi Winter if [ -z "${daily_trim_zfs_pools}" ]; then 20*493908c4SLexi Winter daily_trim_zfs_pools="$(zpool list -H -o name)" 21*493908c4SLexi Winter fi 22*493908c4SLexi Winter 23*493908c4SLexi Winter rc=0 24*493908c4SLexi Winter for pool in ${daily_trim_zfs_pools}; do 25*493908c4SLexi Winter # sanity check 26*493908c4SLexi Winter _status=$(zpool list -Hohealth "${pool}" 2> /dev/null) 27*493908c4SLexi Winter if [ $? -ne 0 ]; then 28*493908c4SLexi Winter rc=2 29*493908c4SLexi Winter echo " WARNING: pool '${pool}' specified in" 30*493908c4SLexi Winter echo " '/etc/periodic.conf:daily_trim_zfs_pools'" 31*493908c4SLexi Winter echo " does not exist" 32*493908c4SLexi Winter continue 33*493908c4SLexi Winter fi 34*493908c4SLexi Winter case ${_status} in 35*493908c4SLexi Winter FAULTED) 36*493908c4SLexi Winter rc=3 37*493908c4SLexi Winter echo "Skipping faulted pool: ${pool}" 38*493908c4SLexi Winter continue ;; 39*493908c4SLexi Winter UNAVAIL) 40*493908c4SLexi Winter rc=4 41*493908c4SLexi Winter echo "Skipping unavailable pool: ${pool}" 42*493908c4SLexi Winter continue ;; 43*493908c4SLexi Winter esac 44*493908c4SLexi Winter 45*493908c4SLexi Winter if ! zpool status "${pool}" | grep -q '(trimming)'; then 46*493908c4SLexi Winter echo " starting trim of pool '${pool}'" 47*493908c4SLexi Winter zpool trim ${daily_zfs_trim_flags} "${pool}" 48*493908c4SLexi Winter else 49*493908c4SLexi Winter echo " trim of pool '${pool}' already in progress, skipping" 50*493908c4SLexi Winter fi 51*493908c4SLexi Winter done 52*493908c4SLexi Winter ;; 53*493908c4SLexi Winter 54*493908c4SLexi Winter *) 55*493908c4SLexi Winter rc=0 56*493908c4SLexi Winter ;; 57*493908c4SLexi Winteresac 58*493908c4SLexi Winter 59*493908c4SLexi Winterexit $rc 60