6463348 ZFS code could be more portable
authornd150628
Tue, 03 Oct 2006 15:01:10 -0700
changeset 2856 6f4d5ee1906a
parent 2855 4d8a6b4dda79
child 2857 0375a3ea725e
6463348 ZFS code could be more portable
usr/src/cmd/zdb/zdb.c
usr/src/cmd/zfs/zfs_main.c
usr/src/cmd/zpool/zpool_iter.c
usr/src/cmd/zpool/zpool_main.c
usr/src/cmd/zpool/zpool_util.c
usr/src/cmd/zpool/zpool_util.h
usr/src/cmd/zpool/zpool_vdev.c
usr/src/cmd/ztest/ztest.c
usr/src/common/avl/avl.c
usr/src/common/nvpair/nvpair.c
usr/src/common/nvpair/nvpair_alloc_fixed.c
usr/src/lib/libuutil/common/uu_avl.c
usr/src/lib/libzfs/common/libzfs_dataset.c
usr/src/lib/libzfs/common/libzfs_pool.c
usr/src/lib/libzpool/common/kernel.c
usr/src/lib/libzpool/common/sys/zfs_context.h
usr/src/uts/common/fs/zfs/arc.c
usr/src/uts/common/fs/zfs/dmu_objset.c
usr/src/uts/common/fs/zfs/dmu_zfetch.c
usr/src/uts/common/fs/zfs/dsl_dataset.c
usr/src/uts/common/fs/zfs/dsl_dir.c
usr/src/uts/common/fs/zfs/dsl_pool.c
usr/src/uts/common/fs/zfs/metaslab.c
usr/src/uts/common/fs/zfs/spa.c
usr/src/uts/common/fs/zfs/spa_errlog.c
usr/src/uts/common/fs/zfs/spa_misc.c
usr/src/uts/common/fs/zfs/sys/spa.h
usr/src/uts/common/fs/zfs/sys/vdev_impl.h
usr/src/uts/common/fs/zfs/sys/zap_impl.h
usr/src/uts/common/fs/zfs/txg.c
usr/src/uts/common/fs/zfs/unique.c
usr/src/uts/common/fs/zfs/vdev.c
usr/src/uts/common/fs/zfs/zap.c
usr/src/uts/common/fs/zfs/zap_leaf.c
usr/src/uts/common/fs/zfs/zap_micro.c
usr/src/uts/common/fs/zfs/zfs_ioctl.c
usr/src/uts/common/fs/zfs/zfs_znode.c
usr/src/uts/common/fs/zfs/zil.c
usr/src/uts/common/fs/zfs/zio.c
usr/src/uts/common/fs/zfs/zio_checksum.c
usr/src/uts/common/fs/zfs/zio_compress.c
--- a/usr/src/cmd/zdb/zdb.c	Tue Oct 03 14:50:02 2006 -0700
+++ b/usr/src/cmd/zdb/zdb.c	Tue Oct 03 15:01:10 2006 -0700
@@ -389,17 +389,19 @@
 			(void) printf("\t\t[%4llu] %s: txg %llu, pass %llu\n",
 			    (u_longlong_t)(offset / sizeof (entry)),
 			    ddata[SM_DEBUG_ACTION_DECODE(entry)],
-			    SM_DEBUG_TXG_DECODE(entry),
-			    SM_DEBUG_SYNCPASS_DECODE(entry));
+			    (u_longlong_t)SM_DEBUG_TXG_DECODE(entry),
+			    (u_longlong_t)SM_DEBUG_SYNCPASS_DECODE(entry));
 		} else {
 			(void) printf("\t\t[%4llu]    %c  range:"
 			    " %08llx-%08llx  size: %06llx\n",
 			    (u_longlong_t)(offset / sizeof (entry)),
 			    SM_TYPE_DECODE(entry) == SM_ALLOC ? 'A' : 'F',
-			    (SM_OFFSET_DECODE(entry) << mapshift) + mapstart,
-			    (SM_OFFSET_DECODE(entry) << mapshift) + mapstart +
-			    (SM_RUN_DECODE(entry) << mapshift),
-			    (SM_RUN_DECODE(entry) << mapshift));
+			    (u_longlong_t)((SM_OFFSET_DECODE(entry) <<
+			    mapshift) + mapstart),
+			    (u_longlong_t)((SM_OFFSET_DECODE(entry) <<
+			    mapshift) + mapstart + (SM_RUN_DECODE(entry) <<
+			    mapshift)),
+			    (u_longlong_t)(SM_RUN_DECODE(entry) << mapshift));
 			if (SM_TYPE_DECODE(entry) == SM_ALLOC)
 				alloc += SM_RUN_DECODE(entry) << mapshift;
 			else
@@ -497,7 +499,7 @@
 		    indent, "",
 		    (u_longlong_t)ss->ss_start,
 		    (u_longlong_t)ss->ss_end - 1,
-		    (u_longlong_t)ss->ss_end - ss->ss_start);
+		    (u_longlong_t)(ss->ss_end - ss->ss_start));
 	}
 
 	(void) printf("\n");
@@ -844,7 +846,7 @@
 		object = parent;
 	}
 
-	(void) sprintf(component, "???<object#%llu>", (u_longlong_t)object);
+	(void) sprintf(component, "\?\?\?<object#%llu>", (u_longlong_t)object);
 
 	complen = strlen(component);
 	path -= complen;
@@ -1758,14 +1760,17 @@
 	 */
 	for (d = 0; d < BP_GET_NDVAS(bp); d++) {
 		(void) printf("\tDVA[%d]: vdev_id %lld / %llx\n", d,
-		    DVA_GET_VDEV(&dva[d]), DVA_GET_OFFSET(&dva[d]));
+		    (longlong_t)DVA_GET_VDEV(&dva[d]),
+		    (longlong_t)DVA_GET_OFFSET(&dva[d]));
 		(void) printf("\tDVA[%d]:       GANG: %-5s  GRID:  %04llx\t"
 		    "ASIZE: %llx\n", d,
 		    DVA_GET_GANG(&dva[d]) ? "TRUE" : "FALSE",
-		    DVA_GET_GRID(&dva[d]), DVA_GET_ASIZE(&dva[d]));
+		    (longlong_t)DVA_GET_GRID(&dva[d]),
+		    (longlong_t)DVA_GET_ASIZE(&dva[d]));
 		(void) printf("\tDVA[%d]: :%llu:%llx:%llx:%s%s%s%s\n", d,
-		    DVA_GET_VDEV(&dva[d]), DVA_GET_OFFSET(&dva[d]),
-		    BP_GET_PSIZE(bp),
+		    (u_longlong_t)DVA_GET_VDEV(&dva[d]),
+		    (longlong_t)DVA_GET_OFFSET(&dva[d]),
+		    (longlong_t)BP_GET_PSIZE(bp),
 		    BP_SHOULD_BYTESWAP(bp) ? "e" : "",
 		    !DVA_GET_GANG(&dva[d]) && BP_GET_LEVEL(bp) != 0 ?
 		    "d" : "",
@@ -1773,12 +1778,12 @@
 		    BP_GET_COMPRESS(bp) != 0 ? "d" : "");
 	}
 	(void) printf("\tLSIZE:  %-16llx\t\tPSIZE: %llx\n",
-	    BP_GET_LSIZE(bp), BP_GET_PSIZE(bp));
+	    (longlong_t)BP_GET_LSIZE(bp), (longlong_t)BP_GET_PSIZE(bp));
 	(void) printf("\tENDIAN: %6s\t\t\t\t\tTYPE:  %s\n",
 	    BP_GET_BYTEORDER(bp) ? "LITTLE" : "BIG",
 	    dmu_ot[BP_GET_TYPE(bp)].ot_name);
 	(void) printf("\tBIRTH:  %-16llx   LEVEL: %-2llu\tFILL:  %llx\n",
-	    (u_longlong_t)bp->blk_birth, BP_GET_LEVEL(bp),
+	    (u_longlong_t)bp->blk_birth, (u_longlong_t)BP_GET_LEVEL(bp),
 	    (u_longlong_t)bp->blk_fill);
 	(void) printf("\tCKFUNC: %-16s\t\tCOMP:  %s\n",
 	    zio_checksum_table[BP_GET_CHECKSUM(bp)].ci_name,
@@ -1961,7 +1966,7 @@
 
 	for (s = strtok(flagstr, ":"); s; s = strtok(NULL, ":")) {
 		for (i = 0; flagstr[i]; i++) {
-			int bit = flagbits[flagstr[i]];
+			int bit = flagbits[(uchar_t)flagstr[i]];
 
 			if (bit == 0) {
 				(void) printf("***Invalid flag: %c\n",
--- a/usr/src/cmd/zfs/zfs_main.c	Tue Oct 03 14:50:02 2006 -0700
+++ b/usr/src/cmd/zfs/zfs_main.c	Tue Oct 03 15:01:10 2006 -0700
@@ -1869,7 +1869,6 @@
 set_callback(zfs_handle_t *zhp, void *data)
 {
 	set_cbdata_t *cbp = data;
-	int ret = 1;
 
 	if (zfs_prop_set(zhp, cbp->cb_propname, cbp->cb_value) != 0) {
 		switch (libzfs_errno(g_zfs)) {
@@ -1884,9 +1883,7 @@
 		}
 		return (1);
 	}
-	ret = 0;
-error:
-	return (ret);
+	return (0);
 }
 
 static int
@@ -3014,7 +3011,7 @@
 static int
 volcheck(zpool_handle_t *zhp, void *data)
 {
-	int isinit = (int)data;
+	boolean_t isinit = *((boolean_t *)data);
 
 	if (isinit)
 		return (zpool_create_zvol_links(zhp));
@@ -3029,7 +3026,7 @@
 static int
 do_volcheck(boolean_t isinit)
 {
-	return (zpool_iter(g_zfs, volcheck, (void *)isinit) ? 1 : 0);
+	return (zpool_iter(g_zfs, volcheck, &isinit) ? 1 : 0);
 }
 
 int
--- a/usr/src/cmd/zpool/zpool_iter.c	Tue Oct 03 14:50:02 2006 -0700
+++ b/usr/src/cmd/zpool/zpool_iter.c	Tue Oct 03 15:01:10 2006 -0700
@@ -106,11 +106,11 @@
 	    offsetof(zpool_node_t, zn_avlnode), zpool_compare, UU_DEFAULT);
 
 	if (zlp->zl_pool == NULL)
-		no_memory();
+		zpool_no_memory();
 
 	if ((zlp->zl_avl = uu_avl_create(zlp->zl_pool, NULL,
 	    UU_DEFAULT)) == NULL)
-		no_memory();
+		zpool_no_memory();
 
 	if (argc == 0) {
 		(void) zpool_iter(g_zfs, add_pool, zlp);
--- a/usr/src/cmd/zpool/zpool_main.c	Tue Oct 03 14:50:02 2006 -0700
+++ b/usr/src/cmd/zpool/zpool_main.c	Tue Oct 03 15:01:10 2006 -0700
@@ -952,7 +952,7 @@
 	reason = zpool_import_status(config, &msgid);
 
 	(void) printf("  pool: %s\n", name);
-	(void) printf("    id: %llu\n", guid);
+	(void) printf("    id: %llu\n", (u_longlong_t)guid);
 	(void) printf(" state: %s", health);
 	if (pool_state == POOL_STATE_DESTROYED)
 	    (void) printf(" (DESTROYED)");
@@ -1832,7 +1832,7 @@
 				uint64_t capacity = (total == 0 ? 0 :
 				    (used * 100 / total));
 				(void) snprintf(buf, sizeof (buf), "%llu%%",
-				    capacity);
+				    (u_longlong_t)capacity);
 			}
 			break;
 
@@ -2624,8 +2624,8 @@
 
 	(void) printf("errors: The following persistent errors have been "
 	    "detected:\n\n");
-	(void) printf("%8s  %-*s  %-*s  %s\n", "", maxdsname, "DATASET",
-	    maxobjname, "OBJECT", "RANGE");
+	(void) printf("%8s  %-*s  %-*s  %s\n", "", (int)maxdsname, "DATASET",
+	    (int)maxobjname, "OBJECT", "RANGE");
 
 	for (i = 0; i < nelem; i++) {
 		nv = log[i];
@@ -2637,8 +2637,8 @@
 		verify(nvlist_lookup_string(nv, ZPOOL_ERR_RANGE,
 		    &range) == 0);
 
-		(void) printf("%8s  %-*s  %-*s  %s\n", "", maxdsname,
-		    dsname, maxobjname, objname, range);
+		(void) printf("%8s  %-*s  %-*s  %s\n", "", (int)maxdsname,
+		    dsname, (int)maxobjname, objname, range);
 	}
 }
 
@@ -2870,7 +2870,8 @@
 				    "errors\n"));
 			else if (!cbp->cb_verbose)
 				(void) printf(gettext("errors: %llu data "
-				    "errors, use '-v' for a list\n"), nerr);
+				    "errors, use '-v' for a list\n"),
+				    (u_longlong_t)nerr);
 			else
 				print_error_log(zhp);
 		}
@@ -2962,7 +2963,7 @@
 				cbp->cb_first = B_FALSE;
 			}
 
-			(void) printf("%2llu   %s\n", version,
+			(void) printf("%2llu   %s\n", (u_longlong_t)version,
 			    zpool_get_name(zhp));
 		} else {
 			cbp->cb_first = B_FALSE;
@@ -2983,7 +2984,7 @@
 			cbp->cb_first = B_FALSE;
 		}
 
-		(void) printf("%2llu   %s\n", version,
+		(void) printf("%2llu   %s\n", (u_longlong_t)version,
 		    zpool_get_name(zhp));
 	}
 
--- a/usr/src/cmd/zpool/zpool_util.c	Tue Oct 03 14:50:02 2006 -0700
+++ b/usr/src/cmd/zpool/zpool_util.c	Tue Oct 03 15:01:10 2006 -0700
@@ -2,9 +2,8 @@
  * CDDL HEADER START
  *
  * The contents of this file are subject to the terms of the
- * Common Development and Distribution License, Version 1.0 only
- * (the "License").  You may not use this file except in compliance
- * with the License.
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
  *
  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
  * or http://www.opensolaris.org/os/licensing.
@@ -71,7 +70,7 @@
  * Display an out of memory error message and abort the current program.
  */
 void
-no_memory(void)
+zpool_no_memory(void)
 {
 	assert(errno == ENOMEM);
 	(void) fprintf(stderr,
--- a/usr/src/cmd/zpool/zpool_util.h	Tue Oct 03 14:50:02 2006 -0700
+++ b/usr/src/cmd/zpool/zpool_util.h	Tue Oct 03 15:01:10 2006 -0700
@@ -40,7 +40,7 @@
  */
 void *safe_malloc(size_t);
 char *safe_strdup(const char *);
-void no_memory(void);
+void zpool_no_memory(void);
 
 /*
  * Virtual device functions
--- a/usr/src/cmd/zpool/zpool_vdev.c	Tue Oct 03 14:50:02 2006 -0700
+++ b/usr/src/cmd/zpool/zpool_vdev.c	Tue Oct 03 15:01:10 2006 -0700
@@ -846,7 +846,7 @@
 		 * were unable to read the disk geometry.
 		 */
 		if (errno == ENOMEM)
-			no_memory();
+			zpool_no_memory();
 
 		(void) fprintf(stderr, gettext("cannot label '%s': unable to "
 		    "read disk geometry\n"), name);
@@ -1175,7 +1175,7 @@
 				child = realloc(child,
 				    children * sizeof (nvlist_t *));
 				if (child == NULL)
-					no_memory();
+					zpool_no_memory();
 				if ((nv = make_leaf_vdev(argv[c])) == NULL)
 					return (NULL);
 				child[children - 1] = nv;
@@ -1227,7 +1227,7 @@
 		toplevels++;
 		top = realloc(top, toplevels * sizeof (nvlist_t *));
 		if (top == NULL)
-			no_memory();
+			zpool_no_memory();
 		top[toplevels - 1] = nv;
 	}
 
--- a/usr/src/cmd/ztest/ztest.c	Tue Oct 03 14:50:02 2006 -0700
+++ b/usr/src/cmd/ztest/ztest.c	Tue Oct 03 15:01:10 2006 -0700
@@ -1133,28 +1133,6 @@
 	return (zil_itx_assign(zilog, itx, tx));
 }
 
-#ifndef lint
-static uint64_t
-ztest_log_remove(zilog_t *zilog, dmu_tx_t *tx, uint64_t object)
-{
-	itx_t *itx;
-	lr_remove_t *lr;
-	size_t namesize;
-	char name[24];
-
-	(void) sprintf(name, "ZOBJ_%llu", (u_longlong_t)object);
-	namesize = strlen(name) + 1;
-
-	itx = zil_itx_create(TX_REMOVE, sizeof (*lr) + namesize +
-	    ztest_random(8000));
-	lr = (lr_remove_t *)&itx->itx_lr;
-	lr->lr_doid = object;
-	bcopy(name, (char *)(lr + 1), namesize);
-
-	return (zil_itx_assign(zilog, itx, tx));
-}
-#endif /* lint */
-
 void
 ztest_dmu_objset_create_destroy(ztest_args_t *za)
 {
@@ -3335,7 +3313,7 @@
 			exit(0);
 		}
 
-		while (waitpid(pid, &status, WEXITED) != pid)
+		while (waitpid(pid, &status, 0) != pid)
 			continue;
 
 		if (WIFEXITED(status)) {
@@ -3345,7 +3323,7 @@
 				    WEXITSTATUS(status));
 				exit(2);
 			}
-		} else {
+		} else if (WIFSIGNALED(status)) {
 			if (WTERMSIG(status) != SIGKILL) {
 				(void) fprintf(stderr,
 				    "child died with signal %d\n",
@@ -3353,6 +3331,10 @@
 				exit(3);
 			}
 			kills++;
+		} else {
+			(void) fprintf(stderr, "something strange happened "
+			    "to child\n");
+			exit(4);
 		}
 
 		iters++;
--- a/usr/src/common/avl/avl.c	Tue Oct 03 14:50:02 2006 -0700
+++ b/usr/src/common/avl/avl.c	Tue Oct 03 15:01:10 2006 -0700
@@ -261,7 +261,7 @@
 		if (diff == 0) {
 #ifdef DEBUG
 			if (where != NULL)
-				*where = NULL;
+				*where = 0;
 #endif
 			return (AVL_NODE2DATA(node, off));
 		}
--- a/usr/src/common/nvpair/nvpair.c	Tue Oct 03 14:50:02 2006 -0700
+++ b/usr/src/common/nvpair/nvpair.c	Tue Oct 03 15:01:10 2006 -0700
@@ -567,7 +567,7 @@
 	if (!(priv->nvp_stat & NV_STAT_EMBEDDED))
 		nv_mem_free(priv, nvl, NV_ALIGN(sizeof (nvlist_t)));
 	else
-		nvl->nvl_priv = NULL;
+		nvl->nvl_priv = 0;
 
 	nv_mem_free(priv, priv, sizeof (nvpriv_t));
 }
@@ -872,6 +872,8 @@
 		}
 		break;
 	}
+	default:
+		break;
 	}
 
 	/* calculate sizes of the nvpair elements and the nvpair itself */
@@ -1794,7 +1796,7 @@
 {
 	int err;
 
-	if (nvl->nvl_priv == NULL)
+	if (nvl->nvl_priv == 0)
 		return (EFAULT);
 
 	/*
--- a/usr/src/common/nvpair/nvpair_alloc_fixed.c	Tue Oct 03 14:50:02 2006 -0700
+++ b/usr/src/common/nvpair/nvpair_alloc_fixed.c	Tue Oct 03 15:01:10 2006 -0700
@@ -2,9 +2,8 @@
  * CDDL HEADER START
  *
  * The contents of this file are subject to the terms of the
- * Common Development and Distribution License, Version 1.0 only
- * (the "License").  You may not use this file except in compliance
- * with the License.
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
  *
  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
  * or http://www.opensolaris.org/os/licensing.
@@ -19,8 +18,9 @@
  *
  * CDDL HEADER END
  */
+
 /*
- * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
+ * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
  * Use is subject to license terms.
  */
 
@@ -69,7 +69,7 @@
 	uintptr_t lim = base + va_arg(valist, size_t);
 	nvbuf_t *nvb = (nvbuf_t *)P2ROUNDUP(base, sizeof (uintptr_t));
 
-	if (base == NULL || (uintptr_t)&nvb[1] > lim)
+	if (base == 0 || (uintptr_t)&nvb[1] > lim)
 		return (EINVAL);
 
 	nvb->nvb_buf = (uintptr_t)&nvb[0];
--- a/usr/src/lib/libuutil/common/uu_avl.c	Tue Oct 03 14:50:02 2006 -0700
+++ b/usr/src/lib/libuutil/common/uu_avl.c	Tue Oct 03 15:01:10 2006 -0700
@@ -2,9 +2,8 @@
  * CDDL HEADER START
  *
  * The contents of this file are subject to the terms of the
- * Common Development and Distribution License, Version 1.0 only
- * (the "License").  You may not use this file except in compliance
- * with the License.
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
  *
  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
  * or http://www.opensolaris.org/os/licensing.
@@ -20,7 +19,7 @@
  * CDDL HEADER END
  */
 /*
- * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
+ * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
  * Use is subject to license terms.
  */
 
@@ -155,7 +154,7 @@
 	}
 
 	na[0] = POOL_TO_MARKER(pp);
-	na[1] = NULL;
+	na[1] = 0;
 }
 
 void
@@ -169,7 +168,7 @@
 			    "node already finied\n",
 			    base, np, pp, pp->uap_name);
 		}
-		if (na[0] != POOL_TO_MARKER(pp) || na[1] != NULL) {
+		if (na[0] != POOL_TO_MARKER(pp) || na[1] != 0) {
 			uu_panic("uu_avl_node_fini(%p, %p, %p (\"%s\")): "
 			    "node corrupt, in tree, or in different pool\n",
 			    base, np, pp, pp->uap_name);
@@ -449,7 +448,7 @@
 	avl_remove(&ap->ua_tree, elem);
 
 	na[0] = POOL_TO_MARKER(pp);
-	na[1] = NULL;
+	na[1] = 0;
 }
 
 void *
@@ -462,7 +461,7 @@
 		uintptr_t *na = NODE_ARRAY(pp, elem);
 
 		na[0] = POOL_TO_MARKER(pp);
-		na[1] = NULL;
+		na[1] = 0;
 	}
 	return (elem);
 }
@@ -495,11 +494,11 @@
 		uu_avl_pool_t *pp = ap->ua_pool;
 		uintptr_t *na = NODE_ARRAY(pp, elem);
 
-		if (na[1] != NULL)
+		if (na[1] != 0)
 			uu_panic("uu_avl_insert(%p, %p, %p): node already "
 			    "in tree, or corrupt\n",
 			    ap, elem, idx);
-		if (na[0] == NULL)
+		if (na[0] == 0)
 			uu_panic("uu_avl_insert(%p, %p, %p): node not "
 			    "initialized\n",
 			    ap, elem, idx);
--- a/usr/src/lib/libzfs/common/libzfs_dataset.c	Tue Oct 03 14:50:02 2006 -0700
+++ b/usr/src/lib/libzfs/common/libzfs_dataset.c	Tue Oct 03 15:01:10 2006 -0700
@@ -157,6 +157,21 @@
 				zfs_error_aux(hdl, dgettext(TEXT_DOMAIN,
 				    "multiple '@' delimiters in name"));
 				break;
+
+			case NAME_ERR_NOLETTER:
+				zfs_error_aux(hdl, dgettext(TEXT_DOMAIN,
+				    "pool doesn't begin with a letter"));
+				break;
+
+			case NAME_ERR_RESERVED:
+				zfs_error_aux(hdl, dgettext(TEXT_DOMAIN,
+				    "name is reserved"));
+				break;
+
+			case NAME_ERR_DISKLIKE:
+				zfs_error_aux(hdl, dgettext(TEXT_DOMAIN,
+				    "reserved disk name"));
+				break;
 			}
 		}
 
@@ -1540,7 +1555,8 @@
 		if (get_numeric_property(zhp, prop, src, &source, &val) != 0)
 			return (-1);
 		if (literal)
-			(void) snprintf(propbuf, proplen, "%llu", val);
+			(void) snprintf(propbuf, proplen, "%llu",
+			(u_longlong_t)val);
 		else
 			zfs_nicenum(val, propbuf, proplen);
 		break;
@@ -1570,6 +1586,7 @@
 			    strftime(propbuf, proplen, "%a %b %e %k:%M %Y",
 			    &t) == 0)
 				(void) snprintf(propbuf, proplen, "%llu",
+				    (u_longlong_t)
 				    zhp->zfs_dmustats.dds_creation_time);
 		}
 		break;
@@ -1648,7 +1665,8 @@
 				(void) strlcpy(propbuf, "none", proplen);
 		} else {
 			if (literal)
-				(void) snprintf(propbuf, proplen, "%llu", val);
+				(void) snprintf(propbuf, proplen, "%llu",
+				(u_longlong_t)val);
 			else
 				zfs_nicenum(val, propbuf, proplen);
 		}
@@ -1657,8 +1675,8 @@
 	case ZFS_PROP_COMPRESSRATIO:
 		if (get_numeric_property(zhp, prop, src, &source, &val) != 0)
 			return (-1);
-		(void) snprintf(propbuf, proplen, "%lld.%02lldx", val / 100,
-		    val % 100);
+		(void) snprintf(propbuf, proplen, "%lld.%02lldx", (longlong_t)
+		    val / 100, (longlong_t)val % 100);
 		break;
 
 	case ZFS_PROP_TYPE:
--- a/usr/src/lib/libzfs/common/libzfs_pool.c	Tue Oct 03 14:50:02 2006 -0700
+++ b/usr/src/lib/libzfs/common/libzfs_pool.c	Tue Oct 03 15:01:10 2006 -0700
@@ -99,6 +99,27 @@
 				zfs_error_aux(hdl, dgettext(TEXT_DOMAIN,
 				    "pool name is reserved"));
 				break;
+
+			case NAME_ERR_LEADING_SLASH:
+				zfs_error_aux(hdl, dgettext(TEXT_DOMAIN,
+				    "leading slash in name"));
+				break;
+
+			case NAME_ERR_EMPTY_COMPONENT:
+				zfs_error_aux(hdl, dgettext(TEXT_DOMAIN,
+				    "empty component in name"));
+				break;
+
+			case NAME_ERR_TRAILING_SLASH:
+				zfs_error_aux(hdl, dgettext(TEXT_DOMAIN,
+				    "trailing slash in name"));
+				break;
+
+			case NAME_ERR_MULTIPLE_AT:
+				zfs_error_aux(hdl, dgettext(TEXT_DOMAIN,
+				    "multiple '@' delimiters in name"));
+				break;
+
 			}
 		}
 		return (B_FALSE);
@@ -470,7 +491,7 @@
 	    ZFS_TYPE_FILESYSTEM)) == NULL)
 		return (-1);
 
-	if (zpool_remove_zvol_links(zhp) != NULL)
+	if (zpool_remove_zvol_links(zhp) != 0)
 		return (-1);
 
 	(void) strlcpy(zc.zc_name, zhp->zpool_name, sizeof (zc.zc_name));
@@ -1378,7 +1399,8 @@
 	    &value) == 0) {
 		verify(nvlist_lookup_uint64(nv, ZPOOL_CONFIG_GUID,
 		    &value) == 0);
-		(void) snprintf(buf, sizeof (buf), "%llu", value);
+		(void) snprintf(buf, sizeof (buf), "%llu",
+		    (u_longlong_t)value);
 		path = buf;
 	} else if (nvlist_lookup_string(nv, ZPOOL_CONFIG_PATH, &path) == 0) {
 
@@ -1432,7 +1454,7 @@
 			verify(nvlist_lookup_uint64(nv, ZPOOL_CONFIG_NPARITY,
 			    &value) == 0);
 			(void) snprintf(buf, sizeof (buf), "%s%llu", path,
-			    value);
+			    (u_longlong_t)value);
 			path = buf;
 		}
 	}
@@ -1473,7 +1495,7 @@
 	verify(nvlist_lookup_uint64(zhp->zpool_config, ZPOOL_CONFIG_ERRCOUNT,
 	    &count) == 0);
 	if ((zc.zc_nvlist_dst = (uintptr_t)zfs_alloc(zhp->zpool_hdl,
-	    count * sizeof (zbookmark_t))) == NULL)
+	    count * sizeof (zbookmark_t))) == (uintptr_t)NULL)
 		return (-1);
 	zc.zc_nvlist_dst_size = count;
 	(void) strcpy(zc.zc_name, zhp->zpool_name);
@@ -1484,7 +1506,7 @@
 			if (errno == ENOMEM) {
 				if ((zc.zc_nvlist_dst = (uintptr_t)
 				    zfs_alloc(zhp->zpool_hdl,
-				    zc.zc_nvlist_dst_size)) == NULL)
+				    zc.zc_nvlist_dst_size)) == (uintptr_t)NULL)
 					return (-1);
 			} else {
 				return (-1);
@@ -1574,12 +1596,14 @@
 
 					zhp->zpool_error_log[j] = nv;
 					(void) snprintf(buf, sizeof (buf),
-					    "%llx", zb[i].zb_objset);
+					    "%llx", (longlong_t)
+					    zb[i].zb_objset);
 					if (nvlist_add_string(nv,
 					    ZPOOL_ERR_DATASET, buf) != 0)
 						goto nomem;
 					(void) snprintf(buf, sizeof (buf),
-					    "%llx", zb[i].zb_object);
+					    "%llx", (longlong_t)
+					    zb[i].zb_object);
 					if (nvlist_add_string(nv,
 					    ZPOOL_ERR_OBJECT, buf) != 0)
 						goto nomem;
--- a/usr/src/lib/libzpool/common/kernel.c	Tue Oct 03 14:50:02 2006 -0700
+++ b/usr/src/lib/libzpool/common/kernel.c	Tue Oct 03 15:01:10 2006 -0700
@@ -36,6 +36,7 @@
 #include <sys/spa.h>
 #include <sys/processor.h>
 
+
 /*
  * Emulation of kernel services in userland.
  */
@@ -85,7 +86,7 @@
 {
 	ASSERT(mp->m_owner != (void *)-1UL);
 	ASSERT(mp->m_owner != curthread);
-	(void) mutex_lock(&mp->m_lock);
+	VERIFY(mutex_lock(&mp->m_lock) == 0);
 	ASSERT(mp->m_owner == NULL);
 	mp->m_owner = curthread;
 }
@@ -108,7 +109,7 @@
 {
 	ASSERT(mutex_owner(mp) == curthread);
 	mp->m_owner = NULL;
-	(void) mutex_unlock(&mp->m_lock);
+	VERIFY(mutex_unlock(&mp->m_lock) == 0);
 }
 
 void *
@@ -199,13 +200,13 @@
 void
 cv_init(kcondvar_t *cv, char *name, int type, void *arg)
 {
-	(void) cond_init(cv, type, NULL);
+	VERIFY(cond_init(cv, type, NULL) == 0);
 }
 
 void
 cv_destroy(kcondvar_t *cv)
 {
-	(void) cond_destroy(cv);
+	VERIFY(cond_destroy(cv) == 0);
 }
 
 void
@@ -213,7 +214,8 @@
 {
 	ASSERT(mutex_owner(mp) == curthread);
 	mp->m_owner = NULL;
-	(void) cond_wait(cv, &mp->m_lock);
+	int ret = cond_wait(cv, &mp->m_lock);
+	VERIFY(ret == 0 || ret == EINTR);
 	mp->m_owner = curthread;
 }
 
@@ -251,13 +253,13 @@
 void
 cv_signal(kcondvar_t *cv)
 {
-	(void) cond_signal(cv);
+	VERIFY(cond_signal(cv) == 0);
 }
 
 void
 cv_broadcast(kcondvar_t *cv)
 {
-	(void) cond_broadcast(cv);
+	VERIFY(cond_broadcast(cv) == 0);
 }
 
 /*
--- a/usr/src/lib/libzpool/common/sys/zfs_context.h	Tue Oct 03 14:50:02 2006 -0700
+++ b/usr/src/lib/libzpool/common/sys/zfs_context.h	Tue Oct 03 15:01:10 2006 -0700
@@ -178,7 +178,7 @@
 
 #define	thread_create(stk, stksize, func, arg, len, pp, state, pri)	\
 	zk_thread_create(func, arg)
-#define	thread_exit() thr_exit(0)
+#define	thread_exit() thr_exit(NULL)
 
 extern kthread_t *zk_thread_create(void (*func)(), void *arg);
 
--- a/usr/src/uts/common/fs/zfs/arc.c	Tue Oct 03 14:50:02 2006 -0700
+++ b/usr/src/uts/common/fs/zfs/arc.c	Tue Oct 03 15:01:10 2006 -0700
@@ -1303,6 +1303,7 @@
 
 			/* reset the growth delay for every reclaim */
 			growtime = lbolt + (arc_grow_retry * hz);
+			ASSERT(growtime > 0);
 
 			arc_kmem_reap_now(last_reclaim);
 
@@ -2449,6 +2450,12 @@
 	arc.evict_skip = 0;
 	arc.mutex_miss = 0;
 
+	mutex_init(&arc.anon->mtx, NULL, MUTEX_DEFAULT, NULL);
+	mutex_init(&arc.mru->mtx, NULL, MUTEX_DEFAULT, NULL);
+	mutex_init(&arc.mru_ghost->mtx, NULL, MUTEX_DEFAULT, NULL);
+	mutex_init(&arc.mfu->mtx, NULL, MUTEX_DEFAULT, NULL);
+	mutex_init(&arc.mfu_ghost->mtx, NULL, MUTEX_DEFAULT, NULL);
+
 	list_create(&arc.mru->list, sizeof (arc_buf_hdr_t),
 	    offsetof(arc_buf_hdr_t, b_arc_node));
 	list_create(&arc.mru_ghost->list, sizeof (arc_buf_hdr_t),
@@ -2491,5 +2498,11 @@
 	list_destroy(&arc.mfu->list);
 	list_destroy(&arc.mfu_ghost->list);
 
+	mutex_destroy(&arc.anon->mtx);
+	mutex_destroy(&arc.mru->mtx);
+	mutex_destroy(&arc.mru_ghost->mtx);
+	mutex_destroy(&arc.mfu->mtx);
+	mutex_destroy(&arc.mfu_ghost->mtx);
+
 	buf_fini();
 }
--- a/usr/src/uts/common/fs/zfs/dmu_objset.c	Tue Oct 03 14:50:02 2006 -0700
+++ b/usr/src/uts/common/fs/zfs/dmu_objset.c	Tue Oct 03 15:01:10 2006 -0700
@@ -214,6 +214,9 @@
 	list_create(&osi->os_downgraded_dbufs, sizeof (dmu_buf_impl_t),
 	    offsetof(dmu_buf_impl_t, db_link));
 
+	mutex_init(&osi->os_lock, NULL, MUTEX_DEFAULT, NULL);
+	mutex_init(&osi->os_obj_lock, NULL, MUTEX_DEFAULT, NULL);
+
 	osi->os_meta_dnode = dnode_special_open(osi,
 	    &osi->os_phys->os_meta_dnode, DMU_META_DNODE_OBJECT);
 
@@ -361,6 +364,8 @@
 	zil_free(osi->os_zil);
 
 	zio_buf_free(osi->os_phys, sizeof (objset_phys_t));
+	mutex_destroy(&osi->os_lock);
+	mutex_destroy(&osi->os_obj_lock);
 	kmem_free(osi, sizeof (objset_impl_t));
 }
 
--- a/usr/src/uts/common/fs/zfs/dmu_zfetch.c	Tue Oct 03 14:50:02 2006 -0700
+++ b/usr/src/uts/common/fs/zfs/dmu_zfetch.c	Tue Oct 03 15:01:10 2006 -0700
@@ -55,7 +55,6 @@
 static int		dmu_zfetch_stream_insert(zfetch_t *, zstream_t *);
 static zstream_t	*dmu_zfetch_stream_reclaim(zfetch_t *);
 static void		dmu_zfetch_stream_remove(zfetch_t *, zstream_t *);
-static void		dmu_zfetch_stream_update(zfetch_t *, zstream_t *);
 static int		dmu_zfetch_streams_equal(zstream_t *, zstream_t *);
 
 /*
--- a/usr/src/uts/common/fs/zfs/dsl_dataset.c	Tue Oct 03 14:50:02 2006 -0700
+++ b/usr/src/uts/common/fs/zfs/dsl_dataset.c	Tue Oct 03 15:01:10 2006 -0700
@@ -231,6 +231,9 @@
 	if (list_link_active(&ds->ds_synced_link))
 		list_remove(&dp->dp_synced_objsets, ds);
 
+	mutex_destroy(&ds->ds_lock);
+	mutex_destroy(&ds->ds_deadlist.bpl_lock);
+
 	kmem_free(ds, sizeof (dsl_dataset_t));
 }
 
@@ -284,6 +287,10 @@
 		ds->ds_object = dsobj;
 		ds->ds_phys = dbuf->db_data;
 
+		mutex_init(&ds->ds_lock, NULL, MUTEX_DEFAULT, NULL);
+		mutex_init(&ds->ds_deadlist.bpl_lock, NULL, MUTEX_DEFAULT,
+		    NULL);
+
 		err = bplist_open(&ds->ds_deadlist,
 		    mos, ds->ds_phys->ds_deadlist_obj);
 		if (err == 0) {
@@ -295,6 +302,8 @@
 			 * we don't really need to close the blist if we
 			 * just opened it.
 			 */
+			mutex_destroy(&ds->ds_lock);
+			mutex_destroy(&ds->ds_deadlist.bpl_lock);
 			kmem_free(ds, sizeof (dsl_dataset_t));
 			dmu_buf_rele(dbuf, tag);
 			return (err);
@@ -343,6 +352,8 @@
 				    DS_MODE_NONE, ds);
 			}
 			dsl_dir_close(ds->ds_dir, ds);
+			mutex_destroy(&ds->ds_lock);
+			mutex_destroy(&ds->ds_deadlist.bpl_lock);
 			kmem_free(ds, sizeof (dsl_dataset_t));
 			if (err) {
 				dmu_buf_rele(dbuf, tag);
--- a/usr/src/uts/common/fs/zfs/dsl_dir.c	Tue Oct 03 14:50:02 2006 -0700
+++ b/usr/src/uts/common/fs/zfs/dsl_dir.c	Tue Oct 03 15:01:10 2006 -0700
@@ -37,7 +37,6 @@
 #include <sys/arc.h>
 #include "zfs_namecheck.h"
 
-static uint64_t dsl_dir_space_accounted(dsl_dir_t *dd);
 static uint64_t dsl_dir_estimated_space(dsl_dir_t *dd);
 static uint64_t dsl_dir_space_available(dsl_dir_t *dd,
     dsl_dir_t *ancestor, int64_t delta, int ondiskonly);
@@ -70,6 +69,7 @@
 	 * dir open.
 	 */
 	list_destroy(&dd->dd_prop_cbs);
+	mutex_destroy(&dd->dd_lock);
 	kmem_free(dd, sizeof (dsl_dir_t));
 }
 
@@ -106,6 +106,7 @@
 		dd->dd_pool = dp;
 		dd->dd_phys = dbuf->db_data;
 		dd->dd_used_bytes = dd->dd_phys->dd_used_bytes;
+		mutex_init(&dd->dd_lock, NULL, MUTEX_DEFAULT, NULL);
 
 		list_create(&dd->dd_prop_cbs, sizeof (dsl_prop_cb_record_t),
 		    offsetof(dsl_prop_cb_record_t, cbr_node));
@@ -114,6 +115,7 @@
 			err = dsl_dir_open_obj(dp, dd->dd_phys->dd_parent_obj,
 			    NULL, dd, &dd->dd_parent);
 			if (err) {
+				mutex_destroy(&dd->dd_lock);
 				kmem_free(dd, sizeof (dsl_dir_t));
 				dmu_buf_rele(dbuf, tag);
 				return (err);
@@ -137,6 +139,7 @@
 			}
 			if (err) {
 				dsl_dir_close(dd->dd_parent, dd);
+				mutex_destroy(&dd->dd_lock);
 				kmem_free(dd, sizeof (dsl_dir_t));
 				dmu_buf_rele(dbuf, tag);
 				return (err);
@@ -150,6 +153,7 @@
 		if (winner) {
 			if (dd->dd_parent)
 				dsl_dir_close(dd->dd_parent, dd);
+			mutex_destroy(&dd->dd_lock);
 			kmem_free(dd, sizeof (dsl_dir_t));
 			dd = winner;
 		} else {
--- a/usr/src/uts/common/fs/zfs/dsl_pool.c	Tue Oct 03 14:50:02 2006 -0700
+++ b/usr/src/uts/common/fs/zfs/dsl_pool.c	Tue Oct 03 15:01:10 2006 -0700
@@ -60,6 +60,7 @@
 	dp = kmem_zalloc(sizeof (dsl_pool_t), KM_SLEEP);
 	dp->dp_spa = spa;
 	dp->dp_meta_rootbp = *bp;
+	rw_init(&dp->dp_config_rwlock, NULL, RW_DEFAULT, NULL);
 	txg_init(dp, txg);
 
 	txg_list_create(&dp->dp_dirty_datasets,
@@ -131,6 +132,7 @@
 
 	arc_flush();
 	txg_fini(dp);
+	rw_destroy(&dp->dp_config_rwlock);
 	kmem_free(dp, sizeof (dsl_pool_t));
 }
 
--- a/usr/src/uts/common/fs/zfs/metaslab.c	Tue Oct 03 14:50:02 2006 -0700
+++ b/usr/src/uts/common/fs/zfs/metaslab.c	Tue Oct 03 15:01:10 2006 -0700
@@ -293,6 +293,7 @@
 	metaslab_t *msp;
 
 	msp = kmem_zalloc(sizeof (metaslab_t), KM_SLEEP);
+	mutex_init(&msp->ms_lock, NULL, MUTEX_DEFAULT, NULL);
 
 	msp->ms_smo_syncing = *smo;
 
@@ -355,6 +356,7 @@
 	}
 
 	mutex_exit(&msp->ms_lock);
+	mutex_destroy(&msp->ms_lock);
 
 	kmem_free(msp, sizeof (metaslab_t));
 }
--- a/usr/src/uts/common/fs/zfs/spa.c	Tue Oct 03 14:50:02 2006 -0700
+++ b/usr/src/uts/common/fs/zfs/spa.c	Tue Oct 03 15:01:10 2006 -0700
@@ -124,6 +124,14 @@
 
 	rw_init(&spa->spa_traverse_lock, NULL, RW_DEFAULT, NULL);
 
+	mutex_init(&spa->spa_async_lock, NULL, MUTEX_DEFAULT, NULL);
+	mutex_init(&spa->spa_config_cache_lock, NULL, MUTEX_DEFAULT, NULL);
+	mutex_init(&spa->spa_scrub_lock, NULL, MUTEX_DEFAULT, NULL);
+	mutex_init(&spa->spa_errlog_lock, NULL, MUTEX_DEFAULT, NULL);
+	mutex_init(&spa->spa_errlist_lock, NULL, MUTEX_DEFAULT, NULL);
+	mutex_init(&spa->spa_config_lock.scl_lock, NULL, MUTEX_DEFAULT, NULL);
+	mutex_init(&spa->spa_sync_bplist.bpl_lock, NULL, MUTEX_DEFAULT, NULL);
+
 	list_create(&spa->spa_dirty_list, sizeof (vdev_t),
 	    offsetof(vdev_t, vdev_dirty_node));
 
--- a/usr/src/uts/common/fs/zfs/spa_errlog.c	Tue Oct 03 14:50:02 2006 -0700
+++ b/usr/src/uts/common/fs/zfs/spa_errlog.c	Tue Oct 03 15:01:10 2006 -0700
@@ -60,6 +60,7 @@
  * This is a stripped-down version of strtoull, suitable only for converting
  * lowercase hexidecimal numbers that don't overflow.
  */
+#ifdef _KERNEL
 static uint64_t
 strtonum(char *str, char **nptr)
 {
@@ -85,6 +86,7 @@
 
 	return (val);
 }
+#endif
 
 /*
  * Convert a bookmark to a string.
@@ -100,6 +102,7 @@
 /*
  * Convert a string to a bookmark
  */
+#ifdef _KERNEL
 static void
 name_to_bookmark(char *buf, zbookmark_t *zb)
 {
@@ -112,6 +115,7 @@
 	zb->zb_blkid = strtonum(buf + 1, &buf);
 	ASSERT(*buf == '\0');
 }
+#endif
 
 /*
  * Log an uncorrectable error to the persistent error log.  We add it to the
--- a/usr/src/uts/common/fs/zfs/spa_misc.c	Tue Oct 03 14:50:02 2006 -0700
+++ b/usr/src/uts/common/fs/zfs/spa_misc.c	Tue Oct 03 15:01:10 2006 -0700
@@ -276,6 +276,14 @@
 	refcount_destroy(&spa->spa_refcount);
 	refcount_destroy(&spa->spa_config_lock.scl_count);
 
+	mutex_destroy(&spa->spa_sync_bplist.bpl_lock);
+	mutex_destroy(&spa->spa_config_lock.scl_lock);
+	mutex_destroy(&spa->spa_errlist_lock);
+	mutex_destroy(&spa->spa_errlog_lock);
+	mutex_destroy(&spa->spa_scrub_lock);
+	mutex_destroy(&spa->spa_config_cache_lock);
+	mutex_destroy(&spa->spa_async_lock);
+
 	kmem_free(spa, sizeof (spa_t));
 }
 
--- a/usr/src/uts/common/fs/zfs/sys/spa.h	Tue Oct 03 14:50:02 2006 -0700
+++ b/usr/src/uts/common/fs/zfs/sys/spa.h	Tue Oct 03 15:01:10 2006 -0700
@@ -61,9 +61,9 @@
 #define	BF64_GET(x, low, len)		BF64_DECODE(x, low, len)
 
 #define	BF32_SET(x, low, len, val)	\
-	((x) ^= BF32_ENCODE((x >> low) ^ val, low, len))
+	((x) ^= BF32_ENCODE((x >> low) ^ (val), low, len))
 #define	BF64_SET(x, low, len, val)	\
-	((x) ^= BF64_ENCODE((x >> low) ^ val, low, len))
+	((x) ^= BF64_ENCODE((x >> low) ^ (val), low, len))
 
 #define	BF32_GET_SB(x, low, len, shift, bias)	\
 	((BF32_GET(x, low, len) + (bias)) << (shift))
--- a/usr/src/uts/common/fs/zfs/sys/vdev_impl.h	Tue Oct 03 14:50:02 2006 -0700
+++ b/usr/src/uts/common/fs/zfs/sys/vdev_impl.h	Tue Oct 03 15:01:10 2006 -0700
@@ -203,7 +203,8 @@
 	offsetof(vdev_label_t, vl_uberblock[(n) << VDEV_UBERBLOCK_SHIFT(vd)])
 #define	VDEV_UBERBLOCK_SIZE(vd)		(1ULL << VDEV_UBERBLOCK_SHIFT(vd))
 
-#define	VDEV_BOOT_MAGIC		0x2f5b007b10c	/* ZFS boot block	*/
+/* ZFS boot block */
+#define	VDEV_BOOT_MAGIC		0x2f5b007b10cULL
 #define	VDEV_BOOT_VERSION	1		/* version number	*/
 
 typedef struct vdev_boot_header {
--- a/usr/src/uts/common/fs/zfs/sys/zap_impl.h	Tue Oct 03 14:50:02 2006 -0700
+++ b/usr/src/uts/common/fs/zfs/sys/zap_impl.h	Tue Oct 03 15:01:10 2006 -0700
@@ -38,7 +38,7 @@
 
 extern int fzap_default_block_shift;
 
-#define	ZAP_MAGIC 0x2F52AB2AB
+#define	ZAP_MAGIC 0x2F52AB2ABULL
 
 #define	FZAP_BLOCK_SHIFT(zap)	((zap)->zap_f.zap_block_shift)
 
--- a/usr/src/uts/common/fs/zfs/txg.c	Tue Oct 03 14:50:02 2006 -0700
+++ b/usr/src/uts/common/fs/zfs/txg.c	Tue Oct 03 15:01:10 2006 -0700
@@ -2,9 +2,8 @@
  * CDDL HEADER START
  *
  * The contents of this file are subject to the terms of the
- * Common Development and Distribution License, Version 1.0 only
- * (the "License").  You may not use this file except in compliance
- * with the License.
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
  *
  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
  * or http://www.opensolaris.org/os/licensing.
@@ -20,7 +19,7 @@
  * CDDL HEADER END
  */
 /*
- * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
+ * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
  * Use is subject to license terms.
  */
 
@@ -49,12 +48,16 @@
 txg_init(dsl_pool_t *dp, uint64_t txg)
 {
 	tx_state_t *tx = &dp->dp_tx;
-
+	int c;
 	bzero(tx, sizeof (tx_state_t));
 
 	tx->tx_cpu = kmem_zalloc(max_ncpus * sizeof (tx_cpu_t), KM_SLEEP);
 
+	for (c = 0; c < max_ncpus; c++)
+		mutex_init(&tx->tx_cpu[c].tc_lock, NULL, MUTEX_DEFAULT, NULL);
+
 	rw_init(&tx->tx_suspend, NULL, RW_DEFAULT, NULL);
+	mutex_init(&tx->tx_sync_lock, NULL, MUTEX_DEFAULT, NULL);
 
 	tx->tx_open_txg = txg;
 }
@@ -66,10 +69,15 @@
 txg_fini(dsl_pool_t *dp)
 {
 	tx_state_t *tx = &dp->dp_tx;
+	int c;
 
 	ASSERT(tx->tx_threads == 0);
 
 	rw_destroy(&tx->tx_suspend);
+	mutex_destroy(&tx->tx_sync_lock);
+
+	for (c = 0; c < max_ncpus; c++)
+		mutex_destroy(&tx->tx_cpu[c].tc_lock);
 
 	kmem_free(tx->tx_cpu, max_ncpus * sizeof (tx_cpu_t));
 
--- a/usr/src/uts/common/fs/zfs/unique.c	Tue Oct 03 14:50:02 2006 -0700
+++ b/usr/src/uts/common/fs/zfs/unique.c	Tue Oct 03 15:01:10 2006 -0700
@@ -2,9 +2,8 @@
  * CDDL HEADER START
  *
  * The contents of this file are subject to the terms of the
- * Common Development and Distribution License, Version 1.0 only
- * (the "License").  You may not use this file except in compliance
- * with the License.
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
  *
  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
  * or http://www.opensolaris.org/os/licensing.
@@ -20,7 +19,7 @@
  * CDDL HEADER END
  */
 /*
- * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
+ * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
  * Use is subject to license terms.
  */
 
@@ -31,7 +30,7 @@
 #include <sys/unique.h>
 
 static avl_tree_t unique_avl;
-static kmutex_t unique_mtx;
+static kmutex_t unique_mtx;	/* Lock never initialized. */
 
 typedef struct unique {
 	avl_node_t un_link;
--- a/usr/src/uts/common/fs/zfs/vdev.c	Tue Oct 03 14:50:02 2006 -0700
+++ b/usr/src/uts/common/fs/zfs/vdev.c	Tue Oct 03 15:01:10 2006 -0700
@@ -302,6 +302,7 @@
 	vd->vdev_state = VDEV_STATE_CLOSED;
 
 	mutex_init(&vd->vdev_dtl_lock, NULL, MUTEX_DEFAULT, NULL);
+	mutex_init(&vd->vdev_stat_lock, NULL, MUTEX_DEFAULT, NULL);
 	space_map_create(&vd->vdev_dtl_map, 0, -1ULL, 0, &vd->vdev_dtl_lock);
 	space_map_create(&vd->vdev_dtl_scrub, 0, -1ULL, 0, &vd->vdev_dtl_lock);
 	txg_list_create(&vd->vdev_ms_list,
@@ -338,6 +339,7 @@
 	space_map_destroy(&vd->vdev_dtl_scrub);
 	mutex_exit(&vd->vdev_dtl_lock);
 	mutex_destroy(&vd->vdev_dtl_lock);
+	mutex_destroy(&vd->vdev_stat_lock);
 
 	if (vd == spa->spa_root_vdev)
 		spa->spa_root_vdev = NULL;
--- a/usr/src/uts/common/fs/zfs/zap.c	Tue Oct 03 14:50:02 2006 -0700
+++ b/usr/src/uts/common/fs/zfs/zap.c	Tue Oct 03 15:01:10 2006 -0700
@@ -62,17 +62,11 @@
 
 	block_type = *(uint64_t *)vbuf;
 
-	switch (block_type) {
-	case ZBT_LEAF:
-	case BSWAP_64(ZBT_LEAF):
+	if (block_type == ZBT_LEAF || block_type == BSWAP_64(ZBT_LEAF))
 		zap_leaf_byteswap(vbuf, size);
-		return;
-	case ZBT_HEADER:
-	case BSWAP_64(ZBT_HEADER):
-	default:
+	else {
 		/* it's a ptrtbl block */
 		byteswap_uint64_array(vbuf, size);
-		return;
 	}
 }
 
@@ -849,7 +843,6 @@
 			goto retry;
 	}
 
-out:
 	zap_put_leaf_maybe_grow_ptrtbl(zap, l, tx);
 	return (err);
 }
--- a/usr/src/uts/common/fs/zfs/zap_leaf.c	Tue Oct 03 14:50:02 2006 -0700
+++ b/usr/src/uts/common/fs/zfs/zap_leaf.c	Tue Oct 03 15:01:10 2006 -0700
@@ -94,7 +94,7 @@
 		return (*(uint64_t *)addr);
 	}
 	ASSERT(!"bad int len");
-	return (0xFEEDFACEDEADBEEF);
+	return (0xFEEDFACEDEADBEEFULL);
 }
 
 void
--- a/usr/src/uts/common/fs/zfs/zap_micro.c	Tue Oct 03 14:50:02 2006 -0700
+++ b/usr/src/uts/common/fs/zfs/zap_micro.c	Tue Oct 03 15:01:10 2006 -0700
@@ -35,8 +35,6 @@
 #include <sys/avl.h>
 
 
-static uint64_t mzap_write_cookie(zap_t *zap, uint64_t cookie,
-    uint64_t entptr);
 static void mzap_upgrade(zap_t *zap, dmu_tx_t *tx);
 
 
@@ -62,15 +60,11 @@
 
 	block_type = *(uint64_t *)buf;
 
-	switch (block_type) {
-	case ZBT_MICRO:
-	case BSWAP_64(ZBT_MICRO):
+	if (block_type == ZBT_MICRO || block_type == BSWAP_64(ZBT_MICRO)) {
 		/* ASSERT(magic == ZAP_LEAF_MAGIC); */
 		mzap_byteswap(buf, size);
-		return;
-	default:
+	} else {
 		fzap_byteswap(buf, size);
-		return;
 	}
 }
 
--- a/usr/src/uts/common/fs/zfs/zfs_ioctl.c	Tue Oct 03 14:50:02 2006 -0700
+++ b/usr/src/uts/common/fs/zfs/zfs_ioctl.c	Tue Oct 03 15:01:10 2006 -0700
@@ -614,7 +614,7 @@
 
 	dmu_objset_stats(os, &zc->zc_objset_stats);
 
-	if (zc->zc_nvlist_dst != NULL &&
+	if (zc->zc_nvlist_dst != 0 &&
 	    (error = dsl_prop_get_all(os, &nv)) == 0) {
 		error = put_nvlist(zc, nv);
 		nvlist_free(nv);
@@ -1413,6 +1413,9 @@
 			if (dataset_namecheck(zc->zc_name, NULL, NULL) != 0)
 				error = EINVAL;
 			break;
+
+		case no_name:
+			break;
 		}
 	}
 
--- a/usr/src/uts/common/fs/zfs/zfs_znode.c	Tue Oct 03 14:50:02 2006 -0700
+++ b/usr/src/uts/common/fs/zfs/zfs_znode.c	Tue Oct 03 15:01:10 2006 -0700
@@ -323,6 +323,8 @@
 	 */
 	list_create(&zfsvfs->z_delete_head.z_znodes,
 	    sizeof (znode_t), offsetof(znode_t, z_list_node));
+	/* Mutex never destroyed. */
+	mutex_init(&zfsvfs->z_delete_head.z_mutex, NULL, MUTEX_DEFAULT, NULL);
 
 	return (0);
 }
--- a/usr/src/uts/common/fs/zfs/zil.c	Tue Oct 03 14:50:02 2006 -0700
+++ b/usr/src/uts/common/fs/zfs/zil.c	Tue Oct 03 15:01:10 2006 -0700
@@ -1068,7 +1068,7 @@
 zil_init(void)
 {
 	zil_lwb_cache = kmem_cache_create("zil_lwb_cache",
-	    sizeof (struct lwb), NULL, NULL, NULL, NULL, NULL, NULL, 0);
+	    sizeof (struct lwb), 0, NULL, NULL, NULL, NULL, NULL, 0);
 }
 
 void
@@ -1090,6 +1090,8 @@
 	zilog->zl_dmu_pool = dmu_objset_pool(os);
 	zilog->zl_destroy_txg = TXG_INITIAL - 1;
 
+	mutex_init(&zilog->zl_lock, NULL, MUTEX_DEFAULT, NULL);
+
 	list_create(&zilog->zl_itx_list, sizeof (itx_t),
 	    offsetof(itx_t, itx_node));
 
@@ -1126,6 +1128,7 @@
 
 	ASSERT(list_head(&zilog->zl_itx_list) == NULL);
 	list_destroy(&zilog->zl_itx_list);
+	mutex_destroy(&zilog->zl_lock);
 
 	kmem_free(zilog, sizeof (zilog_t));
 }
--- a/usr/src/uts/common/fs/zfs/zio.c	Tue Oct 03 14:50:02 2006 -0700
+++ b/usr/src/uts/common/fs/zfs/zio.c	Tue Oct 03 15:01:10 2006 -0700
@@ -112,7 +112,7 @@
 
 		if (align != 0) {
 			char name[30];
-			(void) sprintf(name, "zio_buf_%lu", size);
+			(void) sprintf(name, "zio_buf_%lu", (ulong_t)size);
 			zio_buf_cache[c] = kmem_cache_create(name, size,
 			    align, NULL, NULL, NULL, NULL, NULL, KMC_NODEBUG);
 			dprintf("creating cache for size %5lx align %5lx\n",
@@ -258,6 +258,7 @@
 	zio->io_async_stages = ZIO_ASYNC_PIPELINE_STAGES;
 	zio->io_timestamp = lbolt64;
 	zio->io_flags = flags;
+	mutex_init(&zio->io_lock, NULL, MUTEX_DEFAULT, NULL);
 	zio_push_transform(zio, data, size, size);
 
 	if (pio == NULL) {
@@ -653,7 +654,7 @@
 	mutex_exit(&zio->io_lock);
 
 	error = zio->io_error;
-
+	mutex_destroy(&zio->io_lock);
 	kmem_free(zio, sizeof (zio_t));
 
 	return (error);
--- a/usr/src/uts/common/fs/zfs/zio_checksum.c	Tue Oct 03 14:50:02 2006 -0700
+++ b/usr/src/uts/common/fs/zfs/zio_checksum.c	Tue Oct 03 15:01:10 2006 -0700
@@ -68,15 +68,15 @@
 }
 
 zio_checksum_info_t zio_checksum_table[ZIO_CHECKSUM_FUNCTIONS] = {
-	NULL,			NULL,			0, 0,	"inherit",
-	NULL,			NULL,			0, 0,	"on",
-	zio_checksum_off,	zio_checksum_off,	0, 0,	"off",
-	zio_checksum_SHA256,	zio_checksum_SHA256,	1, 1,	"label",
-	zio_checksum_SHA256,	zio_checksum_SHA256,	1, 1,	"gang_header",
-	fletcher_2_native,	fletcher_2_byteswap,	0, 1,	"zilog",
-	fletcher_2_native,	fletcher_2_byteswap,	0, 0,	"fletcher2",
-	fletcher_4_native,	fletcher_4_byteswap,	1, 0,	"fletcher4",
-	zio_checksum_SHA256,	zio_checksum_SHA256,	1, 0,	"SHA256",
+	{{NULL,			NULL},			0, 0,	"inherit"},
+	{{NULL,			NULL},			0, 0,	"on"},
+	{{zio_checksum_off,	zio_checksum_off},	0, 0,	"off"},
+	{{zio_checksum_SHA256,	zio_checksum_SHA256},	1, 1,	"label"},
+	{{zio_checksum_SHA256,	zio_checksum_SHA256},	1, 1,	"gang_header"},
+	{{fletcher_2_native,	fletcher_2_byteswap},	0, 1,	"zilog"},
+	{{fletcher_2_native,	fletcher_2_byteswap},	0, 0,	"fletcher2"},
+	{{fletcher_4_native,	fletcher_4_byteswap},	1, 0,	"fletcher4"},
+	{{zio_checksum_SHA256,	zio_checksum_SHA256},	1, 0,	"SHA256"},
 };
 
 uint8_t
--- a/usr/src/uts/common/fs/zfs/zio_compress.c	Tue Oct 03 14:50:02 2006 -0700
+++ b/usr/src/uts/common/fs/zfs/zio_compress.c	Tue Oct 03 15:01:10 2006 -0700
@@ -2,9 +2,8 @@
  * CDDL HEADER START
  *
  * The contents of this file are subject to the terms of the
- * Common Development and Distribution License, Version 1.0 only
- * (the "License").  You may not use this file except in compliance
- * with the License.
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
  *
  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
  * or http://www.opensolaris.org/os/licensing.
@@ -20,7 +19,7 @@
  * CDDL HEADER END
  */
 /*
- * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
+ * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
  * Use is subject to license terms.
  */
 
@@ -37,10 +36,10 @@
  */
 
 zio_compress_info_t zio_compress_table[ZIO_COMPRESS_FUNCTIONS] = {
-	NULL,			NULL,			"inherit",
-	NULL,			NULL,			"on",
-	NULL,			NULL,			"uncompressed",
-	lzjb_compress,		lzjb_decompress,	"lzjb",
+	{NULL,			NULL,			"inherit"},
+	{NULL,			NULL,			"on"},
+	{NULL,			NULL,			"uncompressed"},
+	{lzjb_compress,		lzjb_decompress,	"lzjb"},
 };
 
 uint8_t