I would think this would run into the keventd "problem", where $N
processes can lock out another?
IMO a lot of these could potentially be simply started as brand new
threads, when an exception arises.
No, it does not.
It is used for PIO data transfer, so it merely has to respond quickly,
which rules out keventd. You also don't want PIO data xfer for port A
blocked, sitting around waiting for PIO data xfer to complete on port C.
So, we merely need fast-reacting threads that keventd will not block.
We do not need per-CPU threads.
Again, I think a model where threads are created on demand, and reaped
after inactivity, would fit here. As I feel it would fit with many
other non-libata drivers.
That is used by libata exception handler, for hotpug and such. My main
worry with keventd is that we might get stuck behind an unrelated
process for an undefined length of time.
IMO the best model would be to create ata_aux thread on demand, and kill
it if it hasn't been used recently.
Nod. I've never thought we needed this many threads. At least it
doesn't scale out of control for $BigNum-CPU boxen.
As the name implies, this is SCSI exception handling thread. Although
some synchronization is required, this could probably work with an
on-demand thread creation model too.
This kernel thread is used as a "bottom half" handler for the PS2 mouse
interrupt. This one is a bit more justifiable.
Agreed.
Jeff
-