|
@@ -6950,9 +6950,6 @@ static int md_seq_show(struct seq_file *seq, void *v)
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
- if (mddev_lock(mddev) < 0)
|
|
|
- return -EINTR;
|
|
|
-
|
|
|
spin_lock(&mddev->lock);
|
|
|
if (mddev->pers || mddev->raid_disks || !list_empty(&mddev->disks)) {
|
|
|
seq_printf(seq, "%s : %sactive", mdname(mddev),
|
|
@@ -6966,7 +6963,8 @@ static int md_seq_show(struct seq_file *seq, void *v)
|
|
|
}
|
|
|
|
|
|
sectors = 0;
|
|
|
- rdev_for_each(rdev, mddev) {
|
|
|
+ rcu_read_lock();
|
|
|
+ rdev_for_each_rcu(rdev, mddev) {
|
|
|
char b[BDEVNAME_SIZE];
|
|
|
seq_printf(seq, " %s[%d]",
|
|
|
bdevname(rdev->bdev,b), rdev->desc_nr);
|
|
@@ -6982,6 +6980,7 @@ static int md_seq_show(struct seq_file *seq, void *v)
|
|
|
seq_printf(seq, "(R)");
|
|
|
sectors += rdev->sectors;
|
|
|
}
|
|
|
+ rcu_read_unlock();
|
|
|
|
|
|
if (!list_empty(&mddev->disks)) {
|
|
|
if (mddev->pers)
|
|
@@ -7025,7 +7024,6 @@ static int md_seq_show(struct seq_file *seq, void *v)
|
|
|
seq_printf(seq, "\n");
|
|
|
}
|
|
|
spin_unlock(&mddev->lock);
|
|
|
- mddev_unlock(mddev);
|
|
|
|
|
|
return 0;
|
|
|
}
|