diff options
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/md/raid10.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c index 867f06ae33d9..713dc9c2c730 100644 --- a/drivers/md/raid10.c +++ b/drivers/md/raid10.c | |||
| @@ -552,7 +552,11 @@ static int read_balance(conf_t *conf, r10bio_t *r10_bio) | |||
| 552 | !test_bit(In_sync, &rdev->flags)) | 552 | !test_bit(In_sync, &rdev->flags)) |
| 553 | continue; | 553 | continue; |
| 554 | 554 | ||
| 555 | if (!atomic_read(&rdev->nr_pending)) { | 555 | /* This optimisation is debatable, and completely destroys |
| 556 | * sequential read speed for 'far copies' arrays. So only | ||
| 557 | * keep it for 'near' arrays, and review those later. | ||
| 558 | */ | ||
| 559 | if (conf->near_copies > 1 && !atomic_read(&rdev->nr_pending)) { | ||
| 556 | disk = ndisk; | 560 | disk = ndisk; |
| 557 | slot = nslot; | 561 | slot = nslot; |
| 558 | break; | 562 | break; |
