]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
Fix --incremental handling on cluster array.
authorGoldwyn Rodrigues <rgoldwyn@suse.com>
Wed, 26 Aug 2015 16:35:21 +0000 (11:35 -0500)
committerNeilBrown <neilb@suse.com>
Mon, 28 Sep 2015 04:42:55 +0000 (14:42 +1000)
Commit 06bd679317a2 ("Skip clustered devices in incremental")
disabled incremental completely on clustered arrays.
What we really want is that mdadm should not start or create
a clustered array but still be able to add or readd to an existing
device. This would enable udev scripts to automatically add
or re-add a device after transient errors.

Signed-off-by: NeilBrown <neilb@suse.com>
Incremental.c

index 304cc6d7cadf1830bb5a8de89736f6f7fbe5f8aa..43fddfdc87b1bdbb27fbd013f7afcf46a4f33e27 100644 (file)
@@ -231,11 +231,6 @@ int Incremental(struct mddev_dev *devlist, struct context *c,
                                devname);
                goto out;
        }
-       /* Skip the clustered ones. This should be started by
-        * clustering resource agents
-        */
-       if (info.array.state & (1 << MD_SB_CLUSTERED))
-               goto out;
 
        /* 3a/ if not, check for homehost match.  If no match, continue
         * but don't trust the 'name' in the array. Thus a 'random' minor
@@ -317,6 +312,12 @@ int Incremental(struct mddev_dev *devlist, struct context *c,
 
        if (mdfd < 0) {
 
+               /* Skip the clustered ones. This should be started by
+                * clustering resource agents
+                */
+               if (info.array.state & (1 << MD_SB_CLUSTERED))
+                       goto out;
+
                /* Couldn't find an existing array, maybe make a new one */
                mdfd = create_mddev(match ? match->devname : NULL,
                                    name_to_use, c->autof, trustworthy, chosen_name);