Print this page
4047 panic from dbuf_free_range() from dmu_free_object() while doing zfs receive
Reviewed by: Adam Leventhal <ahl@delphix.com>
Reviewed by: George Wilson <george.wilson@delphix.com>

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/fs/zfs/dsl_destroy.c
          +++ new/usr/src/uts/common/fs/zfs/dsl_destroy.c
↓ open down ↓ 888 lines elided ↑ open up ↑
 889  889                   * remove the objects from open context so that the txg sync
 890  890                   * is not too long.
 891  891                   */
 892  892                  error = dmu_objset_own(name, DMU_OST_ANY, B_FALSE, FTAG, &os);
 893  893                  if (error == 0) {
 894  894                          uint64_t prev_snap_txg =
 895  895                              dmu_objset_ds(os)->ds_phys->ds_prev_snap_txg;
 896  896                          for (uint64_t obj = 0; error == 0;
 897  897                              error = dmu_object_next(os, &obj, FALSE,
 898  898                              prev_snap_txg))
 899      -                                (void) dmu_free_object(os, obj);
      899 +                                (void) dmu_free_long_object(os, obj);
 900  900                          /* sync out all frees */
 901  901                          txg_wait_synced(dmu_objset_pool(os), 0);
 902  902                          dmu_objset_disown(os, FTAG);
 903  903                  }
 904  904          }
 905  905  
 906  906          return (dsl_sync_task(name, dsl_destroy_head_check,
 907  907              dsl_destroy_head_sync, &ddha, 0));
 908  908  }
 909  909  
↓ open down ↓ 20 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX