1
0
mirror of git://sourceware.org/git/lvm2.git synced 2024-12-21 13:34:40 +03:00

reduce some if/else complexity

This commit is contained in:
Alasdair Kergon 2007-01-15 22:37:40 +00:00
parent 528329f199
commit d5ec3c8889

View File

@ -1295,14 +1295,15 @@ static void _cleanup_unused_threads(void)
_lock_mutex();
while ((l = list_first(&_thread_registry_unused))) {
thread = list_item(l, struct thread_status);
if (thread->processing) {
goto out; /* cleanup on the next round */
}
if (thread->processing)
break; /* cleanup on the next round */
if (thread->status == DM_THREAD_RUNNING) {
thread->status = DM_THREAD_SHUTDOWN;
goto out;
} else if (thread->status == DM_THREAD_SHUTDOWN) {
break;
}
if (thread->status == DM_THREAD_SHUTDOWN) {
if (!thread->events) {
/* turn codes negative -- should we be returning this? */
ret = _terminate_thread(thread);
@ -1315,22 +1316,26 @@ static void _cleanup_unused_threads(void)
strerror(-ret));
stack;
}
goto out;
} else {
list_del(l);
syslog(LOG_ERR,
"thread can't be on unused list unless !thread->events");
thread->status = DM_THREAD_RUNNING;
LINK_THREAD(thread);
break;
}
} else if (thread->status == DM_THREAD_DONE) {
list_del(l);
syslog(LOG_ERR,
"thread can't be on unused list unless !thread->events");
thread->status = DM_THREAD_RUNNING;
LINK_THREAD(thread);
continue;
}
if (thread->status == DM_THREAD_DONE) {
list_del(l);
pthread_join(thread->thread, NULL);
_lib_put(thread->dso_data);
_free_thread_status(thread);
}
}
out:
_unlock_mutex();
}