]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
Grow: Simplify error paths in Grow_addbitmap()
authorJes Sorensen <Jes.Sorensen@redhat.com>
Thu, 12 May 2016 18:37:44 +0000 (14:37 -0400)
committerJes Sorensen <Jes.Sorensen@redhat.com>
Thu, 12 May 2016 19:27:18 +0000 (15:27 -0400)
This gets rid of some repeated exit paths, making the code a little
cleaner.

Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
Grow.c

diff --git a/Grow.c b/Grow.c
index cdd9d05b74eed849bcb9a016218af8a6ceab094f..fc454b8656f5694f5863a8afd7416a8c56d39b89 100755 (executable)
--- a/Grow.c
+++ b/Grow.c
@@ -423,22 +423,22 @@ int Grow_addbitmap(char *devname, int fd, struct context *c, struct shape *s)
                                continue;
                        rv = st->ss->load_super(st, fd2, NULL);
                        if (!rv) {
-                               if (!st->ss->add_internal_bitmap(
-                                           st, &s->bitmap_chunk, c->delay,
-                                           s->write_behind, bitmapsize,
-                                           offset_setable, major))
-                                       st->ss->write_bitmap(st, fd2, NodeNumUpdate);
-                               else {
+                               rv = st->ss->add_internal_bitmap(
+                                       st, &s->bitmap_chunk, c->delay,
+                                       s->write_behind, bitmapsize,
+                                       offset_setable, major);
+                               if (!rv) {
+                                       st->ss->write_bitmap(st, fd2,
+                                                            NodeNumUpdate);
+                               } else {
                                        pr_err("failed to create internal bitmap - chunksize problem.\n");
-                                       close(fd2);
-                                       return 1;
                                }
                        } else {
                                pr_err("failed to load super-block.\n");
-                               close(fd2);
-                               return 1;
                        }
                        close(fd2);
+                       if (rv)
+                               return 1;
                }
                if (offset_setable) {
                        st->ss->getinfo_super(st, mdi, NULL);