aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/md/raid5.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/md/raid5.c')
-rw-r--r--drivers/md/raid5.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c
index 8f4c70a53210..42a480ba767b 100644
--- a/drivers/md/raid5.c
+++ b/drivers/md/raid5.c
@@ -3540,7 +3540,7 @@ static sector_t reshape_request(mddev_t *mddev, sector_t sector_nr, int *skipped
3540 j == raid6_next_disk(sh->pd_idx, sh->disks)) 3540 j == raid6_next_disk(sh->pd_idx, sh->disks))
3541 continue; 3541 continue;
3542 s = compute_blocknr(sh, j); 3542 s = compute_blocknr(sh, j);
3543 if (s < (mddev->array_size<<1)) { 3543 if (s < mddev->array_sectors) {
3544 skipped = 1; 3544 skipped = 1;
3545 continue; 3545 continue;
3546 } 3546 }
@@ -4189,7 +4189,7 @@ static int run(mddev_t *mddev)
4189 mddev->queue->backing_dev_info.congested_data = mddev; 4189 mddev->queue->backing_dev_info.congested_data = mddev;
4190 mddev->queue->backing_dev_info.congested_fn = raid5_congested; 4190 mddev->queue->backing_dev_info.congested_fn = raid5_congested;
4191 4191
4192 mddev->array_size = mddev->size * (conf->previous_raid_disks - 4192 mddev->array_sectors = 2 * mddev->size * (conf->previous_raid_disks -
4193 conf->max_degraded); 4193 conf->max_degraded);
4194 4194
4195 blk_queue_merge_bvec(mddev->queue, raid5_mergeable_bvec); 4195 blk_queue_merge_bvec(mddev->queue, raid5_mergeable_bvec);
@@ -4413,8 +4413,9 @@ static int raid5_resize(mddev_t *mddev, sector_t sectors)
4413 raid5_conf_t *conf = mddev_to_conf(mddev); 4413 raid5_conf_t *conf = mddev_to_conf(mddev);
4414 4414
4415 sectors &= ~((sector_t)mddev->chunk_size/512 - 1); 4415 sectors &= ~((sector_t)mddev->chunk_size/512 - 1);
4416 mddev->array_size = (sectors * (mddev->raid_disks-conf->max_degraded))>>1; 4416 mddev->array_sectors = sectors * (mddev->raid_disks
4417 set_capacity(mddev->gendisk, mddev->array_size << 1); 4417 - conf->max_degraded);
4418 set_capacity(mddev->gendisk, mddev->array_sectors);
4418 mddev->changed = 1; 4419 mddev->changed = 1;
4419 if (sectors/2 > mddev->size && mddev->recovery_cp == MaxSector) { 4420 if (sectors/2 > mddev->size && mddev->recovery_cp == MaxSector) {
4420 mddev->recovery_cp = mddev->size << 1; 4421 mddev->recovery_cp = mddev->size << 1;
@@ -4547,15 +4548,16 @@ static void end_reshape(raid5_conf_t *conf)
4547 struct block_device *bdev; 4548 struct block_device *bdev;
4548 4549
4549 if (!test_bit(MD_RECOVERY_INTR, &conf->mddev->recovery)) { 4550 if (!test_bit(MD_RECOVERY_INTR, &conf->mddev->recovery)) {
4550 conf->mddev->array_size = conf->mddev->size * 4551 conf->mddev->array_sectors = 2 * conf->mddev->size *
4551 (conf->raid_disks - conf->max_degraded); 4552 (conf->raid_disks - conf->max_degraded);
4552 set_capacity(conf->mddev->gendisk, conf->mddev->array_size << 1); 4553 set_capacity(conf->mddev->gendisk, conf->mddev->array_sectors);
4553 conf->mddev->changed = 1; 4554 conf->mddev->changed = 1;
4554 4555
4555 bdev = bdget_disk(conf->mddev->gendisk, 0); 4556 bdev = bdget_disk(conf->mddev->gendisk, 0);
4556 if (bdev) { 4557 if (bdev) {
4557 mutex_lock(&bdev->bd_inode->i_mutex); 4558 mutex_lock(&bdev->bd_inode->i_mutex);
4558 i_size_write(bdev->bd_inode, (loff_t)conf->mddev->array_size << 10); 4559 i_size_write(bdev->bd_inode,
4560 (loff_t)conf->mddev->array_sectors << 9);
4559 mutex_unlock(&bdev->bd_inode->i_mutex); 4561 mutex_unlock(&bdev->bd_inode->i_mutex);
4560 bdput(bdev); 4562 bdput(bdev);
4561 } 4563 }