]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
Provide a mdstat_ent to subarray helper
authorDan Williams <dan.j.williams@intel.com>
Thu, 18 Nov 2010 09:21:29 +0000 (10:21 +0100)
committerNeilBrown <neilb@suse.de>
Tue, 23 Nov 2010 03:44:23 +0000 (14:44 +1100)
...before introducing another open coded instace of this conversion.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Signed-off-by: NeilBrown <neilb@suse.de>
managemon.c
mdadm.h
util.c

index b6f99252716ac08120dd5d56050695844c9a413f..fbf61888138d91ed13956408fa28b0ed5e1666cd 100644 (file)
@@ -511,7 +511,7 @@ static void manage_new(struct mdstat_ent *mdstat,
 
        new->container = container;
 
-       inst = &mdstat->metadata_version[10+strlen(container->devname)+1];
+       inst = to_subarray(mdstat, container->devname);
 
        new->info.array = mdi->array;
        new->info.component_size = mdi->component_size;
diff --git a/mdadm.h b/mdadm.h
index 22e3d2cf791a3d42980ade0a6dd8fce2afb42a75..a44bb2a98a21cef296d49e074f006c13d4a9d456 100644 (file)
--- a/mdadm.h
+++ b/mdadm.h
@@ -1110,6 +1110,11 @@ static inline int is_subarray(char *vers)
        return (*vers == '/' || *vers == '-');
 }
 
+static inline char *to_subarray(struct mdstat_ent *ent, char *container)
+{
+       return &ent->metadata_version[10+strlen(container)+1];
+}
+
 #ifdef DEBUG
 #define dprintf(fmt, arg...) \
        fprintf(stderr, fmt, ##arg)
diff --git a/util.c b/util.c
index 1ecce3b8fd73d598051955bd8c6343b65bf29a9b..ad2ec923bf8559d476573e404f0c807b64793e5b 100644 (file)
--- a/util.c
+++ b/util.c
@@ -1449,14 +1449,11 @@ int is_subarray_active(char *subarray, char *container)
        struct mdstat_ent *mdstat = mdstat_read(0, 0);
        struct mdstat_ent *ent;
 
-       for (ent = mdstat; ent; ent = ent->next) {
-               if (is_container_member(ent, container)) {
-                       char *inst = &ent->metadata_version[10+strlen(container)+1];
-
-                       if (!subarray || strcmp(inst, subarray) == 0)
+       for (ent = mdstat; ent; ent = ent->next)
+               if (is_container_member(ent, container))
+                       if (!subarray ||
+                           strcmp(to_subarray(ent, container), subarray) == 0)
                                break;
-               }
-       }
 
        free_mdstat(mdstat);