Create, Build: use default_layout()
This code is duplicated for Build mode so make default_layout() extern and use it. Simplify the function structure. It introduced change for Build mode, now for raid0 RAID0_ORIG_LAYOUT will be returned same as for Create. Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com> Signed-off-by: Jes Sorensen <jsorensen@fb.com>
This commit is contained in:
parent
c33bbda5b0
commit
913f07d1db
23
Build.c
23
Build.c
|
@ -71,28 +71,7 @@ int Build(char *mddev, struct mddev_dev *devlist,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (s->layout == UnSet)
|
if (s->layout == UnSet)
|
||||||
switch(s->level) {
|
s->layout = default_layout(NULL, s->level, c->verbose);
|
||||||
default: /* no layout */
|
|
||||||
s->layout = 0;
|
|
||||||
break;
|
|
||||||
case 10:
|
|
||||||
s->layout = 0x102; /* near=2, far=1 */
|
|
||||||
if (c->verbose > 0)
|
|
||||||
pr_err("layout defaults to n1\n");
|
|
||||||
break;
|
|
||||||
case 5:
|
|
||||||
case 6:
|
|
||||||
s->layout = map_name(r5layout, "default");
|
|
||||||
if (c->verbose > 0)
|
|
||||||
pr_err("layout defaults to %s\n", map_num(r5layout, s->layout));
|
|
||||||
break;
|
|
||||||
case LEVEL_FAULTY:
|
|
||||||
s->layout = map_name(faultylayout, "default");
|
|
||||||
|
|
||||||
if (c->verbose > 0)
|
|
||||||
pr_err("layout defaults to %s\n", map_num(faultylayout, s->layout));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* We need to create the device. It can have no name. */
|
/* We need to create the device. It can have no name. */
|
||||||
map_lock(&map);
|
map_lock(&map);
|
||||||
|
|
37
Create.c
37
Create.c
|
@ -39,14 +39,28 @@ static int round_size_and_verify(unsigned long long *size, int chunk)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int default_layout(struct supertype *st, int level, int verbose)
|
/**
|
||||||
|
* default_layout() - Get default layout for level.
|
||||||
|
* @st: metadata requested, could be NULL.
|
||||||
|
* @level: raid level requested.
|
||||||
|
* @verbose: verbose level.
|
||||||
|
*
|
||||||
|
* Try to ask metadata handler first, otherwise use global defaults.
|
||||||
|
*
|
||||||
|
* Return: Layout or &UnSet, return value meaning depends of level used.
|
||||||
|
*/
|
||||||
|
int default_layout(struct supertype *st, int level, int verbose)
|
||||||
{
|
{
|
||||||
int layout = UnSet;
|
int layout = UnSet;
|
||||||
|
mapping_t *layout_map = NULL;
|
||||||
|
char *layout_name = NULL;
|
||||||
|
|
||||||
if (st && st->ss->default_geometry)
|
if (st && st->ss->default_geometry)
|
||||||
st->ss->default_geometry(st, &level, &layout, NULL);
|
st->ss->default_geometry(st, &level, &layout, NULL);
|
||||||
|
|
||||||
if (layout == UnSet)
|
if (layout != UnSet)
|
||||||
|
return layout;
|
||||||
|
|
||||||
switch (level) {
|
switch (level) {
|
||||||
default: /* no layout */
|
default: /* no layout */
|
||||||
layout = 0;
|
layout = 0;
|
||||||
|
@ -56,23 +70,24 @@ static int default_layout(struct supertype *st, int level, int verbose)
|
||||||
break;
|
break;
|
||||||
case 10:
|
case 10:
|
||||||
layout = 0x102; /* near=2, far=1 */
|
layout = 0x102; /* near=2, far=1 */
|
||||||
if (verbose > 0)
|
layout_name = "n2";
|
||||||
pr_err("layout defaults to n2\n");
|
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
case 6:
|
case 6:
|
||||||
layout = map_name(r5layout, "default");
|
layout_map = r5layout;
|
||||||
if (verbose > 0)
|
|
||||||
pr_err("layout defaults to %s\n", map_num(r5layout, layout));
|
|
||||||
break;
|
break;
|
||||||
case LEVEL_FAULTY:
|
case LEVEL_FAULTY:
|
||||||
layout = map_name(faultylayout, "default");
|
layout_map = faultylayout;
|
||||||
|
|
||||||
if (verbose > 0)
|
|
||||||
pr_err("layout defaults to %s\n", map_num(faultylayout, layout));
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (layout_map) {
|
||||||
|
layout = map_name(layout_map, "default");
|
||||||
|
layout_name = map_num(layout_map, layout);
|
||||||
|
}
|
||||||
|
if (layout_name && verbose > 0)
|
||||||
|
pr_err("layout defaults to %s\n", layout_name);
|
||||||
|
|
||||||
return layout;
|
return layout;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
1
mdadm.h
1
mdadm.h
|
@ -1512,6 +1512,7 @@ extern int get_linux_version(void);
|
||||||
extern int mdadm_version(char *version);
|
extern int mdadm_version(char *version);
|
||||||
extern unsigned long long parse_size(char *size);
|
extern unsigned long long parse_size(char *size);
|
||||||
extern int parse_uuid(char *str, int uuid[4]);
|
extern int parse_uuid(char *str, int uuid[4]);
|
||||||
|
int default_layout(struct supertype *st, int level, int verbose);
|
||||||
extern int is_near_layout_10(int layout);
|
extern int is_near_layout_10(int layout);
|
||||||
extern int parse_layout_10(char *layout);
|
extern int parse_layout_10(char *layout);
|
||||||
extern int parse_layout_faulty(char *layout);
|
extern int parse_layout_faulty(char *layout);
|
||||||
|
|
Loading…
Reference in New Issue