> > If chunk_aligned_read results in an error, then the request > is re-tried through the stripe cache. I would call that "error handling". I think you mean that error() and raid5_align_endio are invoked and the read request is sent to conf->retry_read_aligned_list, then the raid5d will handle it. > 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). > I notice that the bit STRIPE_OP_COMPUTE_BLK is set if only s->uptodate == disks - 1, however, suppose there is just a single read request, I fail to find out why this condition is satisfied. Yuehai -- To unsubscribe from this list: send the line "unsubscribe linux-raid" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html