aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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}