]> git.ipfire.org Git - thirdparty/mdadm.git/commit - managemon.c
FIX: Mdmon crashes after changing RAID level from 1 to 0
authorLukasz Dorau <lukasz.dorau@intel.com>
Thu, 1 Sep 2011 13:10:34 +0000 (15:10 +0200)
committerNeilBrown <neilb@suse.de>
Tue, 6 Sep 2011 05:19:58 +0000 (15:19 +1000)
commitba714450698a966d184f5337235b100cbfa8685e
treeb6a1f482af99439ef2cbc5e2d4afbbfa71cd1ae7
parent3960e579bfe77b3e16a4a6d8546019ff794eb515
FIX: Mdmon crashes after changing RAID level from 1 to 0

Description of the bug:
Sometimes mdmon crashes after changing RAID level from 1 to 0 (takeover).

Cause of the bug:
The managemon marks an active_array for removal from monitoring
by assigning a->container to NULL value (in the "manage_member" function).
Sometimes (during stress test) it happens right when the monitor
is in the "read_and_act" function and a->container pointer is in use.
This causes the monitor crashes.

Solution:
The active array has to be marked for removal in another way
than setting NULL pointer when it can be in use.
A new field "to_remove" was added to the "active_array" structure.
It is used in the managemon to mark a container to remove
(instead of the old assigment: a->container = NULL)
and monitor checks it to determine if the array should be removed.
The field "to_remove" should be checked in some other places
to avoid managing of the array which is going to be removed.

Signed-off-by: Lukasz Dorau <lukasz.dorau@intel.com>
Signed-off-by: NeilBrown <neilb@suse.de>
managemon.c
mdmon.h
monitor.c