bin/164802: Can't destroy zfs snapshots in 8-stable w/o -R

Daniel Hagerty hag at
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
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Sun Feb 05 17:20:06 UTC 2012
>Originator:     Daniel Hagerty
>Release:        FreeBSD 8.2-STABLE amd64
I'll let you know when I find some
System: FreeBSD 8.2-STABLE FreeBSD 8.2-STABLE #1 r230385+ec72e00: Fri Jan 27 18:41:46 EST 2012 root at amd64

	8.2-STABLE, git id bc00e44d, svn r230835, some irrelevant
local modifications.

	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.


	$ 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
pool at snapshot              0      -    35K  -

    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>
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)

More information about the freebsd-bugs mailing list