]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
ddf: use 64bit 'size', not 32bit 'info->size' for create.
authorNeilBrown <neilb@suse.com>
Thu, 10 Mar 2016 07:06:59 +0000 (18:06 +1100)
committerJes Sorensen <Jes.Sorensen@redhat.com>
Thu, 10 Mar 2016 16:42:41 +0000 (11:42 -0500)
The 'size' field of mdu_disk_info_t is 32bit and should not be used
except for legacy ioctls.  super-ddf got this wrong :-(

This change makes it possible to create ddf arrays which used more than
2TB of each device.

Reported-by: Dan Russell <dpr@aol.com>
Signed-off-by: NeilBrown <neilb@suse.com>
Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
super-ddf.c

index faaf0a7ca9e0ba5eed7e8fdd961fcb43d158ee7d..1707ad1e1a18d4c08dec6021ad8c15100e882563 100644 (file)
@@ -2688,10 +2688,10 @@ static int init_super_ddf_bvd(struct supertype *st,
                free(vcl);
                return 0;
        }
-       vc->blocks = cpu_to_be64(info->size * 2);
+       vc->blocks = cpu_to_be64(size * 2);
        vc->array_blocks = cpu_to_be64(
                calc_array_size(info->level, info->raid_disks, info->layout,
-                               info->chunk_size, info->size*2));
+                               info->chunk_size, size * 2));
        memset(vc->pad1, 0xff, 8);
        vc->spare_refs[0] = cpu_to_be32(0xffffffff);
        vc->spare_refs[1] = cpu_to_be32(0xffffffff);