]> sourceware.org Git - lvm2.git/commitdiff
lvm-string: add function to detect component LV suffix
authorZdenek Kabelac <zkabelac@redhat.com>
Mon, 11 Dec 2017 17:12:47 +0000 (18:12 +0100)
committerZdenek Kabelac <zkabelac@redhat.com>
Tue, 19 Dec 2017 14:28:07 +0000 (15:28 +0100)
Add is_component_lvname() function to recognize component LV name.

lib/misc/lvm-string.c
lib/misc/lvm-string.h

index cdcc993d3da4d776fd53e2926c570164d2a85008..a2098fd0f46d7d1e80ab38b3dc5f4723ccd71f6f 100644 (file)
@@ -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)
 {
index ebdf95652834fd963534fe86b6003622f6806262..4e7404a8da8642d68e990b5c9252fe0c1f9a2312 100644 (file)
@@ -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);
 
 /*
This page took 0.076393 seconds and 5 git commands to generate.