[PATCH] mdadm.c: Fix error handling for --zero-superblock

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



When Kill() cannot open device or find superblock it return the same
error and mdadm ignores it.
Change error handling in Kill() function. Return error if device is
busy, ignore it only when superblock doesn't exist- assume that metadata
is zeroed.

Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk@xxxxxxxxx>
---
 Kill.c  | 5 +++--
 mdadm.c | 2 +-
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/Kill.c b/Kill.c
index ff52561..d4767e2 100644
--- a/Kill.c
+++ b/Kill.c
@@ -37,7 +37,8 @@ int Kill(char *dev, struct supertype *st, int force, int verbose, int noexcl)
 	 * Returns:
 	 *  0 - a zero superblock was successfully written out
 	 *  1 - failed to write the zero superblock
-	 *  2 - failed to open the device or find a superblock.
+	 *  2 - failed to open the device.
+	 *  4 - failed to find a superblock.
 	 */
 
 	int fd, rv = 0;
@@ -57,7 +58,7 @@ int Kill(char *dev, struct supertype *st, int force, int verbose, int noexcl)
 		if (verbose >= 0)
 			pr_err("Unrecognised md component device - %s\n", dev);
 		close(fd);
-		return 2;
+		return 4;
 	}
 	st->ignore_hw_compat = 1;
 	rv = st->ss->load_super(st, fd, dev);
diff --git a/mdadm.c b/mdadm.c
index 1cf5c18..25a1abd 100644
--- a/mdadm.c
+++ b/mdadm.c
@@ -1959,7 +1959,7 @@ static int misc_list(struct mddev_dev *devlist,
 					rv |= Kill(dv->devname, NULL, c->force, v, 0);
 					v = -1;
 				} while (rv == 0);
-				rv &= ~2;
+				rv &= ~4;
 			}
 			continue;
 		case 'Q':
-- 
1.8.3.1




[Index of Archives]     [Linux RAID Wiki]     [ATA RAID]     [Linux SCSI Target Infrastructure]     [Linux Block]     [Linux IDE]     [Linux SCSI]     [Linux Hams]     [Device Mapper]     [Device Mapper Cryptographics]     [Kernel]     [Linux Admin]     [Linux Net]     [GFS]     [RPM]     [git]     [Yosemite Forum]


  Powered by Linux