02e1f69890
There some bugs need to be fixed. bug2127101 Reshape is started with not allowed chunk size patch (super-intel: make freesize not required for chunk size migration) bug2139789 Installation hangs after RAID degradation bug2149292 mdadm: Couldn't open /dev/vda3 for write - not zeroing patch (mdadm/udev: Don't handle change event on raw devices) bug2151209 Can't remove disk when unplugging a disk patch (incremental, manage: do not verify if remove is safe) bug2148945 mdadm --fail /dev/md0 /dev/pmem1s failed patch (Manage: do not check array state when drive is removed) Resolves: rhbz#2127101, rhbz#2139789, rhbz#2149292, rhbz#2151209, rhbz#2148945 Signed-off-by: Xiao Ni <xni@redhat.com>
59 lines
1.9 KiB
Diff
59 lines
1.9 KiB
Diff
From 8b668d4aa3305af5963162b7499b128bd71f8f29 Mon Sep 17 00:00:00 2001
|
|
From: Lukasz Florczak <lukasz.florczak@linux.intel.com>
|
|
Date: Thu, 22 Sep 2022 08:29:50 +0200
|
|
Subject: [PATCH 61/83] Mdmonitor: Omit non-md devices
|
|
|
|
Fix segfault commit [1] introduced check whether given device is
|
|
mddevice, but it happend to terminate Mdmonitor if at least one of given
|
|
devices didn't fulfill that condition. In result Mdmonitor service was
|
|
no longer started on boot (with --scan option) when config contained some
|
|
non-existent array entry.
|
|
|
|
This commit introduces ommiting non-md devices so scan option can still
|
|
be used when config is wrong and allow Mdmonitor service to run on boot.
|
|
|
|
Giving a list of devices to monitor containing non-existing or
|
|
non-md devices will result in monitoring only confirmed mddevices.
|
|
|
|
[1] https://git.kernel.org/pub/scm/utils/mdadm/mdadm.git/commit/?id=e702f392959d1c2ad2089e595b52235ed97b4e18
|
|
|
|
Signed-off-by: Lukasz Florczak <lukasz.florczak@linux.intel.com>
|
|
Signed-off-by: Jes Sorensen <jsorensen@fb.com>
|
|
---
|
|
Monitor.c | 12 ++++--------
|
|
1 file changed, 4 insertions(+), 8 deletions(-)
|
|
|
|
diff --git a/Monitor.c b/Monitor.c
|
|
index b4e954c6..7d7dc4d2 100644
|
|
--- a/Monitor.c
|
|
+++ b/Monitor.c
|
|
@@ -185,10 +185,8 @@ int Monitor(struct mddev_dev *devlist,
|
|
continue;
|
|
if (strcasecmp(mdlist->devname, "<ignore>") == 0)
|
|
continue;
|
|
- if (!is_mddev(mdlist->devname)) {
|
|
- free_statelist(statelist);
|
|
- return 1;
|
|
- }
|
|
+ if (!is_mddev(mdlist->devname))
|
|
+ continue;
|
|
|
|
st = xcalloc(1, sizeof *st);
|
|
snprintf(st->devname, MD_NAME_MAX + sizeof("/dev/md/"),
|
|
@@ -208,10 +206,8 @@ int Monitor(struct mddev_dev *devlist,
|
|
for (dv = devlist; dv; dv = dv->next) {
|
|
struct state *st;
|
|
|
|
- if (!is_mddev(dv->devname)) {
|
|
- free_statelist(statelist);
|
|
- return 1;
|
|
- }
|
|
+ if (!is_mddev(dv->devname))
|
|
+ continue;
|
|
|
|
st = xcalloc(1, sizeof *st);
|
|
mdlist = conf_get_ident(dv->devname);
|
|
--
|
|
2.38.1
|
|
|