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