[lvm-devel] master - cleanup: refactor apply_lvname_restrictions

Zdenek Kabelac zkabelac at fedoraproject.org
Tue Apr 8 09:02:55 UTC 2014


Gitweb:        http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=56175f6ba96d161a1d8f70bf985d95066b41d2d9
Commit:        56175f6ba96d161a1d8f70bf985d95066b41d2d9
Parent:        9eab84aa2b4cf97f931f0291b3f690cdceaa1e75
Author:        Zdenek Kabelac <zkabelac at redhat.com>
AuthorDate:    Mon Apr 7 20:19:14 2014 +0200
Committer:     Zdenek Kabelac <zkabelac at redhat.com>
CommitterDate: Tue Apr 8 11:00:15 2014 +0200

cleanup: refactor apply_lvname_restrictions

Split apply_lvname_restrictions into 2 internal
function:

_lvname_has_reserved_prefix()
_lvname_has_reserved_string()
---
 lib/misc/lvm-string.c |   65 ++++++++++++++++++++++++++++---------------------
 1 files changed, 37 insertions(+), 28 deletions(-)

diff --git a/lib/misc/lvm-string.c b/lib/misc/lvm-string.c
index a74fd58..5377528 100644
--- a/lib/misc/lvm-string.c
+++ b/lib/misc/lvm-string.c
@@ -100,45 +100,59 @@ int validate_name(const char *n)
 	return (_validate_name(n) < 0 ? 0 : 1);
 }
 
-int apply_lvname_restrictions(const char *name)
+static const char *_lvname_has_reserved_prefix(const char *lvname)
 {
-	static const char * const _reserved_prefixes[] = {
-		"snapshot",
+	static const char _prefixes[][12] = {
 		"pvmove",
-		NULL
+		"snapshot"
 	};
+	unsigned i;
+
+	for (i = 0; i < DM_ARRAY_SIZE(_prefixes); ++i)
+		if (!strncmp(lvname, _prefixes[i], strlen(_prefixes[i])))
+			return _prefixes[i];
 
-	static const char * const _reserved_strings[] = {
+	return NULL;
+}
+
+static const char *_lvname_has_reserved_string(const char *lvname)
+{
+	static const char _strings[][12] = {
 		"_cdata",
 		"_cmeta",
-		"_mlog",
 		"_mimage",
+		"_mlog",
 		"_pmspare",
 		"_rimage",
 		"_rmeta",
-		"_vorigin",
 		"_tdata",
 		"_tmeta",
-		NULL
+		"_vorigin"
 	};
-
 	unsigned i;
+
+	for (i = 0; i < DM_ARRAY_SIZE(_strings); ++i)
+		if (strstr(lvname, _strings[i]))
+			return _strings[i];
+
+	return NULL;
+}
+
+
+int apply_lvname_restrictions(const char *name)
+{
 	const char *s;
 
-	for (i = 0; (s = _reserved_prefixes[i]); i++) {
-		if (!strncmp(name, s, strlen(s))) {
-			log_error("Names starting \"%s\" are reserved. "
-				  "Please choose a different LV name.", s);
-			return 0;
-		}
+	if ((s = _lvname_has_reserved_prefix(name))) {
+		log_error("Names starting \"%s\" are reserved. "
+			  "Please choose a different LV name.", s);
+		return 0;
 	}
 
-	for (i = 0; (s = _reserved_strings[i]); i++) {
-		if (strstr(name, s)) {
-			log_error("Names including \"%s\" are reserved. "
-				  "Please choose a different LV name.", s);
-			return 0;
-		}
+	if ((s = _lvname_has_reserved_string(name))) {
+		log_error("Names including \"%s\" are reserved. "
+			  "Please choose a different LV name.", s);
+		return 0;
 	}
 
 	return 1;
@@ -154,13 +168,8 @@ name_error_t validate_name_detailed(const char *name)
 
 int is_reserved_lvname(const char *name)
 {
-	int rc, old_suppress;
-
-	old_suppress = log_suppress(2);
-	rc = !apply_lvname_restrictions(name);
-	log_suppress(old_suppress);
-
-	return rc;
+	return (_lvname_has_reserved_prefix(name) ||
+		_lvname_has_reserved_string(name)) ? 1 : 0;
 }
 
 char *build_dm_uuid(struct dm_pool *mem, const struct logical_volume *lv,




More information about the lvm-devel mailing list