]> git.ipfire.org Git - thirdparty/mdadm.git/blobdiff - Assemble.c
main: remove use of uninitialized 'rv'.
[thirdparty/mdadm.git] / Assemble.c
index 245e2138300e65718b341a65eac83a5eefe70346..be4d8c962722731f7f587150619544490216844c 100644 (file)
@@ -250,7 +250,9 @@ static int select_devices(struct mddev_dev *devlist,
                                        pr_err("no recogniseable superblock on %s\n",
                                               devname);
                                tmpdev->used = 2;
-                       } else if (tst->ss->load_super(tst,dfd, NULL)) {
+                       } else if ((tst->ignore_hw_compat = 0),
+                                  tst->ss->load_super(tst, dfd,
+                                                      report_mismatch ? devname : NULL)) {
                                if (report_mismatch)
                                        pr_err("no RAID superblock on %s\n",
                                               devname);
@@ -635,7 +637,13 @@ static int load_devices(struct devs *devices, char *devmap,
 
                        if (strcmp(c->update, "byteorder") == 0)
                                err = 0;
-                       else
+                       else if (strcmp(c->update, "home-cluster") == 0) {
+                               tst->cluster_name = c->homecluster;
+                               tst->ss->write_bitmap(tst, dfd, NameUpdate);
+                       } else if (strcmp(c->update, "nodes") == 0) {
+                               tst->nodes = c->nodes;
+                               err = tst->ss->write_bitmap(tst, dfd, NodeNumUpdate);
+                       } else
                                err = tst->ss->update_super(tst, content, c->update,
                                                            devname, c->verbose,
                                                            ident->uuid_set,
@@ -1337,7 +1345,7 @@ try_again:
                       mddev ? mddev : "further assembly");
 
        content = &info;
-       if (st)
+       if (st && c->force)
                st->ignore_hw_compat = 1;
        num_devs = select_devices(devlist, ident, &st, &content, c,
                                  inargv, auto_assem);