From: NeilBrown Normally the size is chosen as a multiple of the chunk size, but if the size is explicitly chosen, it might not be. So we force it. Signed-off-by: Neil Brown Signed-off-by: Andrew Morton --- 25-akpm/drivers/md/raid5.c | 3 +++ 25-akpm/drivers/md/raid6main.c | 3 +++ 2 files changed, 6 insertions(+) diff -puN drivers/md/raid5.c~md-4-of-8-make-sure-the-size-of-a-raid5-6-array-is-a-multiple-of-the-chunk-size drivers/md/raid5.c --- 25/drivers/md/raid5.c~md-4-of-8-make-sure-the-size-of-a-raid5-6-array-is-a-multiple-of-the-chunk-size 2004-05-28 00:22:02.226952224 -0700 +++ 25-akpm/drivers/md/raid5.c 2004-05-28 00:22:02.232951312 -0700 @@ -1611,6 +1611,9 @@ static int run (mddev_t *mddev) conf->algorithm = mddev->layout; conf->max_nr_stripes = NR_STRIPES; + /* device size must be a multiple of chunk size */ + mddev->size &= ~(mddev->chunk_size/1024 -1); + if (!conf->chunk_size || conf->chunk_size % 4) { printk(KERN_ERR "raid5: invalid chunk size %d for %s\n", conf->chunk_size, mdname(mddev)); diff -puN drivers/md/raid6main.c~md-4-of-8-make-sure-the-size-of-a-raid5-6-array-is-a-multiple-of-the-chunk-size drivers/md/raid6main.c --- 25/drivers/md/raid6main.c~md-4-of-8-make-sure-the-size-of-a-raid5-6-array-is-a-multiple-of-the-chunk-size 2004-05-28 00:22:02.227952072 -0700 +++ 25-akpm/drivers/md/raid6main.c 2004-05-28 00:22:02.234951008 -0700 @@ -1775,6 +1775,9 @@ static int run (mddev_t *mddev) conf->algorithm = mddev->layout; conf->max_nr_stripes = NR_STRIPES; + /* device size must be a multiple of chunk size */ + mddev->size &= ~(mddev->chunk_size/1024 -1); + if (conf->raid_disks < 4) { printk(KERN_ERR "raid6: not enough configured devices for %s (%d, minimum 4)\n", mdname(mddev), conf->raid_disks); _