diff options
author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-05-09 21:51:36 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-05-09 21:51:36 -0400 |
commit | 44ce6294d07555c3d313757105fd44b78208407f (patch) | |
tree | 29659bee16a4d7111124c6f41289bc9c11669e70 /drivers/md/raid5.c | |
parent | 497f050c42e46a4b1f6a9bcd8827fa5d97fe1feb (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.c | 2 |
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) { |