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