Print this page
patch first-pass

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/fs/zfs/zap.c
          +++ new/usr/src/uts/common/fs/zfs/zap.c
↓ open down ↓ 73 lines elided ↑ open up ↑
  74   74  fzap_upgrade(zap_t *zap, dmu_tx_t *tx, zap_flags_t flags)
  75   75  {
  76   76          dmu_buf_t *db;
  77   77          zap_leaf_t *l;
  78   78          int i;
  79   79          zap_phys_t *zp;
  80   80  
  81   81          ASSERT(RW_WRITE_HELD(&zap->zap_rwlock));
  82   82          zap->zap_ismicro = FALSE;
  83   83  
       84 +        zap->zap_dbu.dbu_evict_func_prep = NULL;
  84   85          zap->zap_dbu.dbu_evict_func = zap_evict;
  85   86  
  86   87          mutex_init(&zap->zap_f.zap_num_entries_mtx, 0, 0, 0);
  87   88          zap->zap_f.zap_block_shift = highbit64(zap->zap_dbuf->db_size) - 1;
  88   89  
  89   90          zp = zap_f_phys(zap);
  90   91          /*
  91   92           * explicitly zero it since it might be coming from an
  92   93           * initialized microzap
  93   94           */
↓ open down ↓ 312 lines elided ↑ open up ↑
 406  407          ASSERT(RW_WRITE_HELD(&zap->zap_rwlock));
 407  408  
 408  409          rw_init(&l->l_rwlock, 0, 0, 0);
 409  410          rw_enter(&l->l_rwlock, RW_WRITER);
 410  411          l->l_blkid = zap_allocate_blocks(zap, 1);
 411  412          l->l_dbuf = NULL;
 412  413  
 413  414          VERIFY(0 == dmu_buf_hold(zap->zap_objset, zap->zap_object,
 414  415              l->l_blkid << FZAP_BLOCK_SHIFT(zap), NULL, &l->l_dbuf,
 415  416              DMU_READ_NO_PREFETCH));
 416      -        dmu_buf_init_user(&l->l_dbu, zap_leaf_pageout, &l->l_dbuf);
      417 +        dmu_buf_init_user(&l->l_dbu, NULL, zap_leaf_pageout, &l->l_dbuf);
 417  418          winner = dmu_buf_set_user(l->l_dbuf, &l->l_dbu);
 418  419          ASSERT(winner == NULL);
 419  420          dmu_buf_will_dirty(l->l_dbuf, tx);
 420  421  
 421  422          zap_leaf_init(l, zap->zap_normflags != 0);
 422  423  
 423  424          zap_f_phys(zap)->zap_num_leafs++;
 424  425  
 425  426          return (l);
 426  427  }
↓ open down ↓ 26 lines elided ↑ open up ↑
 453  454  
 454  455          ASSERT(blkid != 0);
 455  456  
 456  457          l = kmem_zalloc(sizeof (zap_leaf_t), KM_SLEEP);
 457  458          rw_init(&l->l_rwlock, 0, 0, 0);
 458  459          rw_enter(&l->l_rwlock, RW_WRITER);
 459  460          l->l_blkid = blkid;
 460  461          l->l_bs = highbit64(db->db_size) - 1;
 461  462          l->l_dbuf = db;
 462  463  
 463      -        dmu_buf_init_user(&l->l_dbu, zap_leaf_pageout, &l->l_dbuf);
      464 +        dmu_buf_init_user(&l->l_dbu, NULL, zap_leaf_pageout, &l->l_dbuf);
 464  465          winner = dmu_buf_set_user(db, &l->l_dbu);
 465  466  
 466  467          rw_exit(&l->l_rwlock);
 467  468          if (winner != NULL) {
 468  469                  /* someone else set it first */
 469  470                  zap_leaf_pageout(&l->l_dbu);
 470  471                  l = winner;
 471  472          }
 472  473  
 473  474          /*
↓ open down ↓ 892 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX