diff options
author | Alasdair Kergon <agk@redhat.com> | 2002-02-21 15:26:44 +0000 |
---|---|---|
committer | Alasdair Kergon <agk@redhat.com> | 2002-02-21 15:26:44 +0000 |
commit | b5ed53273ad0cfbb531b0ac02220fc3b0cb33938 (patch) | |
tree | 40ac01606ca774756ce92ea0bf4bcfc5464d088f /lib/uuid/uuid.c | |
parent | dc511e9ecb5e7a2213986c1b32e5e18cfb17abb6 (diff) | |
download | lvm2-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.c | 26 |
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); |