Date: Sat, 18 Dec 2010 16:16:16 -0800 From: Doug Barton <dougb@FreeBSD.org> To: Alexander Leidinger <netchild@FreeBSD.org> Cc: svn-src-stable@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, svn-src-stable-8@freebsd.org Subject: Re: svn commit: r211506 - stable/8/etc/periodic/daily Message-ID: <4D0D4ED0.2050903@FreeBSD.org> In-Reply-To: <201008191324.o7JDOEtY005222@svn.freebsd.org> References: <201008191324.o7JDOEtY005222@svn.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
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/
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4D0D4ED0.2050903>