usr/src/uts/common/fs/zfs/unique.c
changeset 4787 602d3f97842c
parent 2856 6f4d5ee1906a
--- a/usr/src/uts/common/fs/zfs/unique.c	Thu Aug 02 19:52:58 2007 -0700
+++ b/usr/src/uts/common/fs/zfs/unique.c	Thu Aug 02 21:23:46 2007 -0700
@@ -19,7 +19,7 @@
  * CDDL HEADER END
  */
 /*
- * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
+ * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
  * Use is subject to license terms.
  */
 
@@ -30,7 +30,7 @@
 #include <sys/unique.h>
 
 static avl_tree_t unique_avl;
-static kmutex_t unique_mtx;	/* Lock never initialized. */
+static kmutex_t unique_mtx;
 
 typedef struct unique {
 	avl_node_t un_link;
@@ -57,12 +57,22 @@
 {
 	avl_create(&unique_avl, unique_compare,
 	    sizeof (unique_t), offsetof(unique_t, un_link));
+	mutex_init(&unique_mtx, NULL, MUTEX_DEFAULT, NULL);
+}
+
+void
+unique_fini(void)
+{
+	avl_destroy(&unique_avl);
+	mutex_destroy(&unique_mtx);
 }
 
 uint64_t
 unique_create(void)
 {
-	return (unique_insert(0));
+	uint64_t value = unique_insert(0);
+	unique_remove(value);
+	return (value);
 }
 
 uint64_t