core: add LVM RAID1 support
Closes 44534.
This commit is contained in:
parent
7c9309e50a
commit
527eeeeee6
1 changed files with 15 additions and 9 deletions
|
@ -577,13 +577,17 @@ grub_lvm_detect (grub_disk_t disk,
|
||||||
if (is_pvmove)
|
if (is_pvmove)
|
||||||
seg->node_count = 1;
|
seg->node_count = 1;
|
||||||
}
|
}
|
||||||
else if (grub_memcmp (p, "raid", sizeof ("raid") - 1)
|
else if (grub_memcmp (p, "raid", sizeof ("raid") - 1) == 0
|
||||||
== 0 && (p[sizeof ("raid") - 1] >= '4'
|
&& ((p[sizeof ("raid") - 1] >= '4'
|
||||||
&& p[sizeof ("raid") - 1] <= '6')
|
&& p[sizeof ("raid") - 1] <= '6')
|
||||||
|
|| p[sizeof ("raid") - 1] == '1')
|
||||||
&& p[sizeof ("raidX") - 1] == '"')
|
&& p[sizeof ("raidX") - 1] == '"')
|
||||||
{
|
{
|
||||||
switch (p[sizeof ("raid") - 1])
|
switch (p[sizeof ("raid") - 1])
|
||||||
{
|
{
|
||||||
|
case '1':
|
||||||
|
seg->type = GRUB_DISKFILTER_MIRROR;
|
||||||
|
break;
|
||||||
case '4':
|
case '4':
|
||||||
seg->type = GRUB_DISKFILTER_RAID4;
|
seg->type = GRUB_DISKFILTER_RAID4;
|
||||||
seg->layout = GRUB_RAID_LAYOUT_LEFT_ASYMMETRIC;
|
seg->layout = GRUB_RAID_LAYOUT_LEFT_ASYMMETRIC;
|
||||||
|
@ -608,16 +612,18 @@ grub_lvm_detect (grub_disk_t disk,
|
||||||
goto lvs_segment_fail;
|
goto lvs_segment_fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
seg->stripe_size = grub_lvm_getvalue (&p, "stripe_size = ");
|
if (seg->type != GRUB_DISKFILTER_MIRROR)
|
||||||
if (p == NULL)
|
|
||||||
{
|
{
|
||||||
|
seg->stripe_size = grub_lvm_getvalue (&p, "stripe_size = ");
|
||||||
|
if (p == NULL)
|
||||||
|
{
|
||||||
#ifdef GRUB_UTIL
|
#ifdef GRUB_UTIL
|
||||||
grub_util_info ("unknown stripe_size\n");
|
grub_util_info ("unknown stripe_size\n");
|
||||||
#endif
|
#endif
|
||||||
goto lvs_segment_fail;
|
goto lvs_segment_fail;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
seg->nodes = grub_zalloc (sizeof (seg->nodes[0])
|
seg->nodes = grub_zalloc (sizeof (seg->nodes[0])
|
||||||
* seg->node_count);
|
* seg->node_count);
|
||||||
|
|
||||||
|
@ -625,7 +631,7 @@ grub_lvm_detect (grub_disk_t disk,
|
||||||
if (p == NULL)
|
if (p == NULL)
|
||||||
{
|
{
|
||||||
#ifdef GRUB_UTIL
|
#ifdef GRUB_UTIL
|
||||||
grub_util_info ("unknown mirrors\n");
|
grub_util_info ("unknown raids\n");
|
||||||
#endif
|
#endif
|
||||||
goto lvs_segment_fail2;
|
goto lvs_segment_fail2;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue