aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSong Liu <songliubraving@fb.com>2015-09-04 02:00:35 -0400
committerNeilBrown <neilb@suse.com>2015-10-31 22:48:27 -0400
commit0b020e85bdd5765aac2440848e7a927069f5f83c (patch)
tree7e8801049e7b6de1ccdc6e280402ee666d74400b
parent253f9fd41afe2492b85de779946b5882a00dcdc5 (diff)
skip match_mddev_units check for special roles
match_mddev_units is used to check whether 2 RAID arrays share same disk(s). Arrays that share disk(s) will not do resync at the same time for better performance (fewer HDD seek). However, this check should not apply to Spare, Faulty, and Journal disks, as they do not paticipate in resync. In this patch, match_mddev_units skips check for disks with flag "Faulty" or "Journal" or raid_disk < 0. Signed-off-by: Song Liu <songliubraving@fb.com> Signed-off-by: Shaohua Li <shli@fb.com> Signed-off-by: NeilBrown <neilb@suse.com>
-rw-r--r--drivers/md/md.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/drivers/md/md.c b/drivers/md/md.c
index 89149acd8a5e..fe67272d0b1b 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -1935,13 +1935,23 @@ static int match_mddev_units(struct mddev *mddev1, struct mddev *mddev2)
1935 struct md_rdev *rdev, *rdev2; 1935 struct md_rdev *rdev, *rdev2;
1936 1936
1937 rcu_read_lock(); 1937 rcu_read_lock();
1938 rdev_for_each_rcu(rdev, mddev1) 1938 rdev_for_each_rcu(rdev, mddev1) {
1939 rdev_for_each_rcu(rdev2, mddev2) 1939 if (test_bit(Faulty, &rdev->flags) ||
1940 test_bit(Journal, &rdev->flags) ||
1941 rdev->raid_disk == -1)
1942 continue;
1943 rdev_for_each_rcu(rdev2, mddev2) {
1944 if (test_bit(Faulty, &rdev2->flags) ||
1945 test_bit(Journal, &rdev2->flags) ||
1946 rdev2->raid_disk == -1)
1947 continue;
1940 if (rdev->bdev->bd_contains == 1948 if (rdev->bdev->bd_contains ==
1941 rdev2->bdev->bd_contains) { 1949 rdev2->bdev->bd_contains) {
1942 rcu_read_unlock(); 1950 rcu_read_unlock();
1943 return 1; 1951 return 1;
1944 } 1952 }
1953 }
1954 }
1945 rcu_read_unlock(); 1955 rcu_read_unlock();
1946 return 0; 1956 return 0;
1947} 1957}