mirror of
git://sourceware.org/git/lvm2.git
synced 2024-12-21 13:34:40 +03:00
o calculate pv_numbers and lv_numbers for LVM1 support
This commit is contained in:
parent
491ae26f6c
commit
ab47fb661f
@ -216,5 +216,7 @@ int export_lvs(struct disk_list *dl, struct volume_group *vg,
|
|||||||
|
|
||||||
int export_uuids(struct disk_list *dl, struct volume_group *vg);
|
int export_uuids(struct disk_list *dl, struct volume_group *vg);
|
||||||
|
|
||||||
|
void export_numbers(struct list_head *pvs, struct volume_group *vg);
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -149,6 +149,8 @@ static int _flatten_vg(struct pool *mem, struct volume_group *vg,
|
|||||||
|
|
||||||
list_add(&data->list, pvs);
|
list_add(&data->list, pvs);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export_numbers(pvs, vg);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -526,3 +526,43 @@ int export_uuids(struct disk_list *dl, struct volume_group *vg)
|
|||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int _get_lv_number(struct volume_group *vg, const char *name)
|
||||||
|
{
|
||||||
|
/* FIXME: inefficient */
|
||||||
|
struct list_head *tmp;
|
||||||
|
struct lv_list *ll;
|
||||||
|
int r = 0;
|
||||||
|
|
||||||
|
list_for_each (tmp, &vg->lvs) {
|
||||||
|
ll = list_entry(tmp, struct lv_list, list);
|
||||||
|
if (!strcmp(ll->lv.name, name))
|
||||||
|
break;
|
||||||
|
r++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This calculates the nasty pv_number and
|
||||||
|
* lv_number fields used by LVM1. Very
|
||||||
|
* inefficient code.
|
||||||
|
*/
|
||||||
|
void export_numbers(struct list_head *pvs, struct volume_group *vg)
|
||||||
|
{
|
||||||
|
struct list_head *tmp, *tmp2;
|
||||||
|
struct disk_list *dl;
|
||||||
|
struct lvd_list *ll;
|
||||||
|
int pv_num = 0;
|
||||||
|
|
||||||
|
list_for_each (tmp, pvs) {
|
||||||
|
dl = list_entry(tmp, struct disk_list, list);
|
||||||
|
dl->pv.pv_number = pv_num++;
|
||||||
|
|
||||||
|
list_for_each (tmp2, &dl->lvs) {
|
||||||
|
ll = list_entry(tmp2, struct lvd_list, list);
|
||||||
|
ll->lv.lv_number = _get_lv_number(vg, ll->lv.lv_name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user