bin/164802: Can't destroy zfs snapshots in 8-stable w/o -R
Daniel Hagerty
hag at linnaean.org
Sun Feb 5 17:20:07 UTC 2012
>Number: 164802
>Category: bin
>Synopsis: Can't destroy zfs snapshots in 8-stable w/o -R
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Sun Feb 05 17:20:06 UTC 2012
>Closed-Date:
>Last-Modified:
>Originator: Daniel Hagerty
>Release: FreeBSD 8.2-STABLE amd64
>Organization:
I'll let you know when I find some
>Environment:
System: FreeBSD perdition.linnaean.org 8.2-STABLE FreeBSD 8.2-STABLE #1 r230385+ec72e00: Fri Jan 27 18:41:46 EST 2012 root at perdition.linnaean.org:/usr/src/sys/amd64/compile/LINNAEAN64 amd64
8.2-STABLE, git id bc00e44d, svn r230835, some irrelevant
local modifications.
>Description:
With my most recent update, I am unable to destroy zfs
snapshots without using -R. This makes me unhappy, since -R
is a big hammer. This is also affect automatic deletion of
local snapshots provided by the sysutils/zfs-periodic port I'm
using; it (quite sanely) doesn't use -R.
>How-To-Repeat:
$ zfs snapshot pool at snapshot
$ zfs destroy -v pool at snapshot
will destroy pool at snapshot
will reclaim 0
[Exit 1 ]
$ zfs list pool at snapshot
NAME USED AVAIL REFER MOUNTPOINT
pool at snapshot 0 - 35K -
>Fix:
Patch that fixes the issue below; it's based on the git id
bc00e44d/svn r230835 that I'm currently running. The issue is the use
of an uninitialized variable "err".
commit 6233abc650e37b32f247f1e6690c9bc96395a6e8
Author: Daniel Hagerty <hag at linnaean.org>
Date: Sun Feb 5 11:33:26 2012 -0500
zfs destroy foo at bar fails due to uninitialized var
diff --git a/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c b/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c
index 78037d4..6bf3267 100644
--- a/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c
+++ b/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c
@@ -1206,7 +1206,7 @@ zfs_do_destroy(int argc, char **argv)
at = strchr(argv[0], '@');
if (at != NULL) {
- int err;
+ int err = 0;
/* Build the list of snaps to destroy in cb_nvl. */
if (nvlist_alloc(&cb.cb_nvl, NV_UNIQUE_NAME, 0) != 0)
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-bugs
mailing list