Deleted Added
full compact
375a376,378
> uint64_t *zap_hdr = (uint64_t *)db->db_data;
> uint64_t zap_block_type = zap_hdr[0];
> uint64_t zap_magic = zap_hdr[1];
386c389
< if (*(uint64_t *)db->db_data != ZBT_MICRO) {
---
> if (zap_block_type != ZBT_MICRO) {
388a392,395
> if (zap_block_type != ZBT_HEADER || zap_magic != ZAP_MAGIC) {
> winner = NULL; /* No actual winner here... */
> goto handle_winner;
> }
401,408c408,409
< if (winner != NULL) {
< rw_exit(&zap->zap_rwlock);
< rw_destroy(&zap->zap_rwlock);
< if (!zap->zap_ismicro)
< mutex_destroy(&zap->zap_f.zap_num_entries_mtx);
< kmem_free(zap, sizeof (zap_t));
< return (winner);
< }
---
> if (winner != NULL)
> goto handle_winner;
459a461,468
>
> handle_winner:
> rw_exit(&zap->zap_rwlock);
> rw_destroy(&zap->zap_rwlock);
> if (!zap->zap_ismicro)
> mutex_destroy(&zap->zap_f.zap_num_entries_mtx);
> kmem_free(zap, sizeof (zap_t));
> return (winner);
486c495
< if (zap == NULL)
---
> if (zap == NULL) {
487a497,505
> if (zap == NULL) {
> /*
> * mzap_open() didn't like what it saw on-disk.
> * Check for corruption!
> */
> dmu_buf_rele(db, NULL);
> return (SET_ERROR(EIO));
> }
> }