diff options
author | Goldwyn Rodrigues <rgoldwyn@suse.com> | 2014-08-12 11:13:19 -0400 |
---|---|---|
committer | Goldwyn Rodrigues <rgoldwyn@suse.com> | 2015-02-23 10:59:07 -0500 |
commit | 7d49ffcfa3cc08aa2301bf3fdb1e423a3fd33ee7 (patch) | |
tree | 1578bbe756d7d104d0fffa67bc55e4711904a38c | |
parent | 589a1c491621ab81a1955d17d634636522c1b4c1 (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.c | 8 |
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; |