aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGoldwyn Rodrigues <rgoldwyn@suse.com>2014-08-12 11:13:19 -0400
committerGoldwyn Rodrigues <rgoldwyn@suse.com>2015-02-23 10:59:07 -0500
commit7d49ffcfa3cc08aa2301bf3fdb1e423a3fd33ee7 (patch)
tree1578bbe756d7d104d0fffa67bc55e4711904a38c
parent589a1c491621ab81a1955d17d634636522c1b4c1 (diff)
Read from the first device when an area is resyncing
set choose_first true for cluster read in read balance when the area is resyncing. Signed-off-by: Lidong Zhong <lzhong@suse.com> Signed-off-by: Goldwyn Rodrigues <rgoldwyn@suse.com>
-rw-r--r--drivers/md/raid1.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c
index 3aa58ab5b1fd..f70d74189d16 100644
--- a/drivers/md/raid1.c
+++ b/drivers/md/raid1.c
@@ -539,7 +539,13 @@ static int read_balance(struct r1conf *conf, struct r1bio *r1_bio, int *max_sect
539 has_nonrot_disk = 0; 539 has_nonrot_disk = 0;
540 choose_next_idle = 0; 540 choose_next_idle = 0;
541 541
542 choose_first = (conf->mddev->recovery_cp < this_sector + sectors); 542 if ((conf->mddev->recovery_cp < this_sector + sectors) ||
543 (mddev_is_clustered(conf->mddev) &&
544 md_cluster_ops->area_resyncing(conf->mddev, this_sector,
545 this_sector + sectors)))
546 choose_first = 1;
547 else
548 choose_first = 0;
543 549
544 for (disk = 0 ; disk < conf->raid_disks * 2 ; disk++) { 550 for (disk = 0 ; disk < conf->raid_disks * 2 ; disk++) {
545 sector_t dist; 551 sector_t dist;