Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 29 Aug 2015 08:16:58 +0000 (UTC)
From:      Xin LI <delphij@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r287280 - head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs
Message-ID:  <201508290816.t7T8Gwtq078861@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: delphij
Date: Sat Aug 29 08:16:57 2015
New Revision: 287280
URL: https://svnweb.freebsd.org/changeset/base/287280

Log:
  In r286705 (Illumos 5960/a2cdcdd), a separate thread is created with curproc
  as parent.  In the case of a send or receive, the curproc would be the
  userland application that issues the ioctl.  This would trigger an assertion
  failure introduced in Solaris compatibility shims in r196458 when kernel is
  compiled with INVARIANTS.
  
  Fix this by using p0 (proc0 or kernel) as the parent thread when creating
  the kernel threads.

Modified:
  head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c

Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c
==============================================================================
--- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c	Sat Aug 29 07:59:31 2015	(r287279)
+++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c	Sat Aug 29 08:16:57 2015	(r287280)
@@ -786,7 +786,7 @@ dmu_send_impl(void *tag, dsl_pool_t *dp,
 	to_arg.ds = to_ds;
 	to_arg.fromtxg = fromtxg;
 	to_arg.flags = TRAVERSE_PRE | TRAVERSE_PREFETCH;
-	(void) thread_create(NULL, 0, send_traverse_thread, &to_arg, 0, curproc,
+	(void) thread_create(NULL, 0, send_traverse_thread, &to_arg, 0, &p0,
 	    TS_RUN, minclsyspri);
 
 	struct send_block_record *to_data;
@@ -2446,7 +2446,7 @@ dmu_recv_stream(dmu_recv_cookie_t *drc, 
 	rwa.os = ra.os;
 	rwa.byteswap = drc->drc_byteswap;
 
-	(void) thread_create(NULL, 0, receive_writer_thread, &rwa, 0, curproc,
+	(void) thread_create(NULL, 0, receive_writer_thread, &rwa, 0, &p0,
 	    TS_RUN, minclsyspri);
 	/*
 	 * We're reading rwa.err without locks, which is safe since we are the



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201508290816.t7T8Gwtq078861>