svn commit: r211506 - stable/8/etc/periodic/daily
Doug Barton
dougb at FreeBSD.org
Sun Dec 19 00:16:19 UTC 2010
This should not have been done. It added a bunch of extraneous mergeinfo
in the RELENG_8 etc branch. This change was important, but not so
important that it didn't warrant asking for help to get the merge right.
Doug
On 08/19/2010 06:24, Alexander Leidinger wrote:
> Author: netchild
> Date: Thu Aug 19 13:24:13 2010
> New Revision: 211506
> URL: http://svn.freebsd.org/changeset/base/211506
>
> Log:
> sort of MFC: r211495 was supposed to add this script from HEAD, and while
> the merge seems to have been successful, the script does not show up
> in releng-8. This is a "svn copy head/.../800.zfs-scrub ." as retrying
> the svn merge does not result in the file showing up. This may not be
> the best way to fix the problem in svn, but it is the only way I'm aware of
> to fix the stable branch (which is IMO more important than to use a potential
> best way I'm not aware of).
>
> Relevant commit log for this file (r209195):
> Add a periodic zfs scrub script.
>
> Features:
> - configurable amount of days between scrubs (default value or per pool)
> - do not scrub directly after pool creation (respects the configured
> number of days between scrubs)
> - do not scrub if a scrub is in progress
> - tells how to see the status of the scrub
> - tells how many days since the last scrub if it skips the scrubbing
> - warns if a non-existent pool is specified explicitely
> (default: no pools specified -> all currently imported pools are
> handled)
> - runs late in the periodic run to not slow down the other periodic daily
> scripts
>
> Added:
> - copied unchanged from r211505, head/etc/periodic/daily/800.scrub-zfs
> Directory Properties:
> stable/8/etc/periodic/daily/800.scrub-zfs (props changed)
>
> Copied: stable/8/etc/periodic/daily/800.scrub-zfs (from r211505, head/etc/periodic/daily/800.scrub-zfs)
> ==============================================================================
> --- /dev/null 00:00:00 1970 (empty, because file is newly added)
> +++ stable/8/etc/periodic/daily/800.scrub-zfs Thu Aug 19 13:24:13 2010 (r211506, copy of r211505, head/etc/periodic/daily/800.scrub-zfs)
> @@ -0,0 +1,86 @@
> +#!/bin/sh
> +#
> +# $FreeBSD$
> +#
> +
> +# If there is a global system configuration file, suck it in.
> +#
> +if [ -r /etc/defaults/periodic.conf ]
> +then
> + . /etc/defaults/periodic.conf
> + source_periodic_confs
> +fi
> +
> +: ${daily_scrub_zfs_default_threshold=30}
> +
> +case "$daily_scrub_zfs_enable" in
> + [Yy][Ee][Ss])
> + echo
> + echo 'Scrubbing of zfs pools:'
> +
> + if [ -z "${daily_scrub_zfs_pools}" ]; then
> + daily_scrub_zfs_pools="$(zpool list -H -o name)"
> + fi
> +
> + for pool in ${daily_scrub_zfs_pools}; do
> + # sanity check
> + zpool list ${pool}>/dev/null 2>&1
> + if [ $? -ne 0 ]; then
> + echo " WARNING: pool '${pool}' specified in"
> + echo " '/etc/periodic.conf:daily_scrub_zfs_pools'"
> + echo " does not exist"
> + continue
> + fi
> +
> + # successful only if there is at least one pool to scrub
> + rc=0
> +
> + # determine how many days shall be between scrubs
> + eval _pool_threshold=\${daily_scrub_zfs_${pool}_threshold}
> + if [ -z "${_pool_threshold}" ];then
> + _pool_threshold=${daily_scrub_zfs_default_threshold}
> + fi
> +
> + _last_scrub=$(zpool history ${pool} | \
> + egrep "^[0-9\.\:\-]{19} zpool scrub ${pool}\$" | tail -1 |\
> + cut -d ' ' -f 1)
> + if [ -z "${_last_scrub}" ]; then
> + # creation time of the pool if no scrub was done
> + _last_scrub=$(zpool history ${pool} | \
> + sed -ne '2s/ .*$//p')
> + fi
> +
> + # Now minus last scrub (both in seconds) converted to days.
> + _scrub_diff=$(expr -e \( $(date +%s) - \
> + $(date -j -f %F.%T ${_last_scrub} +%s) \) / 60 / 60 / 24)
> + if [ ${_scrub_diff} -le ${_pool_threshold} ]; then
> + echo " skipping scrubbing of pool '${pool}':"
> + echo " last scrubbing is ${_scrub_diff} days ago, threshold is set to ${_pool_threshold} days"
> + continue
> + fi
> +
> + _status="$(zpool status ${pool} | grep scrub:)"
> + case "${_status}" in
> + *"scrub in progress"*)
> + echo " scrubbing of pool '${pool}' already in progress, skipping:"
> + ;;
> + *"none requested"*)
> + echo " starting first scrubbing (after reboot) of pool '${pool}':"
> + zpool scrub ${pool}
> + ;;
> + *)
> + echo " starting scrubbing of pool '${pool}':"
> + zpool scrub ${pool}
> + ;;
> + esac
> +
> + echo " consult 'zpool status ${pool}' for the result"
> + done
> + ;;
> +
> + *)
> + rc=0
> + ;;
> +esac
> +
> +exit $rc
>
--
Nothin' ever doesn't change, but nothin' changes much.
-- OK Go
Breadth of IT experience, and depth of knowledge in the DNS.
Yours for the right price. :) http://SupersetSolutions.com/
More information about the svn-src-all
mailing list