summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Rajnoha <prajnoha@redhat.com>2016-02-19 15:35:44 +0100
committerPeter Rajnoha <prajnoha@redhat.com>2016-02-19 15:35:44 +0100
commitf6af4507cf023e6dac85cf0f530dc67487d3c27a (patch)
treefbb98ea1790de8b9491176a394154088f3898ca2
parentc7bce183631dcad49679b0b19689548d01b1ad56 (diff)
downloadlvm2-dev-prajnoha-track-removed-lvs-old-1.tar.gz
lv: also look at any former LVs when checking LV name availabilitydev-prajnoha-track-removed-lvs-old-1
-rw-r--r--lib/metadata/lv_manip.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/lib/metadata/lv_manip.c b/lib/metadata/lv_manip.c
index 050eba5be..ad1983e6a 100644
--- a/lib/metadata/lv_manip.c
+++ b/lib/metadata/lv_manip.c
@@ -5328,6 +5328,7 @@ char *generate_lv_name(struct volume_group *vg, const char *format,
char *buffer, size_t len)
{
struct lv_list *lvl;
+ struct glv_list *glvl;
int high = -1, i;
dm_list_iterate_items(lvl, &vg->lvs) {
@@ -5338,6 +5339,14 @@ char *generate_lv_name(struct volume_group *vg, const char *format,
high = i;
}
+ dm_list_iterate_items(glvl, &vg->former_lvs) {
+ if (sscanf(glvl->glv->former->name, format, &i) != 1)
+ continue;
+
+ if (i > high)
+ high = i;
+ }
+
if (dm_snprintf(buffer, len, format, high + 1) < 0)
return NULL;
@@ -5478,7 +5487,8 @@ struct logical_volume *lv_create_empty(const char *name,
log_error("Failed to generate unique name for the new "
"logical volume");
return NULL;
- } else if (find_lv_in_vg(vg, name)) {
+ } else if (find_lv_in_vg(vg, name) ||
+ find_former_glv(vg, name, NULL)) {
log_error("Unable to create LV %s in Volume Group %s: "
"name already in use.", name, vg->name);
return NULL;