mirror of https://gitee.com/openkylin/linux.git
md/raid5: rearrange a test in fetch_block6.
Next patch will unite fetch_block5 and fetch_block6. First I want to make the differences a little more clear. For RAID6 if we are writing at all and there is a failed device, then we need to load or compute every block so we can do a reconstruct-write. This case isn't needed for RAID5 - we will do a read-modify-write in that case. So make that test a separate test in fetch_block6 rather than merged with two other tests. Make a similar change in fetch_block5 so the one bit that is not needed for RAID6 is clearly separate. Signed-off-by: NeilBrown <neilb@suse.de> Reviewed-by: Namhyung Kim <namhyung@gmail.com>
This commit is contained in:
parent
c5a3100062
commit
5d35e09cae
|
@ -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
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue