ports/164055: sysutils / zfs-periodic: Test if scrubbing is in process fails when using volume describtors instead of pools
marc.werner at seemoo.tu-darmstadt.de
marc.werner at seemoo.tu-darmstadt.de
Thu Jan 12 15:00:27 UTC 2012
>Number: 164055
>Category: ports
>Synopsis: sysutils / zfs-periodic: Test if scrubbing is in process fails when using volume describtors instead of pools
>Confidential: no
>Severity: non-critical
>Priority: medium
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Thu Jan 12 15:00:26 UTC 2012
>Closed-Date:
>Last-Modified:
>Originator: Marc Werner
>Release: FreeBSD 8.2-RELEASE-p3 amd64
>Organization:
Technische Universität Darmstadt
>Environment:
System: FreeBSD datastore01.seemoo.tu-darmstadt.de 8.2-RELEASE-p3 FreeBSD 8.2-RELEASE-p3 #0: Tue Sep 27 18:45:57 UTC 2011 root at amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC amd64
One ZFS pool with different volumes. Each volume needs to be snapshotted differently. Some are only snapshotted on a daily basis others are snapshotted hourly.
>Description:
We have one zpool which contains different volumes created with 'zfs create' i.e. storage_pool01/home storage_pool01/www etc. Some of these volumes need to be snapshotted every hour others only once a day.
Using sysutils / zfs-periodic we setup a configuration in /etc/periodic.conf which uses the volume descriptors (with the slash) in the *_zfs_snapshot_pools= option.
With this config the check if a scrub is running on the pool fails as zpool in the scrub_in_progress() function only accepts pool names (without a slash) but gets supplied volume names.
>How-To-Repeat:
Setup sysutils / zfs-periodic and /etc/periodic.conf to snapshot volumes (pool/volume) instead of entire pools. Our periodic.conf looks like this:
ourly_output="root"
hourly_show_success="NO"
hourly_show_info="YES"
hourly_show_badconfig="YES"
hourly_zfs_snapshot_enable="YES"
hourly_zfs_snapshot_pools="storage_pool01/home/staff storage_pool01/shares"
hourly_zfs_snapshot_keep=720
daily_zfs_snapshot_enable="YES"
daily_zfs_snapshot_pools="storage_pool01/home/students storage_pool01/home/hiwi"
daily_zfs_snapshot_keep=30
monthly_zfs_scrub_enable="YES"
monthly_zfs_scrub_pools="storage_pool01"
>Fix:
strip the pool from the volume descriptor before running zpool status in scrub_in_progress():
scrub_in_progress()
{
# This code was added to allow snapshotting of single volumes without getting an error here
IFS='/' read -ra arr<<< "$1"
pool=${arr[0]}
if zpool status $pool | grep "scrub in progress" > /dev/null; then
return 0
else
return 1
fi
}
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list