[PATCH] md: fix calculation of ->degraded for multipath and raid10
Two less-used md personalities have bugs in the calculation of ->degraded (the extent to which the array is degraded). Signed-off-by: Neil Brown <neilb@suse.de> Cc: <stable@kernel.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
3c5473f807
commit
2e333e8986
|
@ -501,7 +501,7 @@ static int multipath_run (mddev_t *mddev)
|
||||||
mdname(mddev));
|
mdname(mddev));
|
||||||
goto out_free_conf;
|
goto out_free_conf;
|
||||||
}
|
}
|
||||||
mddev->degraded = conf->raid_disks = conf->working_disks;
|
mddev->degraded = conf->raid_disks - conf->working_disks;
|
||||||
|
|
||||||
conf->pool = mempool_create_kzalloc_pool(NR_RESERVED_BUFS,
|
conf->pool = mempool_create_kzalloc_pool(NR_RESERVED_BUFS,
|
||||||
sizeof(struct multipath_bh));
|
sizeof(struct multipath_bh));
|
||||||
|
|
|
@ -2079,7 +2079,7 @@ static int run(mddev_t *mddev)
|
||||||
disk = conf->mirrors + i;
|
disk = conf->mirrors + i;
|
||||||
|
|
||||||
if (!disk->rdev ||
|
if (!disk->rdev ||
|
||||||
!test_bit(In_sync, &rdev->flags)) {
|
!test_bit(In_sync, &disk->rdev->flags)) {
|
||||||
disk->head_position = 0;
|
disk->head_position = 0;
|
||||||
mddev->degraded++;
|
mddev->degraded++;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue