Kernel threads

From: linux-os \(Dick Johnson\)
Date: Tue Mar 06 2007 - 11:04:35 EST



Hello,

In linux-2.6.16.24, there is a problem with kernel threads
and the aic79xx.c driver.

When nash is executing /initrd/linuxrc in the initial RAM disk
during boot, it will be installing drivers. One driver, aic79xx.c
creates some kernel threads that will exit after the initialization
procedure. Actually the number of tasks depends upon the number
of disks found as the driver spawns these tasks so initialization
can occur in the background. The kernel tasks have been 'parented'
to init. This may be fine for the real init, but nash and other
shells receive the SIGCHLD signal and think that the fork()/exec()
they have executed is complete. This makes nash insert drivers
when the needed previous ones have not yet initialized. Also, when
booting a shell, the signals from the exiting kernel tasks confuse
it.

I think the top-level thread, kthread, should be reaping children
instead of init, which in some cases isn't even running yet.

Any comments?

The current work-around of putting `sleep 10` in linuxrc after
installing each driver is a hack of the worse kind. Especially,
considering an Adaptec controller with many drives attached may
require 'sleep 60'!


Cheers,
Dick Johnson
Penguin : Linux version 2.6.16.24 on an i686 machine (5592.68 BogoMips).
New book: http://www.AbominableFirebug.com/
_


****************************************************************
The information transmitted in this message is confidential and may be privileged. Any review, retransmission, dissemination, or other use of this information by persons or entities other than the intended recipient is prohibited. If you are not the intended recipient, please notify Analogic Corporation immediately - by replying to this message or by sending an email to DeliveryErrors@xxxxxxxxxxxx - and destroy all copies of this information, including any attachments, without reading or disclosing them.

Thank you.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/