diff options
author | Peter Rajnoha <prajnoha@redhat.com> | 2015-08-19 13:05:50 +0200 |
---|---|---|
committer | Peter Rajnoha <prajnoha@redhat.com> | 2016-02-03 17:40:31 +0100 |
commit | 84e2ed8f40702273c9bc798a714068d5d65dba47 (patch) | |
tree | 5369acb40749ac2dd63d482672022509c7cef1a4 | |
parent | 171097c54f8fc12fa5fd173de2569ccd75c802da (diff) | |
download | lvm2-84e2ed8f40702273c9bc798a714068d5d65dba47.tar.gz |
metadata: add generate_dead_lv_name fn
Dead LVs have generated name "rlvolN" where N is the number that is
assigned automatically so the name is unique in the VG.
This is exactly the same naming scheme as used for automatic naming
for live LV names, but it has the "r" prefix in addition.
-rw-r--r-- | lib/metadata/lv_manip.c | 20 | ||||
-rw-r--r-- | lib/metadata/metadata-exported.h | 2 |
2 files changed, 22 insertions, 0 deletions
diff --git a/lib/metadata/lv_manip.c b/lib/metadata/lv_manip.c index dd468f63e..9047a61a9 100644 --- a/lib/metadata/lv_manip.c +++ b/lib/metadata/lv_manip.c @@ -5395,6 +5395,26 @@ char *generate_lv_name(struct volume_group *vg, const char *format, return buffer; } +char *generate_dead_lv_name(struct volume_group *vg, const char *format, + char *buffer, size_t len) +{ + struct glv_list *glvl; + int high = -1, i; + + dm_list_iterate_items(glvl, &vg->dead_lvs) { + if (sscanf(glvl->glv->dead->dname, format, &i) != 1) + continue; + + if (i > high) + high = i; + } + + if (dm_snprintf(buffer, len, format, high + 1) < 0) + return NULL; + + return buffer; +} + int vg_max_lv_reached(struct volume_group *vg) { if (!vg->max_lv) diff --git a/lib/metadata/metadata-exported.h b/lib/metadata/metadata-exported.h index d09cd0a0a..7831131e7 100644 --- a/lib/metadata/metadata-exported.h +++ b/lib/metadata/metadata-exported.h @@ -1201,6 +1201,8 @@ uint32_t find_free_lvnum(struct logical_volume *lv); dm_percent_t copy_percent(const struct logical_volume *lv_mirr); char *generate_lv_name(struct volume_group *vg, const char *format, char *buffer, size_t len); +char *generate_dead_lv_name(struct volume_group *vg, const char *format, + char *buffer, size_t len); /* * Begin skeleton for external LVM library |