summaryrefslogtreecommitdiffstats
path: root/lib/uuid/uuid.c
diff options
context:
space:
mode:
authorAlasdair Kergon <agk@redhat.com>2002-02-21 15:26:44 +0000
committerAlasdair Kergon <agk@redhat.com>2002-02-21 15:26:44 +0000
commitb5ed53273ad0cfbb531b0ac02220fc3b0cb33938 (patch)
tree40ac01606ca774756ce92ea0bf4bcfc5464d088f /lib/uuid/uuid.c
parentdc511e9ecb5e7a2213986c1b32e5e18cfb17abb6 (diff)
downloadlvm2-b5ed53273ad0cfbb531b0ac02220fc3b0cb33938.tar.gz
lvm2-b5ed53273ad0cfbb531b0ac02220fc3b0cb33938.tar.xz
lvm2-b5ed53273ad0cfbb531b0ac02220fc3b0cb33938.zip
Generate LV uuid from lv_number when reading in LVs.
Diffstat (limited to 'lib/uuid/uuid.c')
-rw-r--r--lib/uuid/uuid.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/lib/uuid/uuid.c b/lib/uuid/uuid.c
index 4d1c9abc..03cdea19 100644
--- a/lib/uuid/uuid.c
+++ b/lib/uuid/uuid.c
@@ -19,6 +19,32 @@ static unsigned char _c[] =
static int _built_inverse;
static unsigned char _inverse_c[256];
+int id_from_lvnum(struct id *id, int lv_num)
+{
+ int i;
+
+ for (i = ID_LEN; i; i--) {
+ id->uuid[i - 1] = _c[lv_num % (sizeof(_c) - 1)];
+ lv_num /= sizeof(_c) - 1;
+ }
+
+ return 1;
+}
+
+int lvnum_from_id(struct id *id)
+{
+ int i, lv_num = 0;
+ unsigned char *c;
+
+ for (i = 0; i < ID_LEN; i++) {
+ lv_num *= sizeof(_c) - 1;
+ if ((c = strchr(_c, id->uuid[i])))
+ lv_num += (int) (c - _c);
+ }
+
+ return lv_num;
+}
+
int id_create(struct id *id)
{
int random, i, len = sizeof(id->uuid);