HomeFreeBSD

zfs: fix RAIDZ2/3 not healing parity with 2+ bad disks

Description

zfs: fix RAIDZ2/3 not healing parity with 2+ bad disks

From openzfs-master 62d4287f2 commit message:

When scrubbing, (non-sequential) resilvering, or correcting a checksum
error using RAIDZ parity, ZFS should heal any incorrect RAIDZ parity by
overwriting it.  For example, if P disks are silently corrupted (P being
the number of failures tolerated; e.g. RAIDZ2 has P=2), `zpool scrub`
should detect and heal all the bad state on these disks, including
parity.  This way if there is a subsequent failure we are fully
protected.

With RAIDZ2 or RAIDZ3, a block can have silent damage to a parity
sector, and also damage (silent or known) to a data sector.  In this
case the parity should be healed but it is not.

Cherry-picked from openzfs 62d4287f279a0d184f8f332475f27af58b7aa87e
Patch Author: Matthew Ahrens <matthew.ahrens@delphix.com>

Approved by: re (gjb)
Reviewed by: delphij
Differential Revision: https://reviews.freebsd.org/D28681

(cherry picked from commit f15e18a642cb3f7ebc747f8e9cdf11274140107d)
(cherry picked from commit 6f21b7996a95b7d93d1687787b55e57289689066)

Details

Provenance
mmAuthored on Feb 15 2021, 7:40 AM
Reviewer
delphij
Differential Revision
D28681: zfs: fix RAIDZ2/3 not healing parity with 2+ bad disks
Parents
rGba4d5b4d5951: OpenSSL: Regen assembly files for OpenSSL 1.1.1j
Branches
Unknown
Tags
Unknown