What is happening
During rebuild, the controller reads every relevant stripe from surviving members. If a second member cannot return a block, parity no longer supplies enough independent information for that stripe. Recovery images each member independently and reconstructs around error maps, stale members, and the filesystem rather than trusting a destructive controller rebuild.