monitor: treat unreadable array_state as clean

Failure to read array_state can only mean the array has been
deleted by the kernel; it is not an indication that the array
is dirty.

Signed-off-by: Martin Wilck <mwilck@arcor.de>
Signed-off-by: NeilBrown <neilb@suse.de>
This commit is contained in:
mwilck@arcor.de 2013-10-25 12:07:38 +02:00 committed by NeilBrown
parent 40ae6f5f8e
commit 6b374ba368
1 changed files with 2 additions and 3 deletions

View File

@ -265,7 +265,7 @@ static int read_and_act(struct active_array *a)
*/
a->container->ss->set_array_state(a, 0);
}
if (a->curr_state <= inactive &&
if ((a->curr_state == bad_word || a->curr_state <= inactive) &&
a->prev_state > inactive) {
/* array has been stopped */
a->container->ss->set_array_state(a, 1);
@ -288,8 +288,7 @@ static int read_and_act(struct active_array *a)
a->container->ss->set_array_state(a, 1);
}
if (a->curr_state == active ||
a->curr_state == suspended ||
a->curr_state == bad_word)
a->curr_state == suspended)
ret |= ARRAY_DIRTY;
if (a->curr_state == readonly) {
/* Well, I'm ready to handle things. If readonly