aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/md/raid5.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@woody.linux-foundation.org>2007-05-09 21:51:36 -0400
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-05-09 21:51:36 -0400
commit44ce6294d07555c3d313757105fd44b78208407f (patch)
tree29659bee16a4d7111124c6f41289bc9c11669e70 /drivers/md/raid5.c
parent497f050c42e46a4b1f6a9bcd8827fa5d97fe1feb (diff)
Revert "md: improve partition detection in md array"
This reverts commit 5b479c91da90eef605f851508744bfe8269591a0. Quoth Neil Brown: "It causes an oops when auto-detecting raid arrays, and it doesn't seem easy to fix. The array may not be 'open' when do_md_run is called, so bdev->bd_disk might be NULL, so bd_set_size can oops. This whole approach of opening an md device before it has been assembled just seems to get more and more painful. I think I'm going to have to come up with something clever to provide both backward comparability with usage expectation, and sane integration into the rest of the kernel." Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/md/raid5.c')
-rw-r--r--drivers/md/raid5.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c
index a72e70ad0975..061375ee6592 100644
--- a/drivers/md/raid5.c
+++ b/drivers/md/raid5.c
@@ -3864,6 +3864,7 @@ static int raid5_resize(mddev_t *mddev, sector_t sectors)
3864 sectors &= ~((sector_t)mddev->chunk_size/512 - 1); 3864 sectors &= ~((sector_t)mddev->chunk_size/512 - 1);
3865 mddev->array_size = (sectors * (mddev->raid_disks-conf->max_degraded))>>1; 3865 mddev->array_size = (sectors * (mddev->raid_disks-conf->max_degraded))>>1;
3866 set_capacity(mddev->gendisk, mddev->array_size << 1); 3866 set_capacity(mddev->gendisk, mddev->array_size << 1);
3867 mddev->changed = 1;
3867 if (sectors/2 > mddev->size && mddev->recovery_cp == MaxSector) { 3868 if (sectors/2 > mddev->size && mddev->recovery_cp == MaxSector) {
3868 mddev->recovery_cp = mddev->size << 1; 3869 mddev->recovery_cp = mddev->size << 1;
3869 set_bit(MD_RECOVERY_NEEDED, &mddev->recovery); 3870 set_bit(MD_RECOVERY_NEEDED, &mddev->recovery);
@@ -3998,6 +3999,7 @@ static void end_reshape(raid5_conf_t *conf)
3998 conf->mddev->array_size = conf->mddev->size * 3999 conf->mddev->array_size = conf->mddev->size *
3999 (conf->raid_disks - conf->max_degraded); 4000 (conf->raid_disks - conf->max_degraded);
4000 set_capacity(conf->mddev->gendisk, conf->mddev->array_size << 1); 4001 set_capacity(conf->mddev->gendisk, conf->mddev->array_size << 1);
4002 conf->mddev->changed = 1;
4001 4003
4002 bdev = bdget_disk(conf->mddev->gendisk, 0); 4004 bdev = bdget_disk(conf->mddev->gendisk, 0);
4003 if (bdev) { 4005 if (bdev) {