From nobody@FreeBSD.org  Sun Aug 19 07:27:27 2012
Return-Path: <nobody@FreeBSD.org>
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
	by hub.freebsd.org (Postfix) with ESMTP id D8762106566B
	for <freebsd-gnats-submit@FreeBSD.org>; Sun, 19 Aug 2012 07:27:27 +0000 (UTC)
	(envelope-from nobody@FreeBSD.org)
Received: from red.freebsd.org (red.freebsd.org [IPv6:2001:4f8:fff6::22])
	by mx1.freebsd.org (Postfix) with ESMTP id C3E618FC0A
	for <freebsd-gnats-submit@FreeBSD.org>; Sun, 19 Aug 2012 07:27:27 +0000 (UTC)
Received: from red.freebsd.org (localhost [127.0.0.1])
	by red.freebsd.org (8.14.4/8.14.4) with ESMTP id q7J7RR8f030874
	for <freebsd-gnats-submit@FreeBSD.org>; Sun, 19 Aug 2012 07:27:27 GMT
	(envelope-from nobody@red.freebsd.org)
Received: (from nobody@localhost)
	by red.freebsd.org (8.14.4/8.14.4/Submit) id q7J7RRSk030873;
	Sun, 19 Aug 2012 07:27:27 GMT
	(envelope-from nobody)
Message-Id: <201208190727.q7J7RRSk030873@red.freebsd.org>
Date: Sun, 19 Aug 2012 07:27:27 GMT
From: Marcelo Araujo <araujo@FreeBSD.org>
To: freebsd-gnats-submit@FreeBSD.org
Subject: [zfs] 3085 zfs diff panics, then panics in a loop on booting 
X-Send-Pr-Version: www-3.1
X-GNATS-Notify:

>Number:         170763
>Category:       kern
>Synopsis:       [zfs] 3085 zfs diff panics, then panics in a loop on booting
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    mm
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Sun Aug 19 07:30:08 UTC 2012
>Closed-Date:    Sun Aug 19 10:35:48 UTC 2012
>Last-Modified:  Mon Aug 20 03:56:41 UTC 2012
>Originator:     Marcelo Araujo
>Release:        10.0-CURRENT
>Organization:
FreeBSD
>Environment:
FreeBSD hostb 10.0-CURRENT FreeBSD 10.0-CURRENT #0 r233530: Tue Apr  3 02:11:40 UTC 2012     araujo@hostb:/usr/obj/usr/src/sys/HOSTB  i386

>Description:
- Just import a small change from Illumos vendor.
Illumos-gate changeset: 2579580ac955

>How-To-Repeat:

>Fix:


Patch attached with submission follows:

Index: dsl_dataset.c
===================================================================
--- dsl_dataset.c	(revision 233530)
+++ dsl_dataset.c	(working copy)
@@ -3896,6 +3896,10 @@
 	VERIFY(error == 0 || error == ENOENT);
 	zapobj = ds->ds_phys->ds_userrefs_obj;
 	VERIFY(0 == zap_remove(mos, zapobj, ra->htag, tx));
+
+	spa_history_log_internal_ds(ds, "release", tx,
+	    "tag = %s refs now = %lld", ra->htag, (longlong_t)refs);
+
 	if (ds->ds_userrefs == 0 && ds->ds_phys->ds_num_children == 1 &&
 	    DS_IS_DEFER_DESTROY(ds)) {
 		struct dsl_ds_destroyarg dsda = {0};
Index: spa_history.c
===================================================================
--- spa_history.c	(revision 233530)
+++ spa_history.c	(working copy)
@@ -436,8 +436,10 @@
 	 * If this is part of creating a pool, not everything is
 	 * initialized yet, so don't bother logging the internal events.
 	 */
-	if (tx->tx_txg == TXG_INITIAL)
+	if (tx->tx_txg == TXG_INITIAL) {
+		fnvlist_free(nvl);
 		return;
+	}
 
 	va_copy(adx2, adx);
 


>Release-Note:
>Audit-Trail:
Responsible-Changed-From-To: freebsd-bugs->mm 
Responsible-Changed-By: araujo 
Responsible-Changed-When: Sun Aug 19 08:04:12 UTC 2012 
Responsible-Changed-Why:  
Maybe Martin will have time to check it. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=170763 

From: Martin Matuska <mm@FreeBSD.org>
To: bug-followup@FreeBSD.org, araujo@FreeBSD.org
Cc:  
Subject: Re: kern/170763: [zfs] 3085 zfs diff panics, then panics in a loop
 on booting
Date: Sun, 19 Aug 2012 11:58:29 +0200

 Your patch is wrong. Did you try to compile the module? I am committing
 a correct backport.
 
 -- 
 Martin Matuska
 FreeBSD committer
 http://blog.vx.sk
 

From: dfilter@FreeBSD.ORG (dfilter service)
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: kern/170763: commit references a PR
Date: Sun, 19 Aug 2012 09:59:50 +0000 (UTC)

 Author: mm
 Date: Sun Aug 19 09:59:41 2012
 New Revision: 239389
 URL: http://svn.freebsd.org/changeset/base/239389
 
 Log:
   Backport fix for vendor issue #3085
   3085 zfs diff panics, then panics in a loop on booting
   
   References:
     https://www.illumos.org/issues/3085
   
   PR:		kern/170763
   Obtained from:	ssh://anonhg@hg.illumos.org/illumos-gate (r13772)
   MFC after:	1 week
 
 Modified:
   head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c
 
 Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c
 ==============================================================================
 --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c	Sun Aug 19 09:34:04 2012	(r239388)
 +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c	Sun Aug 19 09:59:41 2012	(r239389)
 @@ -3969,6 +3969,11 @@ dsl_dataset_user_release_sync(void *arg1
  	VERIFY(error == 0 || error == ENOENT);
  	zapobj = ds->ds_phys->ds_userrefs_obj;
  	VERIFY(0 == zap_remove(mos, zapobj, ra->htag, tx));
 +
 +	spa_history_log_internal(LOG_DS_USER_RELEASE,
 +	    dp->dp_spa, tx, "<%s> %lld dataset = %llu",
 +	    ra->htag, (longlong_t)refs, dsobj);
 +
  	if (ds->ds_userrefs == 0 && ds->ds_phys->ds_num_children == 1 &&
  	    DS_IS_DEFER_DESTROY(ds)) {
  		struct dsl_ds_destroyarg dsda = {0};
 @@ -3979,10 +3984,6 @@ dsl_dataset_user_release_sync(void *arg1
  		/* We already did the destroy_check */
  		dsl_dataset_destroy_sync(&dsda, tag, tx);
  	}
 -
 -	spa_history_log_internal(LOG_DS_USER_RELEASE,
 -	    dp->dp_spa, tx, "<%s> %lld dataset = %llu",
 -	    ra->htag, (longlong_t)refs, dsobj);
  }
  
  static int
 _______________________________________________
 svn-src-all@freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/svn-src-all
 To unsubscribe, send any mail to "svn-src-all-unsubscribe@freebsd.org"
 
State-Changed-From-To: open->closed 
State-Changed-By: mm 
State-Changed-When: Sun Aug 19 10:35:38 UTC 2012 
State-Changed-Why:  
Resolved. Thanks! 

http://www.freebsd.org/cgi/query-pr.cgi?pr=170763 
>Unformatted:
