Prefer version-1 superblocks for v.large devices.
Signed-off-by: Neil Brown <neilb@suse.de>
This commit is contained in:
parent
6ee5c05a11
commit
576d6d83af
21
Create.c
21
Create.c
|
@ -214,6 +214,27 @@ int Create(struct supertype *st, char *mddev, int mdfd,
|
||||||
ldsize = dsize;
|
ldsize = dsize;
|
||||||
ldsize <<= 9;
|
ldsize <<= 9;
|
||||||
}
|
}
|
||||||
|
if (st == NULL) {
|
||||||
|
/* Need to choose a default metadata, which is different
|
||||||
|
* depending on the sizes of devices
|
||||||
|
*/
|
||||||
|
int i;
|
||||||
|
char *name = "default";
|
||||||
|
if (level >= 1 && ldsize > (0x7fffffffULL<<10))
|
||||||
|
name = "default/large";
|
||||||
|
for(i=0; !st && superlist[i]; i++)
|
||||||
|
st = superlist[i]->match_metadata_desc(name);
|
||||||
|
|
||||||
|
if (!st) {
|
||||||
|
fprintf(stderr, Name ": internal error - no default metadata style\n");
|
||||||
|
exit(2);
|
||||||
|
}
|
||||||
|
if (st->ss->major != 0 ||
|
||||||
|
st->minor_version != 90)
|
||||||
|
fprintf(stderr, Name ": Defaulting to verion %d.%d metadata\n",
|
||||||
|
st->ss->major,
|
||||||
|
st->minor_version);
|
||||||
|
}
|
||||||
freesize = st->ss->avail_size(st, ldsize >> 9);
|
freesize = st->ss->avail_size(st, ldsize >> 9);
|
||||||
if (freesize == 0) {
|
if (freesize == 0) {
|
||||||
fprintf(stderr, Name ": %s is too small: %luK\n",
|
fprintf(stderr, Name ": %s is too small: %luK\n",
|
||||||
|
|
8
mdadm.c
8
mdadm.c
|
@ -1006,14 +1006,6 @@ int main(int argc, char *argv[])
|
||||||
rv = 1;
|
rv = 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (ss == NULL) {
|
|
||||||
for(i=0; !ss && superlist[i]; i++)
|
|
||||||
ss = superlist[i]->match_metadata_desc("default");
|
|
||||||
}
|
|
||||||
if (!ss) {
|
|
||||||
fprintf(stderr, Name ": internal error - no default metadata style\n");
|
|
||||||
exit(2);
|
|
||||||
}
|
|
||||||
|
|
||||||
rv = Create(ss, devlist->devname, mdfd, chunk, level, layout, size<0 ? 0 : size,
|
rv = Create(ss, devlist->devname, mdfd, chunk, level, layout, size<0 ? 0 : size,
|
||||||
raiddisks, sparedisks, ident.name,
|
raiddisks, sparedisks, ident.name,
|
||||||
|
|
3
super1.c
3
super1.c
|
@ -911,7 +911,8 @@ static struct supertype *match_metadata_desc1(char *arg)
|
||||||
st->ss = &super1;
|
st->ss = &super1;
|
||||||
st->max_devs = 384;
|
st->max_devs = 384;
|
||||||
if (strcmp(arg, "1") == 0 ||
|
if (strcmp(arg, "1") == 0 ||
|
||||||
strcmp(arg, "1.0") == 0) {
|
strcmp(arg, "1.0") == 0 ||
|
||||||
|
strcmp(arg, "default/large") == 0) {
|
||||||
st->minor_version = 0;
|
st->minor_version = 0;
|
||||||
return st;
|
return st;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue