* master - cachevol: generate a unique name when creating
@ 2020-07-23 18:19 David Teigland
0 siblings, 0 replies; only message in thread
From: David Teigland @ 2020-07-23 18:19 UTC (permalink / raw)
To: lvm-devel
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=085760992dc68efbda8fe8e1ad4a5a2eccef9139
Commit: 085760992dc68efbda8fe8e1ad4a5a2eccef9139
Parent: 3c9177fdc0b8f94c0ae335790a485477901b685d
Author: David Teigland <teigland@redhat.com>
AuthorDate: Thu Jul 23 13:07:32 2020 -0500
Committer: David Teigland <teigland@redhat.com>
CommitterDate: Thu Jul 23 13:18:22 2020 -0500
cachevol: generate a unique name when creating
When a cachevol is automatically created, if the default name
conflicts with an existing name, generate a new unique name.
---
test/shell/cachevol-cachedevice.sh | 10 ++++++++++
tools/lvconvert.c | 14 ++++++++++++++
2 files changed, 24 insertions(+)
diff --git a/test/shell/cachevol-cachedevice.sh b/test/shell/cachevol-cachedevice.sh
index 11a37d9cd..3831ee9d4 100644
--- a/test/shell/cachevol-cachedevice.sh
+++ b/test/shell/cachevol-cachedevice.sh
@@ -208,5 +208,15 @@ lvchange -ay $vg/$lv1
lvchange -an $vg/$lv1
lvremove $vg/$lv1
+# if the cache name is used generate a new name
+lvcreate -n $lv1 -l8 -an $vg @slow
+lvcreate -n ${lv1}_cache -l1 -an $vg @slow
+lvconvert -y --type writecache --cachedevice @fast --cachesize 8M $vg/$lv1
+check lv_field $vg/$lv1 segtype writecache
+check lv_field $vg/${lv1}_cache0_cvol lv_size "8.00m"
+lvchange -ay $vg/$lv1
+lvchange -an $vg/$lv1
+lvremove $vg/$lv1
+
vgremove -ff $vg
diff --git a/tools/lvconvert.c b/tools/lvconvert.c
index b6505c1a9..524ed5a33 100644
--- a/tools/lvconvert.c
+++ b/tools/lvconvert.c
@@ -4267,6 +4267,7 @@ static int _lv_create_cachevol(struct cmd_context *cmd,
struct logical_volume **cachevol_lv)
{
char cvname[NAME_LEN];
+ char format[NAME_LEN];
struct dm_list *use_pvh;
struct pv_list *pvl;
char *dev_name;
@@ -4373,6 +4374,19 @@ static int _lv_create_cachevol(struct cmd_context *cmd,
return 0;
}
+ if (find_lv(vg, cvname)) {
+ memset(format, 0, sizeof(cvname));
+ memset(cvname, 0, sizeof(cvname));
+ if (dm_snprintf(format, sizeof(format), "%s_cache%%d", lv->name) < 0) {
+ log_error("Failed to generate cachevol LV format.");
+ return 0;
+ }
+ if (!generate_lv_name(vg, format, cvname, sizeof(cvname))) {
+ log_error("Failed to generate cachevol LV name.");
+ return 0;
+ }
+ }
+
lp.lv_name = cvname;
lp.pvh = use_pvh;
lp.extents = cache_size_sectors / vg->extent_size;
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2020-07-23 18:19 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-07-23 18:19 master - cachevol: generate a unique name when creating David Teigland
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.