more linux-like name for LVM volumes
This commit is contained in:
parent
24b905a11c
commit
5dad99b730
3 changed files with 37 additions and 17 deletions
|
@ -172,7 +172,9 @@ find_lv (const char *name)
|
|||
{
|
||||
if (vg->lvs)
|
||||
for (lv = vg->lvs; lv; lv = lv->next)
|
||||
if (! grub_strcmp (lv->name, name) && is_lv_readable (lv))
|
||||
if ((grub_strcmp (lv->fullname, name) == 0
|
||||
|| grub_strcmp (lv->compatname, name) == 0)
|
||||
&& is_lv_readable (lv))
|
||||
return lv;
|
||||
}
|
||||
return NULL;
|
||||
|
@ -188,10 +190,7 @@ grub_lvm_open (const char *name, grub_disk_t disk,
|
|||
int explicit = 0;
|
||||
|
||||
if (grub_memcmp (name, "lvm/", sizeof ("lvm/") - 1) == 0)
|
||||
{
|
||||
name += sizeof ("lvm/") - 1;
|
||||
explicit = 1;
|
||||
}
|
||||
explicit = 1;
|
||||
|
||||
lv = find_lv (name);
|
||||
|
||||
|
@ -685,11 +684,34 @@ grub_lvm_scan_device (const char *name)
|
|||
q++;
|
||||
|
||||
s = q - p;
|
||||
lv->name = grub_malloc (vgname_len + 1 + s + 1);
|
||||
grub_memcpy (lv->name, vgname, vgname_len);
|
||||
lv->name[vgname_len] = '-';
|
||||
grub_memcpy (lv->name + vgname_len + 1, p, s);
|
||||
lv->name[vgname_len + 1 + s] = '\0';
|
||||
lv->name = grub_strndup (p, s);
|
||||
lv->compatname = grub_malloc (vgname_len + 1 + s + 1);
|
||||
grub_memcpy (lv->compatname, vgname, vgname_len);
|
||||
lv->compatname[vgname_len] = '-';
|
||||
grub_memcpy (lv->compatname + vgname_len + 1, p, s);
|
||||
lv->compatname[vgname_len + 1 + s] = '\0';
|
||||
|
||||
{
|
||||
const char *iptr;
|
||||
char *optr;
|
||||
lv->fullname = grub_malloc (sizeof("lvm/") + 2 * vgname_len
|
||||
+ 1 + 2 * s + 1);
|
||||
optr = lv->fullname;
|
||||
for (iptr = vgname; iptr < vgname + vgname_len; iptr++)
|
||||
{
|
||||
*optr++ = *iptr;
|
||||
if (*iptr == '-')
|
||||
*optr++ = '-';
|
||||
}
|
||||
*optr++ = '-';
|
||||
for (iptr = p; iptr < p + s; iptr++)
|
||||
{
|
||||
*optr++ = *iptr;
|
||||
if (*iptr == '-')
|
||||
*optr++ = '-';
|
||||
}
|
||||
*optr++ = 0;
|
||||
}
|
||||
|
||||
lv->size = 0;
|
||||
|
||||
|
|
|
@ -783,14 +783,10 @@ grub_util_get_grub_dev (const char *os_dev)
|
|||
grub_size_t offset = sizeof ("/dev/mapper/") - 1;
|
||||
|
||||
len = strlen (os_dev) - offset + 1;
|
||||
grub_dev = xmalloc (len);
|
||||
grub_dev = xmalloc (len + sizeof ("lvm/"));
|
||||
|
||||
for (i = 0; i < len; i++, offset++)
|
||||
{
|
||||
grub_dev[i] = os_dev[offset];
|
||||
if (os_dev[offset] == '-' && os_dev[offset + 1] == '-')
|
||||
offset++;
|
||||
}
|
||||
grub_memcpy (grub_dev, "lvm/", sizeof ("lvm/") - 1);
|
||||
grub_memcpy (grub_dev + sizeof ("lvm/") - 1, os_dev + offset, len);
|
||||
}
|
||||
|
||||
break;
|
||||
|
|
|
@ -44,6 +44,8 @@ struct grub_lvm_pv {
|
|||
|
||||
struct grub_lvm_lv {
|
||||
char *name;
|
||||
char *fullname;
|
||||
char *compatname;
|
||||
unsigned int number;
|
||||
unsigned int segment_count;
|
||||
grub_uint64_t size;
|
||||
|
|
Loading…
Reference in a new issue