diff --git a/[refs] b/[refs] index bef45214b9bf..fe173f871ce2 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: c5a3100062cf277d3edd4e6f4a1f1e403524b464 +refs/heads/master: 5d35e09cae47bbae2739f432658860680de21866 diff --git a/trunk/drivers/md/raid5.c b/trunk/drivers/md/raid5.c index 74a575bbd25c..a3d7cd96cfb7 100644 --- a/trunk/drivers/md/raid5.c +++ b/trunk/drivers/md/raid5.c @@ -2326,9 +2326,8 @@ static int fetch_block5(struct stripe_head *sh, struct stripe_head_state *s, (dev->toread || (dev->towrite && !test_bit(R5_OVERWRITE, &dev->flags)) || s->syncing || s->expanding || - (s->failed && - (failed_dev->toread || - (failed_dev->towrite && + (s->failed && failed_dev->toread) || + (s->failed && failed_dev->towrite && !test_bit(R5_OVERWRITE, &failed_dev->flags)))))) { /* We would like to get this block, possibly by computing it, * otherwise read it if the backing disk is insync @@ -2399,10 +2398,9 @@ static int fetch_block6(struct stripe_head *sh, struct stripe_head_state *s, (dev->toread || (dev->towrite && !test_bit(R5_OVERWRITE, &dev->flags)) || s->syncing || s->expanding || - (s->failed >= 1 && - (fdev[0]->toread || s->to_write)) || - (s->failed >= 2 && - (fdev[1]->toread || s->to_write)))) { + (s->failed >= 1 && fdev[0]->toread) || + (s->failed >= 2 && fdev[1]->toread) || + (s->failed && s->to_write)) { /* we would like to get this block, possibly by computing it, * otherwise read it if the backing disk is insync */