| 598 | } |
| 599 | |
| 600 | static int |
| 601 | zap_deref_leaf(zap_t *zap, uint64_t h, dmu_tx_t *tx, krw_t lt, zap_leaf_t **lp) |
| 602 | { |
| 603 | uint64_t blk; |
| 604 | |
| 605 | ASSERT(zap->zap_dbuf == NULL || |
| 606 | zap_f_phys(zap) == zap->zap_dbuf->db_data); |
| 607 | |
| 608 | /* Reality check for corrupt zap objects (leaf or header). */ |
| 609 | if ((zap_f_phys(zap)->zap_block_type != ZBT_LEAF && |
| 610 | zap_f_phys(zap)->zap_block_type != ZBT_HEADER) || |
| 611 | zap_f_phys(zap)->zap_magic != ZAP_MAGIC) { |
| 612 | return (SET_ERROR(EIO)); |
| 613 | } |
| 614 | |
| 615 | uint64_t idx = ZAP_HASH_IDX(h, zap_f_phys(zap)->zap_ptrtbl.zt_shift); |
| 616 | int err = zap_idx_to_blk(zap, idx, &blk); |
| 617 | if (err != 0) |
| 618 | return (err); |
| 619 | err = zap_get_leaf_byblk(zap, blk, tx, lt, lp); |
| 620 | |
| 621 | ASSERT(err || |
| 622 | ZAP_HASH_IDX(h, zap_leaf_phys(*lp)->l_hdr.lh_prefix_len) == |
| 623 | zap_leaf_phys(*lp)->l_hdr.lh_prefix); |
| 624 | return (err); |
| 625 | } |
| 626 | |
| 627 | static int |
| 628 | zap_expand_leaf(zap_name_t *zn, zap_leaf_t *l, |
no test coverage detected