Author: avg
Date: Mon Jul  6 08:27:39 2015
New Revision: 285198
URL: https://svnweb.freebsd.org/changeset/base/285198

Log:
  MFC r268713: MFV r268702: 4975 missing mutex_destroy() calls in zfs

Modified:
  stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c
  stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c
  stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode_sync.c
  stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c
  stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sa.c
Directory Properties:
  stable/9/sys/   (props changed)
  stable/9/sys/cddl/contrib/opensolaris/   (props changed)

Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c
==============================================================================
--- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c      Mon Jul 
 6 08:24:57 2015        (r285197)
+++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c      Mon Jul 
 6 08:27:39 2015        (r285198)
@@ -1351,6 +1351,12 @@ dbuf_undirty(dmu_buf_impl_t *db, dmu_tx_
                if (dr->dt.dl.dr_data != db->db_buf)
                        VERIFY(arc_buf_remove_ref(dr->dt.dl.dr_data, db));
        }
+
+       if (db->db_level != 0) {
+               mutex_destroy(&dr->dt.di.dr_mtx);
+               list_destroy(&dr->dt.di.dr_children);
+       }
+
        kmem_free(dr, sizeof (dbuf_dirty_record_t));
 
        ASSERT(db->db_dirtycnt > 0);

Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c
==============================================================================
--- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c     Mon Jul 
 6 08:24:57 2015        (r285197)
+++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c     Mon Jul 
 6 08:27:39 2015        (r285198)
@@ -1083,6 +1083,11 @@ dnode_hold_impl(objset_t *os, uint64_t o
                }
                if (winner = dmu_buf_set_user(&db->db, children_dnodes, NULL,
                    dnode_buf_pageout)) {
+
+                       for (i = 0; i < epb; i++) {
+                               zrl_destroy(&dnh[i].dnh_zrlock);
+                       }
+
                        kmem_free(children_dnodes, sizeof (dnode_children_t) +
                            (epb - 1) * sizeof (dnode_handle_t));
                        children_dnodes = winner;

Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode_sync.c
==============================================================================
--- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode_sync.c        
Mon Jul  6 08:24:57 2015        (r285197)
+++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode_sync.c        
Mon Jul  6 08:27:39 2015        (r285198)
@@ -479,8 +479,8 @@ dnode_undirty_dbufs(list_t *list)
                            dr->dt.dl.dr_data == db->db_buf);
                        dbuf_unoverride(dr);
                } else {
-                       list_destroy(&dr->dt.di.dr_children);
                        mutex_destroy(&dr->dt.di.dr_mtx);
+                       list_destroy(&dr->dt.di.dr_children);
                }
                kmem_free(dr, sizeof (dbuf_dirty_record_t));
                dbuf_rele_and_unlock(db, (void *)(uintptr_t)txg);

Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c
==============================================================================
--- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c       
Mon Jul  6 08:24:57 2015        (r285197)
+++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c       
Mon Jul  6 08:27:39 2015        (r285198)
@@ -270,6 +270,7 @@ dsl_dataset_evict(dmu_buf_t *db, void *d
        if (mutex_owned(&ds->ds_opening_lock))
                mutex_exit(&ds->ds_opening_lock);
        mutex_destroy(&ds->ds_opening_lock);
+       mutex_destroy(&ds->ds_sendstream_lock);
        refcount_destroy(&ds->ds_longholds);
 
        kmem_free(ds, sizeof (dsl_dataset_t));
@@ -398,6 +399,7 @@ dsl_dataset_hold_obj(dsl_pool_t *dp, uin
                if (err != 0) {
                        mutex_destroy(&ds->ds_lock);
                        mutex_destroy(&ds->ds_opening_lock);
+                       mutex_destroy(&ds->ds_sendstream_lock);
                        refcount_destroy(&ds->ds_longholds);
                        bplist_destroy(&ds->ds_pending_deadlist);
                        dsl_deadlist_close(&ds->ds_deadlist);
@@ -454,6 +456,7 @@ dsl_dataset_hold_obj(dsl_pool_t *dp, uin
                        dsl_dir_rele(ds->ds_dir, ds);
                        mutex_destroy(&ds->ds_lock);
                        mutex_destroy(&ds->ds_opening_lock);
+                       mutex_destroy(&ds->ds_sendstream_lock);
                        refcount_destroy(&ds->ds_longholds);
                        kmem_free(ds, sizeof (dsl_dataset_t));
                        if (err != 0) {

Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sa.c
==============================================================================
--- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sa.c        Mon Jul 
 6 08:24:57 2015        (r285197)
+++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sa.c        Mon Jul 
 6 08:27:39 2015        (r285198)
@@ -1111,6 +1111,9 @@ fail:
        if (sa->sa_user_table)
                kmem_free(sa->sa_user_table, sa->sa_user_table_sz);
        mutex_exit(&sa->sa_lock);
+       avl_destroy(&sa->sa_layout_hash_tree);
+       avl_destroy(&sa->sa_layout_num_tree);
+       mutex_destroy(&sa->sa_lock);
        kmem_free(sa, sizeof (sa_os_t));
        return ((error == ECKSUM) ? EIO : error);
 }
@@ -1146,6 +1149,7 @@ sa_tear_down(objset_t *os)
 
        avl_destroy(&sa->sa_layout_hash_tree);
        avl_destroy(&sa->sa_layout_num_tree);
+       mutex_destroy(&sa->sa_lock);
 
        kmem_free(sa, sizeof (sa_os_t));
        os->os_sa = NULL;
_______________________________________________
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-unsubscr...@freebsd.org"

Reply via email to