mirror of
https://github.com/FEX-Emu/linux.git
synced 2025-02-22 05:16:38 +00:00
md/raid5: use conf->raid_disks in preference to mddev->raid_disk
mddev->raid_disks can be changed and any time by a request from user-space. It is a suggestion as to what number of raid_disks is desired. conf->raid_disks can only be changed by the raid5 module with suitable locks in place. It is a statement as to the current number of raid_disks. There are two places where the latter should be used, but the former is used. This can lead to a crash when reshaping an array. This patch changes to mddev-> to conf-> Signed-off-by: NeilBrown <neilb@suse.de>
This commit is contained in:
parent
ccc0d38ec1
commit
f001a70cdc
@ -3288,7 +3288,7 @@ static void unplug_slaves(mddev_t *mddev)
|
|||||||
int i;
|
int i;
|
||||||
|
|
||||||
rcu_read_lock();
|
rcu_read_lock();
|
||||||
for (i=0; i<mddev->raid_disks; i++) {
|
for (i = 0; i < conf->raid_disks; i++) {
|
||||||
mdk_rdev_t *rdev = rcu_dereference(conf->disks[i].rdev);
|
mdk_rdev_t *rdev = rcu_dereference(conf->disks[i].rdev);
|
||||||
if (rdev && !test_bit(Faulty, &rdev->flags) && atomic_read(&rdev->nr_pending)) {
|
if (rdev && !test_bit(Faulty, &rdev->flags) && atomic_read(&rdev->nr_pending)) {
|
||||||
struct request_queue *r_queue = bdev_get_queue(rdev->bdev);
|
struct request_queue *r_queue = bdev_get_queue(rdev->bdev);
|
||||||
@ -4034,7 +4034,7 @@ static inline sector_t sync_request(mddev_t *mddev, sector_t sector_nr, int *ski
|
|||||||
* We don't need to check the 'failed' flag as when that gets set,
|
* We don't need to check the 'failed' flag as when that gets set,
|
||||||
* recovery aborts.
|
* recovery aborts.
|
||||||
*/
|
*/
|
||||||
for (i=0; i<mddev->raid_disks; i++)
|
for (i = 0; i < conf->raid_disks; i++)
|
||||||
if (conf->disks[i].rdev == NULL)
|
if (conf->disks[i].rdev == NULL)
|
||||||
still_degraded = 1;
|
still_degraded = 1;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user