NeilBrown: Assemble: clean up properly if we cannot add the bitmap file.

Martin F. Krafft madduck at alioth.debian.org
Mon May 24 09:21:05 UTC 2010


Module: mdadm
Branch: upstream
Commit: 24af7a8744d947b5c3f062af55312c044ca12a95
URL:    http://git.debian.org/?p=pkg-mdadm/mdadm.git;a=commit;h=24af7a8744d947b5c3f062af55312c044ca12a95

Author: NeilBrown <neilb at suse.de>
Date:   Wed Feb 24 12:17:17 2010 +1100

Assemble: clean up properly if we cannot add the bitmap file.

If we find we cannot add the requested bitmap file when
assembling the array, then make sure to clean up properly
and don't leave a half-configured array.

Signed-off-by: NeilBrown <neilb at suse.de>

---

 Assemble.c |    4 ++++
 1 files changed, 4 insertions(+), 0 deletions(-)

diff --git a/Assemble.c b/Assemble.c
index 23cc438..1f73a5b 100644
--- a/Assemble.c
+++ b/Assemble.c
@@ -1057,12 +1057,14 @@ int Assemble(struct supertype *st, char *mddev,
 		if (rv) {
 			fprintf(stderr, Name ": failed to set array info for %s: %s\n",
 				mddev, strerror(errno));
+			ioctl(mdfd, STOP_ARRAY, NULL);
 			close(mdfd);
 			return 1;
 		}
 		if (ident->bitmap_fd >= 0) {
 			if (ioctl(mdfd, SET_BITMAP_FILE, ident->bitmap_fd) != 0) {
 				fprintf(stderr, Name ": SET_BITMAP_FILE failed.\n");
+				ioctl(mdfd, STOP_ARRAY, NULL);
 				close(mdfd);
 				return 1;
 			}
@@ -1072,12 +1074,14 @@ int Assemble(struct supertype *st, char *mddev,
 			if (bmfd < 0) {
 				fprintf(stderr, Name ": Could not open bitmap file %s\n",
 					ident->bitmap_file);
+				ioctl(mdfd, STOP_ARRAY, NULL);
 				close(mdfd);
 				return 1;
 			}
 			if (ioctl(mdfd, SET_BITMAP_FILE, bmfd) != 0) {
 				fprintf(stderr, Name ": Failed to set bitmapfile for %s\n", mddev);
 				close(bmfd);
+				ioctl(mdfd, STOP_ARRAY, NULL);
 				close(mdfd);
 				return 1;
 			}




More information about the pkg-mdadm-commits mailing list