Re: Does raid5 have error handling while reading?
From: NeilBrown <hidden>
Date: 2009-05-22 08:35:48
On Fri, May 22, 2009 6:10 pm, Xu Yuehai wrote:
I know that if the read request of raid5 is handled by chunk_aligned_read, there is no error handling in raid5. But, if this read request is not aligned, that's say, raid5 need stripe_head to deal with this request. I find in the code of 2.6.27 that there is no error handling if this read request fail, I remember in older kernel, some operations should be done such as compute_block. Am I right?
If chunk_aligned_read results in an error, then the request is re-tried through the stripe cache. I would call that "error handling". If the cache finds that a drives is failed, the data is calculated from the other drives, though the code is not a straight forward as it used to be. See fetch_block5 which sets STRIPE_OP_COMPUTE_BLK which causes ops_run_compute5 to do the work (or to schedule the work on separate hardware). NeilBrown