Messages in this thread Patch in this message | | | Date | Mon, 19 Jan 2009 13:45:31 +0100 | From | Cornelia Huck <> | Subject | [PATCH 2/3] async: Handle kthread_run() return codes. |
| |
If we fail to create the manager thread, fall back to non-fastboot. If we fail to create an async thread, try again after waiting for a bit.
Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
--- kernel/async.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-)
--- linux-2.6.orig/kernel/async.c +++ linux-2.6/kernel/async.c @@ -54,6 +54,7 @@ asynchronous and synchronous parts of th #include <linux/sched.h> #include <linux/init.h> #include <linux/kthread.h> +#include <linux/delay.h> #include <asm/atomic.h> static async_cookie_t next_cookie = 1; @@ -315,7 +316,11 @@ static int async_manager_thread(void *un ec = atomic_read(&entry_count); while (tc < ec && tc < MAX_THREADS) { - kthread_run(async_thread, NULL, "async/%i", tc); + if (IS_ERR(kthread_run(async_thread, NULL, "async/%i", + tc))) { + msleep(100); + continue; + } atomic_inc(&thread_count); tc++; } @@ -330,7 +335,9 @@ static int async_manager_thread(void *un static int __init async_init(void) { if (async_enabled) - kthread_run(async_manager_thread, NULL, "async/mgr"); + if (IS_ERR(kthread_run(async_manager_thread, NULL, + "async/mgr"))) + async_enabled = 0; return 0; }
| |