--- a/drivers/block/ll_rw_blk.c 2004-11-01 14:28:48.000000000 -0600 +++ b/drivers/block/ll_rw_blk.c 2004-11-01 14:29:13.000000000 -0600 @@ -2865,10 +2865,7 @@ * if the request wasn't completed, update state */ if (bio_nbytes) { bio_endio(bio, bio_nbytes, error); - bio->bi_idx += next_idx; - bio_iovec(bio)->bv_offset += nr_bytes; - bio_iovec(bio)->bv_len -= nr_bytes; }
blk_recalc_rq_sectors(req, total_bytes >> 9);
With this applied, my kernel does not crash on media errors on one of the devices and just keeps on running on the other device. In my case, the code just above these lines was taking the path that was walking through the bio_iovec array.
-- Mark Rustad, MRustad@xxxxxxx
- 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