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>

@@ -530,11 +530,11 @@
         pd.pd_flags = flags;
         mutex_init(&pd.pd_mtx, NULL, MUTEX_DEFAULT, NULL);
         cv_init(&pd.pd_cv, NULL, CV_DEFAULT, NULL);
 
         /* See comment on ZIL traversal in dsl_scan_visitds. */
-        if (ds != NULL && !dsl_dataset_is_snapshot(ds) && !BP_IS_HOLE(rootbp)) {
+        if (ds != NULL && !ds->ds_is_snapshot && !BP_IS_HOLE(rootbp)) {
                 arc_flags_t flags = ARC_FLAG_WAIT;
                 objset_phys_t *osp;
                 arc_buf_t *buf;
 
                 err = arc_read(NULL, td.td_spa, rootbp,