From 8d983d6f2dc69bf3b63618f4ae8555cefb3fbbb4 Mon Sep 17 00:00:00 2001 From: Jonathan Earl Brassow Date: Tue, 13 Jul 2010 22:24:39 +0000 Subject: [PATCH] Fix for bug 614164: No check for existing name when splitting mirror The user could use the same name as an existing LV when specifying a name for an LV split off from a mirror. This causes all sorts of issues. --- WHATS_NEW | 1 + lib/metadata/mirror.c | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/WHATS_NEW b/WHATS_NEW index a9b894cf2..fa4eca8a1 100644 --- a/WHATS_NEW +++ b/WHATS_NEW @@ -1,5 +1,6 @@ Version 2.02.71 - =============================== + Check if LV with specified name already exists when splitting a mirror. Fix suspend/resume logic for LVs resulting from splitting a mirror. Switch cmirrord and clvmd to use dm_create_lockfile. Allow clvmd pidfile to be configurable. diff --git a/lib/metadata/mirror.c b/lib/metadata/mirror.c index 0c4494b60..74f888027 100644 --- a/lib/metadata/mirror.c +++ b/lib/metadata/mirror.c @@ -1982,6 +1982,12 @@ int lv_split_mirror_images(struct logical_volume *lv, const char *split_name, { int r; + if (find_lv_in_vg(lv->vg, split_name)) { + log_error("Logical Volume \"%s\" already exists in " + "volume group \"%s\"", split_name, lv->vg->name); + return 0; + } + /* Can't split a mirror that is not in-sync... unless force? */ if (!_mirrored_lv_in_sync(lv)) { log_error("Unable to split mirror that is not in-sync."); -- 2.43.5