char *name, int *uuid,
int subdevs, struct mddev_dev *devlist,
struct shape *s,
- struct context *c)
+ struct context *c, unsigned long long data_offset)
{
/*
* Create a new raid array.
newsize = s->size * 2;
if (st && ! st->ss->validate_geometry(st, s->level, s->layout, s->raiddisks,
&s->chunk, s->size*2,
- INVALID_SECTORS, NULL,
+ data_offset, NULL,
&newsize, c->verbose>=0))
return 1;
switch (st->ss->validate_geometry(
st, s->level, s->layout, s->raiddisks,
&s->chunk, s->size*2,
- INVALID_SECTORS, dname,
+ data_offset, dname,
&freesize, c->verbose > 0)) {
case -1: /* Not valid, message printed, and not
* worth checking any further */
if (!st->ss->validate_geometry(st, s->level, s->layout,
s->raiddisks,
&s->chunk, s->size*2,
- INVALID_SECTORS,
+ data_offset,
dname, &freesize,
c->verbose >= 0)) {
if (!st->ss->validate_geometry(st, s->level, s->layout,
s->raiddisks,
&s->chunk, minsize*2,
- INVALID_SECTORS,
+ data_offset,
NULL, NULL, 0)) {
pr_err("devices too large for RAID level %d\n", s->level);
return 1;
}
}
if (!st->ss->init_super(st, &info.array, s->size, name, c->homehost, uuid,
- INVALID_SECTORS))
+ data_offset))
goto abort_locked;
total_slots = info.array.nr_disks;