On Tue, Nov 16, 2010 at 10:29 PM, Jeff Garzik<jeff@xxxxxxxxxx> wrote:
+ spin_lock(shost->host_lock);
+ scsi_cmd_get_serial(shost, cmd);
spin_unlock(shost->host_lock);
This is just sad.
How important is that serial number? So important that we need to do a
spinlock over it here? And it _must_ be per-shost?
There are only a few drivers left that actually make use of a serial
number. Of those, the only modern ones are qla4, lpfc, mpt2sas and
megaraid.
So the next logical step seems to be eliminate the overloading of the
serial number zero value, which removes the last mid-layer use (dpt_i2o
seems to abuse this unnecessarily as well), then the serial number code
can be pushed down into the queuecommand routines of only those drivers
that actually use it. None of the modern ones seems to have a
legitimate use, so I think their uses can mostly be eliminated. Thus,
we might be able to get away with a simple queuecommand push down and
never bother with atomics for this (since it's unlikely the legacy users
would convert away from a lock wrapping their queuecommand routines).