4ac0f8fa3e
Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
47 lines
1.7 KiB
Diff
47 lines
1.7 KiB
Diff
From 50927b1323a4cfcbf3729ff552c496695d6199eb Mon Sep 17 00:00:00 2001
|
|
From: Adam Kwolek <adam.kwolek@intel.com>
|
|
Date: Tue, 7 Feb 2012 15:03:35 +0100
|
|
Subject: [PATCH 05/12] Fix: Sometimes mdmon throws core dump during reshape
|
|
|
|
Problem was found during reshaping 2 volumes /raid0 and raid5/ in container.
|
|
Sometimes mdmon throws core dump due to NULL pointer exception.
|
|
|
|
Problem occurs in scenario:
|
|
- managemon: is about spare activation (degraded raid4 volume == raid0 under takeover)
|
|
- managemon: detect level change and signals monitor (manage_member() calls replace_array())
|
|
- monitor: detects transition raid4/5->raid0 and sets a->container to NULL
|
|
to indicate array deactivation
|
|
- managemon : continues his work and tries to activate spare (a->check_degraded is set).
|
|
NULL pointer is passed to metadata handler activate_spare()
|
|
Core dump is generated.
|
|
|
|
To resolve this situation managemon (after monitor kick) checks again
|
|
a->container pointer to learn if current array is not to be deactivated.
|
|
|
|
Signed-off-by: Adam Kwolek <adam.kwolek@intel.com>
|
|
Signed-off-by: NeilBrown <neilb@suse.de>
|
|
---
|
|
managemon.c | 6 ++++++
|
|
1 files changed, 6 insertions(+), 0 deletions(-)
|
|
|
|
diff --git a/managemon.c b/managemon.c
|
|
index cde0d8b..6c21ecb 100644
|
|
--- a/managemon.c
|
|
+++ b/managemon.c
|
|
@@ -486,6 +486,12 @@ static void manage_member(struct mdstat_ent *mdstat,
|
|
}
|
|
}
|
|
|
|
+ /* we are after monitor kick,
|
|
+ * so container field can be cleared - check it again
|
|
+ */
|
|
+ if (a->container == NULL)
|
|
+ return;
|
|
+
|
|
/* We don't check the array while any update is pending, as it
|
|
* might container a change (such as a spare assignment) which
|
|
* could affect our decisions.
|
|
--
|
|
1.7.4.4
|
|
|