aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/md/linear.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/md/linear.c')
-rw-r--r--drivers/md/linear.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/md/linear.c b/drivers/md/linear.c
index 9f7cec42dd8e..dda2f1b64a6d 100644
--- a/drivers/md/linear.c
+++ b/drivers/md/linear.c
@@ -135,6 +135,7 @@ static linear_conf_t *linear_conf(mddev_t *mddev, int raid_disks)
135 list_for_each_entry(rdev, &mddev->disks, same_set) { 135 list_for_each_entry(rdev, &mddev->disks, same_set) {
136 int j = rdev->raid_disk; 136 int j = rdev->raid_disk;
137 dev_info_t *disk = conf->disks + j; 137 dev_info_t *disk = conf->disks + j;
138 sector_t sectors;
138 139
139 if (j < 0 || j >= raid_disks || disk->rdev) { 140 if (j < 0 || j >= raid_disks || disk->rdev) {
140 printk("linear: disk numbering problem. Aborting!\n"); 141 printk("linear: disk numbering problem. Aborting!\n");
@@ -142,6 +143,11 @@ static linear_conf_t *linear_conf(mddev_t *mddev, int raid_disks)
142 } 143 }
143 144
144 disk->rdev = rdev; 145 disk->rdev = rdev;
146 if (mddev->chunk_sectors) {
147 sectors = rdev->sectors;
148 sector_div(sectors, mddev->chunk_sectors);
149 rdev->sectors = sectors * mddev->chunk_sectors;
150 }
145 151
146 blk_queue_stack_limits(mddev->queue, 152 blk_queue_stack_limits(mddev->queue,
147 rdev->bdev->bd_disk->queue); 153 rdev->bdev->bd_disk->queue);