Details
-
Technical task
-
Resolution: Unresolved
-
Minor
-
None
-
None
-
None
-
9223372036854775807
Description
When reading from an EC file, if the read I/O encountered failed OSTs, the IO framework detects the error. The LOV layer will manage the page to read the remaining data pages in the EC chunk and its associated parity from the code component and re-generate the missed data page for the failed OSTs, so that client can read without noticing OSTs’ unavailable. Since the EC parity is computed on a per-block basis (or even strictly one byte or word at a time) across the stripes of the file, the minimum number of pages needed to reconstruct one missing data page is (d-1)+1p, one data page from each remaining stripe plus one parity page (though possibly both parities to allow confirming reconstruction correctness).
For larger reads (~= stripe_size), it will be most efficient to read the full stripe_size of data and parity and reconstruct a whole stripe at a time, rather than doing this on a page-by-page basis. It is likely that the additional data stripes would be needed for the application read() call in any case, so could be considered the same as readahead for the file.