if (!lv)
return grub_error (GRUB_ERR_UNKNOWN_DEVICE, "unknown volume");
- if (lv->vg->extent_size == 0)
+ if (!lv->vg || lv->vg->extent_size == 0)
return grub_error (GRUB_ERR_READ_ERROR, "invalid volume");
for (i = 0; i < lv->segment_count; i++)
{
grub_err_t err;
- err = validate_segment (&lv->segments[1]);
+ err = validate_segment (&lv->segments[i]);
if (err)
return err;
}
for (lv = vg->lvs; lv; lv = lv->next)
{
- /* RAID 1 and single-disk RAID 0 don't use a chunksize but code assumes one so set
- one. */
+ grub_err_t err;
+
+ /* RAID 1 and single-disk RAID 0 don't use a chunksize but code
+ assumes one so set one. */
for (i = 0; i < lv->segment_count; i++)
{
if (lv->segments[i].type == 1)
&& lv->segments[i].stripe_size == 0)
lv->segments[i].stripe_size = 64;
}
- }
-
- for (lv = vg->lvs; lv; lv = lv->next)
- {
- grub_err_t err;
-
- /* RAID 1 doesn't use a chunksize but code assumes one so set
- one. */
- for (i = 0; i < lv->segment_count; i++)
- if (lv->segments[i].type == 1)
- lv->segments[i].stripe_size = 64;
err = validate_lv(lv);
if (err)
lv->fullname = tmp;
}
}
- lv->vg = vg;
}
/* Add our new array to the list. */
vg->next = array_list;
array->lvs->visible = 1;
array->lvs->name = array->name;
array->lvs->fullname = array->name;
+ array->lvs->vg = array;
array->lvs->idname = grub_malloc (sizeof ("mduuid/") + 2 * uuidlen);
if (!array->lvs->idname)