]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
FIX: Add spare throws exception (v2)
authorAdam Kwolek <adam.kwolek@intel.com>
Sun, 20 Mar 2011 04:47:17 +0000 (15:47 +1100)
committerNeilBrown <neilb@suse.de>
Sun, 20 Mar 2011 04:47:17 +0000 (15:47 +1100)
sync_metadata() requires st->sb to be loaded, otherwise exception is
generated.  This fails expansion, because spares cannot be added.

metadata update uses tst instead st pointer, it is better than
loading anchor for st as I proposed previously.

Signed-off-by: Adam Kwolek <adam.kwolek@intel.com>
Signed-off-by: NeilBrown <neilb@suse.de>
Manage.c

index 5808557ca90dfaea24007740db1fda65962c7a3f..0a966a861ccb5f323e1d2d10eefdee593f890984 100644 (file)
--- a/Manage.c
+++ b/Manage.c
@@ -746,7 +746,7 @@ int Manage_subdevs(char *devname, int fd,
                                                                        st, NULL, update,
                                                                        devname, verbose, 0, NULL);
                                                        if (rv == 0)
                                                                        st, NULL, update,
                                                                        devname, verbose, 0, NULL);
                                                        if (rv == 0)
-                                                               rv = tst->ss->store_super(st, tfd);
+                                                               rv = st->ss->store_super(st, tfd);
                                                        close(tfd);
                                                        tfd = -1;
                                                        if (rv != 0) {
                                                        close(tfd);
                                                        tfd = -1;
                                                        if (rv != 0) {
@@ -914,10 +914,10 @@ int Manage_subdevs(char *devname, int fd,
                                        close(container_fd);
                                        return 1;
                                }
                                        close(container_fd);
                                        return 1;
                                }
-                               if (st->update_tail)
-                                       flush_metadata_updates(st);
+                               if (tst->update_tail)
+                                       flush_metadata_updates(tst);
                                else
                                else
-                                       tst->ss->sync_metadata(st);
+                                       tst->ss->sync_metadata(tst);
 
                                sra = sysfs_read(container_fd, -1, 0);
                                if (!sra) {
 
                                sra = sysfs_read(container_fd, -1, 0);
                                if (!sra) {