[lvm-devel] master - lvm-string: add function to detect component LV suffix

Zdenek Kabelac zkabelac at sourceware.org
Tue Dec 19 14:32:19 UTC 2017


Gitweb:        https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=3a841515af623b86be0628ef6568ff74009ea643
Commit:        3a841515af623b86be0628ef6568ff74009ea643
Parent:        17649d4ac8d4c7d10bf58feefa5f1faae89713ca
Author:        Zdenek Kabelac <zkabelac at redhat.com>
AuthorDate:    Mon Dec 11 18:12:47 2017 +0100
Committer:     Zdenek Kabelac <zkabelac at redhat.com>
CommitterDate: Tue Dec 19 15:28:07 2017 +0100

lvm-string: add function to detect component LV suffix

Add is_component_lvname() function to recognize component LV name.
---
 lib/misc/lvm-string.c |   30 +++++++++++++++++++++++++++---
 lib/misc/lvm-string.h |    1 +
 2 files changed, 28 insertions(+), 3 deletions(-)

diff --git a/lib/misc/lvm-string.c b/lib/misc/lvm-string.c
index cdcc993..a2098fd 100644
--- a/lib/misc/lvm-string.c
+++ b/lib/misc/lvm-string.c
@@ -150,22 +150,41 @@ static const char *_lvname_has_reserved_prefix(const char *lvname)
 	return NULL;
 }
 
-static const char *_lvname_has_reserved_string(const char *lvname)
+static const char *_lvname_has_reserved_component_string(const char *lvname)
 {
 	static const char _strings[][12] = {
+		/* Suffixes for compoment LVs */
 		"_cdata",
 		"_cmeta",
 		"_corig",
 		"_mimage",
 		"_mlog",
-		"_pmspare",
 		"_rimage",
 		"_rmeta",
 		"_tdata",
-		"_tmeta",
+		"_tmeta"
+	};
+	unsigned i;
+
+	for (i = 0; i < DM_ARRAY_SIZE(_strings); ++i)
+		if (strstr(lvname, _strings[i]))
+			return _strings[i];
+
+	return NULL;
+}
+
+static const char *_lvname_has_reserved_string(const char *lvname)
+{
+	static const char _strings[][12] = {
+		/* Additional suffixes for non-compoment LVs */
+		"_pmspare",
 		"_vorigin"
 	};
 	unsigned i;
+	const char *cs;
+
+	if ((cs = _lvname_has_reserved_component_string(lvname)))
+		return cs;
 
 	for (i = 0; i < DM_ARRAY_SIZE(_strings); ++i)
 		if (strstr(lvname, _strings[i]))
@@ -208,6 +227,11 @@ int is_reserved_lvname(const char *name)
 		_lvname_has_reserved_string(name)) ? 1 : 0;
 }
 
+int is_component_lvname(const char *name)
+{
+	return (_lvname_has_reserved_component_string(name)) ? 1 : 0;
+}
+
 char *build_dm_uuid(struct dm_pool *mem, const struct logical_volume *lv,
 		    const char *layer)
 {
diff --git a/lib/misc/lvm-string.h b/lib/misc/lvm-string.h
index ebdf956..4e7404a 100644
--- a/lib/misc/lvm-string.h
+++ b/lib/misc/lvm-string.h
@@ -47,6 +47,7 @@ int validate_tag(const char *n);
 void copy_systemid_chars(const char *src, char *dst);
 
 int apply_lvname_restrictions(const char *name);
+int is_component_lvname(const char *name);
 int is_reserved_lvname(const char *name);
 
 /*




More information about the lvm-devel mailing list