OK, attempt number 2. Now this time, without zero writing. The workflow would look like: (raid5 example) - Partial stripe write triggered - Raid56 reads out all data stripe and parity stripe So far, the same routine as my previous purposal. - Re-calculate parity and compare. If matches, the full stripe is fine, continue partial stripe update routine. If not matches, block any further write on the full stripe, inform upper layer to start a scrub on the logical range of the full stripe. Wait for that scrub to finish, then continue partial stripe update. ^^^ This part is the most complex part AFAIK. For full stripe update, we just update without any verification. Despite the complex in the repair routine, another problem is when we do partial stripe update on untouched range. In that case, we will trigger a scrub for every new full stripe, and downgrade the performance heavily. Ideas on this crazy idea number 2? Thanks, Qu
Attachment:
signature.asc
Description: OpenPGP digital signature
