Skip to content

Commit 920d03a

Browse files
committed
zap_deref_leaf: enable recovery from invalid zap_magic
1 parent 5165473 commit 920d03a

File tree

1 file changed

+8
-1
lines changed

1 file changed

+8
-1
lines changed

module/zfs/zap.c

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -576,7 +576,14 @@ zap_deref_leaf(zap_t *zap, uint64_t h, dmu_tx_t *tx, krw_t lt, zap_leaf_t **lp)
576576

577577
ASSERT(zap->zap_dbuf == NULL ||
578578
zap->zap_f.zap_phys == zap->zap_dbuf->db_data);
579-
ASSERT3U(zap->zap_f.zap_phys->zap_magic, ==, ZAP_MAGIC);
579+
if (zap->zap_f.zap_phys->zap_magic != ZAP_MAGIC) {
580+
zfs_panic_recover("zfs: "
581+
"zap->zap_u.zap_fat.zap_phys->zap_magic == 0x2F52AB2ABULL "
582+
"failed (%lu == %lu) for object %lu",
583+
zap->zap_u.zap_fat.zap_phys->zap_magic, 0x2F52AB2ABULL
584+
zap->zap_object);
585+
return (EFAULT);
586+
}
580587
idx = ZAP_HASH_IDX(h, zap->zap_f.zap_phys->zap_ptrtbl.zt_shift);
581588
err = zap_idx_to_blk(zap, idx, &blk);
582589
if (err != 0)

0 commit comments

Comments
 (0)