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