summaryrefslogtreecommitdiffstats
path: root/monitor.c
diff options
context:
space:
mode:
authorNeil Brown <neilb@suse.de>2008-06-12 10:13:28 +1000
committerNeil Brown <neilb@suse.de>2008-06-12 10:13:28 +1000
commit57632f4afb3588465454187ca6ab66ffb200b677 (patch)
tree1e16e191a29d82d312937deb7769c0ca853c286f /monitor.c
parent80d26cb2fd18f814e1493aae92357868e044ae8b (diff)
downloadmdadm-57632f4afb3588465454187ca6ab66ffb200b677.tar.gz
mdadm-57632f4afb3588465454187ca6ab66ffb200b677.tar.xz
mdadm-57632f4afb3588465454187ca6ab66ffb200b677.zip
Some fixes to make failures in ddf get handled properly.
Diffstat (limited to 'monitor.c')
-rw-r--r--monitor.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/monitor.c b/monitor.c
index d1f7c9e..f46f7b1 100644
--- a/monitor.c
+++ b/monitor.c
@@ -225,7 +225,7 @@ static int read_and_act(struct active_array *a)
a->curr_action = read_action(a->action_fd);
for (mdi = a->info.devs; mdi ; mdi = mdi->next) {
mdi->next_state = 0;
- if (mdi->state_fd > 0)
+ if (mdi->state_fd >= 0)
mdi->curr_state = read_dev_state(mdi->state_fd);
}
@@ -307,16 +307,16 @@ static int read_and_act(struct active_array *a)
if (a->next_action != bad_action)
write_attr(sync_actions[a->next_action], a->action_fd);
for (mdi = a->info.devs; mdi ; mdi = mdi->next) {
- if (mdi->next_state == DS_REMOVE && mdi->state_fd > 0) {
- int remove_err;
+ if (mdi->next_state == DS_REMOVE && mdi->state_fd >= 0) {
+ int remove_result;
write_attr("-blocked", mdi->state_fd);
/* the kernel may not be able to immediately remove the
* disk, we can simply wait until the next event to try
* again.
*/
- remove_err = write_attr("remove", mdi->state_fd);
- if (!remove_err) {
+ remove_result = write_attr("remove", mdi->state_fd);
+ if (remove_result > 0) {
close(mdi->state_fd);
mdi->state_fd = -1;
}