summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Rajnoha <prajnoha@redhat.com>2015-08-19 13:05:50 +0200
committerPeter Rajnoha <prajnoha@redhat.com>2016-02-03 17:40:31 +0100
commit84e2ed8f40702273c9bc798a714068d5d65dba47 (patch)
tree5369acb40749ac2dd63d482672022509c7cef1a4
parent171097c54f8fc12fa5fd173de2569ccd75c802da (diff)
downloadlvm2-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.c20
-rw-r--r--lib/metadata/metadata-exported.h2
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