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@xxxxxxxx> --- monitor.c | 5 ++--- 1 files changed, 2 insertions(+), 3 deletions(-) diff --git a/monitor.c b/monitor.c index 60c5d5a..47432b2 100644 --- a/monitor.c +++ b/monitor.c @@ -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 -- 1.7.1 -- To unsubscribe from this list: send the line "unsubscribe linux-raid" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html