if (fd < 0)
return;
if (fstat(fd, &st) == -1) {
- dprintf("%s: Invalid fd %d\n", __func__, fd);
+ dprintf("Invalid fd %d\n", fd);
return;
}
if (st.st_nlink == 0) {
- dprintf("%s: fd %d was deleted\n", __func__, fd);
+ dprintf("fd %d was deleted\n", fd);
return;
}
if (fd > *maxfd)
n = read_attr(buf, 30, fd);
if (n <= 0) {
- dprintf("%s: Failed to read resync_start (%d)\n",
- __func__, fd);
+ dprintf("Failed to read resync_start (%d)\n", fd);
return;
}
if (strncmp(buf, "none", 4) == 0)
struct mdinfo *mdi;
int ret = 0;
int count = 0;
+ struct timeval tv;
a->next_state = bad_word;
a->next_action = bad_action;
}
}
- if (a->curr_state > inactive &&
- a->prev_state == inactive) {
- /* array has been started
- * possible that container operation has to be completed
- */
- a->container->ss->set_array_state(a, 0);
- }
+ gettimeofday(&tv, NULL);
+ dprintf("(%d): %ld.%06ld state:%s prev:%s action:%s prev: %s start:%llu\n",
+ a->info.container_member,
+ tv.tv_sec, tv.tv_usec,
+ array_states[a->curr_state],
+ array_states[a->prev_state],
+ sync_actions[a->curr_action],
+ sync_actions[a->prev_action],
+ a->info.resync_start
+ );
+
if ((a->curr_state == bad_word || a->curr_state <= inactive) &&
a->prev_state > inactive) {
/* array has been stopped */
if (sync_completed > a->last_checkpoint)
a->last_checkpoint = sync_completed;
- if (deactivate || a->curr_state >= clean)
- a->container->ss->sync_metadata(a->container);
- dprintf("%s(%d): state:%s action:%s next(", __func__, a->info.container_member,
+ a->container->ss->sync_metadata(a->container);
+ dprintf("(%d): state:%s action:%s next(", a->info.container_member,
array_states[a->curr_state], sync_actions[a->curr_action]);
/* Effect state changes in the array */
if (a->next_state != bad_word) {
- dprintf(" state:%s", array_states[a->next_state]);
+ dprintf_cont(" state:%s", array_states[a->next_state]);
write_attr(array_states[a->next_state], a->info.state_fd);
}
if (a->next_action != bad_action) {
write_attr(sync_actions[a->next_action], a->action_fd);
- dprintf(" action:%s", sync_actions[a->next_action]);
+ dprintf_cont(" action:%s", sync_actions[a->next_action]);
}
for (mdi = a->info.devs; mdi ; mdi = mdi->next) {
if (mdi->next_state & DS_UNBLOCK) {
- dprintf(" %d:-blocked", mdi->disk.raid_disk);
+ dprintf_cont(" %d:-blocked", mdi->disk.raid_disk);
write_attr("-blocked", mdi->state_fd);
}
*/
remove_result = write_attr("remove", mdi->state_fd);
if (remove_result > 0) {
- dprintf(" %d:removed", mdi->disk.raid_disk);
+ dprintf_cont(" %d:removed", mdi->disk.raid_disk);
close(mdi->state_fd);
close(mdi->recovery_fd);
mdi->state_fd = -1;
}
if (mdi->next_state & DS_INSYNC) {
write_attr("+in_sync", mdi->state_fd);
- dprintf(" %d:+in_sync", mdi->disk.raid_disk);
+ dprintf_cont(" %d:+in_sync", mdi->disk.raid_disk);
}
}
- dprintf(" )\n");
+ dprintf_cont(" )\n");
/* move curr_ to prev_ */
a->prev_state = a->curr_state;
monitor_loop_cnt |= 1;
rv = pselect(maxfd+1, NULL, NULL, &rfds, &ts, &set);
monitor_loop_cnt += 1;
- if (rv == -1 && errno == EINTR)
- rv = 0;
+ if (rv == -1) {
+ if (errno == EINTR) {
+ rv = 0;
+ dprintf("monitor: caught signal\n");
+ } else
+ dprintf("monitor: error %d in pselect\n",
+ errno);
+ }
#ifdef DEBUG
- dprint_wake_reasons(&rfds);
+ else
+ dprint_wake_reasons(&rfds);
#endif
container->retry_soon = 0;
}