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>

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/fs/zfs/dsl_deleg.c
          +++ new/usr/src/uts/common/fs/zfs/dsl_deleg.c
↓ open down ↓ 553 lines elided ↑ open up ↑
 554  554          dp = ds->ds_dir->dd_pool;
 555  555          mos = dp->dp_meta_objset;
 556  556  
 557  557          if (dsl_delegation_on(mos) == B_FALSE)
 558  558                  return (SET_ERROR(ECANCELED));
 559  559  
 560  560          if (spa_version(dmu_objset_spa(dp->dp_meta_objset)) <
 561  561              SPA_VERSION_DELEGATED_PERMS)
 562  562                  return (SET_ERROR(EPERM));
 563  563  
 564      -        if (dsl_dataset_is_snapshot(ds)) {
      564 +        if (ds->ds_is_snapshot) {
 565  565                  /*
 566  566                   * Snapshots are treated as descendents only,
 567  567                   * local permissions do not apply.
 568  568                   */
 569  569                  checkflag = ZFS_DELEG_DESCENDENT;
 570  570          } else {
 571  571                  checkflag = ZFS_DELEG_LOCAL;
 572  572          }
 573  573  
 574  574          avl_create(&permsets, perm_set_compare, sizeof (perm_set_t),
↓ open down ↓ 187 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX