Blame SOURCES/0061-Mdmonitor-Omit-non-md-devices.patch

2ad819
From 8b668d4aa3305af5963162b7499b128bd71f8f29 Mon Sep 17 00:00:00 2001
2ad819
From: Lukasz Florczak <lukasz.florczak@linux.intel.com>
2ad819
Date: Thu, 22 Sep 2022 08:29:50 +0200
2ad819
Subject: [PATCH 61/83] Mdmonitor: Omit non-md devices
2ad819
2ad819
Fix segfault commit [1] introduced check whether given device is
2ad819
mddevice, but it happend to terminate Mdmonitor if at least one of given
2ad819
devices didn't fulfill that condition. In result Mdmonitor service was
2ad819
no longer started on boot (with --scan option) when config contained some
2ad819
non-existent array entry.
2ad819
2ad819
This commit introduces ommiting non-md devices so scan option can still
2ad819
be used when config is wrong and allow Mdmonitor service to run on boot.
2ad819
2ad819
Giving a list of devices to monitor containing non-existing or
2ad819
non-md devices will result in monitoring only confirmed mddevices.
2ad819
2ad819
[1] https://git.kernel.org/pub/scm/utils/mdadm/mdadm.git/commit/?id=e702f392959d1c2ad2089e595b52235ed97b4e18
2ad819
2ad819
Signed-off-by: Lukasz Florczak <lukasz.florczak@linux.intel.com>
2ad819
Signed-off-by: Jes Sorensen <jsorensen@fb.com>
2ad819
---
2ad819
 Monitor.c | 12 ++++--------
2ad819
 1 file changed, 4 insertions(+), 8 deletions(-)
2ad819
2ad819
diff --git a/Monitor.c b/Monitor.c
2ad819
index b4e954c6..7d7dc4d2 100644
2ad819
--- a/Monitor.c
2ad819
+++ b/Monitor.c
2ad819
@@ -185,10 +185,8 @@ int Monitor(struct mddev_dev *devlist,
2ad819
 				continue;
2ad819
 			if (strcasecmp(mdlist->devname, "<ignore>") == 0)
2ad819
 				continue;
2ad819
-			if (!is_mddev(mdlist->devname)) {
2ad819
-				free_statelist(statelist);
2ad819
-				return 1;
2ad819
-			}
2ad819
+			if (!is_mddev(mdlist->devname))
2ad819
+				continue;
2ad819
 
2ad819
 			st = xcalloc(1, sizeof *st);
2ad819
 			snprintf(st->devname, MD_NAME_MAX + sizeof("/dev/md/"),
2ad819
@@ -208,10 +206,8 @@ int Monitor(struct mddev_dev *devlist,
2ad819
 		for (dv = devlist; dv; dv = dv->next) {
2ad819
 			struct state *st;
2ad819
 
2ad819
-			if (!is_mddev(dv->devname)) {
2ad819
-				free_statelist(statelist);
2ad819
-				return 1;
2ad819
-			}
2ad819
+			if (!is_mddev(dv->devname))
2ad819
+				continue;
2ad819
 
2ad819
 			st = xcalloc(1, sizeof *st);
2ad819
 			mdlist = conf_get_ident(dv->devname);
2ad819
-- 
2ad819
2.38.1
2ad819