]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
Create: user container_dev rather than subarray for some tests.
authorNeilBrown <neilb@suse.de>
Mon, 22 Nov 2010 09:24:50 +0000 (20:24 +1100)
committerNeilBrown <neilb@suse.de>
Mon, 22 Nov 2010 09:24:50 +0000 (20:24 +1100)
It makes more sense to test for container_dev than for subarray
for several places in Create where it then uses container_dev.

This allows us to subsequently remove subarray.

Signed-off-by: NeilBrown <neilb@suse.de>
Create.c
super-ddf.c
super-intel.c
super0.c
super1.c
util.c

index bbf2f2b00da25cfdbc44bae532bdf9754ca93baa..337040c22d9c48d184a5d06f37e5458ca0df5312 100644 (file)
--- a/Create.c
+++ b/Create.c
@@ -672,7 +672,7 @@ int Create(struct supertype *st, char *mddev,
 
        sysfs_init(&info, mdfd, 0);
 
 
        sysfs_init(&info, mdfd, 0);
 
-       if (st->ss->external && st->subarray[0]) {
+       if (st->ss->external && st->container_dev != NoMdDev) {
                /* member */
 
                /* When creating a member, we need to be careful
                /* member */
 
                /* When creating a member, we need to be careful
@@ -775,7 +775,8 @@ int Create(struct supertype *st, char *mddev,
                                if (have_container)
                                        fd = -1;
                                else {
                                if (have_container)
                                        fd = -1;
                                else {
-                                       if (st->ss->external && st->subarray[0])
+                                       if (st->ss->external &&
+                                           st->container_dev != NoMdDev)
                                                fd = open(dv->devname, O_RDWR);
                                        else
                                                fd = open(dv->devname, O_RDWR|O_EXCL);
                                                fd = open(dv->devname, O_RDWR);
                                        else
                                                fd = open(dv->devname, O_RDWR|O_EXCL);
@@ -906,7 +907,7 @@ int Create(struct supertype *st, char *mddev,
                }
                if (verbose >= 0)
                        fprintf(stderr, Name ": array %s started.\n", mddev);
                }
                if (verbose >= 0)
                        fprintf(stderr, Name ": array %s started.\n", mddev);
-               if (st->ss->external && st->subarray[0]) {
+               if (st->ss->external && st->container_dev != NoMdDev) {
                        if (need_mdmon)
                                start_mdmon(st->container_dev);
 
                        if (need_mdmon)
                                start_mdmon(st->container_dev);
 
index ab358918f8e7d61ffe018361c4a3c8163b8e028c..01c376d6c6b270512e418f7681dc7a2def4c08a8 100644 (file)
@@ -893,6 +893,7 @@ static struct supertype *match_metadata_desc_ddf(char *arg)
 
        st = malloc(sizeof(*st));
        memset(st, 0, sizeof(*st));
 
        st = malloc(sizeof(*st));
        memset(st, 0, sizeof(*st));
+       st->container_dev = NoMdDev;
        st->ss = &super_ddf;
        st->max_devs = 512;
        st->minor_version = 0;
        st->ss = &super_ddf;
        st->max_devs = 512;
        st->minor_version = 0;
index 3c18e575b183dc326d81eff7b99daf7bbc3c86ab..5470c91d3648061310f23a56adf8668d77dc5a96 100644 (file)
@@ -333,6 +333,7 @@ static struct supertype *match_metadata_desc_imsm(char *arg)
        if (!st)
                return NULL;
        memset(st, 0, sizeof(*st));
        if (!st)
                return NULL;
        memset(st, 0, sizeof(*st));
+       st->container_dev = NoMdDev;
        st->ss = &super_imsm;
        st->max_devs = IMSM_MAX_DEVICES;
        st->minor_version = 0;
        st->ss = &super_imsm;
        st->max_devs = IMSM_MAX_DEVICES;
        st->minor_version = 0;
index 74b05aeda9f08b27c219961176988fd23e92d162..1fcdd24c37526e4adf1da065435458d39bc66b14 100644 (file)
--- a/super0.c
+++ b/super0.c
@@ -917,6 +917,7 @@ static struct supertype *match_metadata_desc0(char *arg)
        if (!st) return st;
 
        memset(st, 0, sizeof(*st));
        if (!st) return st;
 
        memset(st, 0, sizeof(*st));
+       st->container_dev = NoMdDev;
        st->ss = &super0;
        st->info = NULL;
        st->minor_version = 90;
        st->ss = &super0;
        st->info = NULL;
        st->minor_version = 90;
index ca2a54e0ae52c4a1685262701be167c82e5a013c..6974daa0fb304cc26aa794b3e13550d771278efe 100644 (file)
--- a/super1.c
+++ b/super1.c
@@ -1371,6 +1371,7 @@ static struct supertype *match_metadata_desc1(char *arg)
        if (!st) return st;
 
        memset(st, 0, sizeof(*st));
        if (!st) return st;
 
        memset(st, 0, sizeof(*st));
+       st->container_dev = NoMdDev;
        st->ss = &super1;
        st->max_devs = 384;
        st->sb = NULL;
        st->ss = &super1;
        st->max_devs = 384;
        st->sb = NULL;
diff --git a/util.c b/util.c
index 83a972e79c16032f296d93409b64dee712bc7d29..57b7e1f57d91a71294d489e05fce40d602e14793 100644 (file)
--- a/util.c
+++ b/util.c
@@ -1126,6 +1126,9 @@ struct supertype *guess_super_type(int fd, enum guess_types guess_type)
        int i;
 
        st = malloc(sizeof(*st));
        int i;
 
        st = malloc(sizeof(*st));
+       memset(st, 0, sizeof(*st));
+       st->container_dev = NoMdDev;
+
        for (i=0 ; superlist[i]; i++) {
                int rv;
                ss = superlist[i];
        for (i=0 ; superlist[i]; i++) {
                int rv;
                ss = superlist[i];