diff -r 956da15b6610 -r 41ec732c6d9f usr/src/uts/common/fs/zfs/zap_micro.c --- a/usr/src/uts/common/fs/zfs/zap_micro.c Wed Aug 08 12:41:08 2007 -0700 +++ b/usr/src/uts/common/fs/zfs/zap_micro.c Wed Aug 08 15:35:58 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. */ @@ -208,6 +208,10 @@ winner = dmu_buf_set_user(db, zap, &zap->zap_m.zap_phys, zap_evict); if (winner != NULL) { + rw_exit(&zap->zap_rwlock); + rw_destroy(&zap->zap_rwlock); + if (!zap->zap_ismicro) + mutex_destroy(&zap->zap_f.zap_num_entries_mtx); kmem_free(zap, sizeof (zap_t)); return (winner); } @@ -465,6 +469,8 @@ if (zap->zap_ismicro) mze_destroy(zap); + else + mutex_destroy(&zap->zap_f.zap_num_entries_mtx); kmem_free(zap, sizeof (zap_t)); }