]> git.proxmox.com Git - mirror_zfs.git/commit
Verify BPs in spa_load_verify_cb() and dsl_scan_visitbp()
authorBrian Behlendorf <behlendorf1@llnl.gov>
Fri, 20 May 2022 17:36:14 +0000 (10:36 -0700)
committerGitHub <noreply@github.com>
Fri, 20 May 2022 17:36:14 +0000 (10:36 -0700)
commit2cd0f98f4aae7110a48cb0623e1e3d66b9f58785
treefb0a17fe6f5cbea74ef89938e873b167812e4c06
parent03df6bad94504b80929b332a3e5fbfbc8bdae04b
Verify BPs in spa_load_verify_cb() and dsl_scan_visitbp()

We want `zpool import` to be highly robust and never panic, even
when encountering corrupt metadata.  This is already handled in the
arc_read() code path, which covers most cases, but spa_load_verify_cb()
relies on zio_read() and is responsible for verifying the block pointer.

During import it is also possible to encounter blocks pointers which
contain ZIO_COMPRESS_INHERIT and ZIO_CHECKSUM_INHERIT values.  Relax
the verification function slightly to allow this.

Futhermore, extend dsl_scan_recurse() to verify the block pointer
contents of level zero blocks which are not of type DMU_OT_DNODE or
DMU_OT_OBJSET.  This is handled by arc_read() in the other cases.

Reviewed-by: Paul Dagnelie <pcd@delphix.com>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #13124
Closes #13360
module/zfs/dsl_scan.c
module/zfs/spa.c
module/zfs/zio.c