Print this page
5056 ZFS deadlock on db_mtx and dn_holds
Reviewed by: Will Andrews <willa@spectralogic.com>
Reviewed by: Matt Ahrens <mahrens@delphix.com>
Reviewed by: George Wilson <george.wilson@delphix.com>
Approved by: Dan McDonald <danmcd@omniti.com>

@@ -20,10 +20,11 @@
  */
 /*
  * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright (c) 2011, 2014 by Delphix. All rights reserved.
  * Copyright (c) 2013 Steven Hartland. All rights reserved.
+ * Copyright (c) 2014 Spectra Logic Corporation, All rights reserved.
  */
 
 #include <sys/dsl_pool.h>
 #include <sys/dsl_dataset.h>
 #include <sys/dsl_prop.h>

@@ -315,10 +316,12 @@
         txg_list_destroy(&dp->dp_dirty_dirs);
 
         arc_flush(dp->dp_spa);
         txg_fini(dp);
         dsl_scan_fini(dp);
+        dmu_buf_user_evict_wait();
+
         rrw_destroy(&dp->dp_config_rwlock);
         mutex_destroy(&dp->dp_lock);
         taskq_destroy(dp->dp_vnrele_taskq);
         if (dp->dp_blkstats)
                 kmem_free(dp->dp_blkstats, sizeof (zfs_all_blkstats_t));