diff options
author | mwilck@arcor.de <mwilck@arcor.de> | 2013-10-25 12:07:38 +0200 |
---|---|---|
committer | NeilBrown <neilb@suse.de> | 2013-04-23 06:55:32 +0200 |
commit | 6b374ba36843e3e72bf433069bfd8541102958f3 (patch) | |
tree | 6a5f6317ce990c7f52f5a4742eca2b8ac7cb1553 /monitor.c | |
parent | monitor: read_and_act: handle race conditions for resync_start (diff) | |
download | mdadm-6b374ba36843e3e72bf433069bfd8541102958f3.tar.xz mdadm-6b374ba36843e3e72bf433069bfd8541102958f3.zip |
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>
Diffstat (limited to 'monitor.c')
-rw-r--r-- | monitor.c | 5 |
1 files changed, 2 insertions, 3 deletions
@@ -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 |