Re: RAID0 DeviceDisappeared event happen when restart mdmonitor service

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

 



On Mon, 17 Sep 2012 11:23:40 +0800 "Johnson Yan" <johnson_yan@xxxxxxxxx>
wrote:

> Hi Neil,
> Thank you for the clarification.
> I can remove the RAID0 MD's information from /etc/mdadm.conf to omit the monitor for RAID0, then so such event occurred when restart mdmonitor service, but the system won't re-assemble these RAID0 MD after every system reboot.
> Do you have any good advice?

I do now...
I've just committed the following patch which should suppress the message.
It will be in mdadm-3.2.6 to be released soon.

NeilBrown





From f1661bd71bec6a8ae1919dc32a227c6fb37843f2 Mon Sep 17 00:00:00 2001
From: NeilBrown <neilb@xxxxxxx>
Date: Wed, 24 Oct 2012 13:09:09 +1100
Subject: [PATCH] Monitor: don't complain about non-monitorable arrays in
 mdadm.conf

If we are asked to monitor a RAID0 or Linear - which cannot be
monitored - we complain with "Device Disappeared .... Wrong-Level".

However if the RAID0 or Linear is being requested because it is
in mdadm.conf then the message is inappropriate and confusing.

So track which arrays are added from the config file, and suppress
that message in that case.

Reported-by: "Johnson Yan" <johnson_yan@xxxxxxxxx>
Signed-off-by: NeilBrown <neilb@xxxxxxx>

diff --git a/Monitor.c b/Monitor.c
index 69cd8e0..c4d57c3 100644
--- a/Monitor.c
+++ b/Monitor.c
@@ -37,6 +37,7 @@ struct state {
 	int err;
 	char *spare_group;
 	int active, working, failed, spare, raid;
+	int from_config;
 	int expected_spares;
 	int devstate[MAX_DISKS];
 	dev_t devid[MAX_DISKS];
@@ -178,6 +179,7 @@ int Monitor(struct mddev_dev *devlist,
 			st->next = statelist;
 			st->devnum = INT_MAX;
 			st->percent = RESYNC_UNKNOWN;
+			st->from_config = 1;
 			st->expected_spares = mdlist->spare_disks;
 			if (mdlist->spare_group)
 				st->spare_group = xstrdup(mdlist->spare_group);
@@ -475,7 +477,7 @@ static int check_array(struct state *st, struct mdstat_ent *mdstat,
 	 * have a device disappear than all of them that can
 	 */
 	if (array.level == 0 || array.level == -1) {
-		if (!st->err)
+		if (!st->err && !st->from_config)
 			alert("DeviceDisappeared", dev, "Wrong-Level", ainfo);
 		st->err = 1;
 		close(fd);


Attachment: signature.asc
Description: PGP signature


[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