On Mon, 2011-02-28 at 06:24 -0700, Matthew Wilcox wrote: > On Sun, Feb 27, 2011 at 11:21:20PM -0800, john smith wrote: > > How does the queuecommand get called for concurrent application threads before 2.6.37? > > Before 2.6.37, there's a per-host lock acquired in the scsi layer that > prevents queuecommand being called twice for the same host simultaneously. > If your driver is drivign two cards, then it can still be executing > twice ... but it's a rare driver that has global instead of per-host > state to protect. Actually, that's not quite correct. What happened in 2.6.37 is that the host lock was no longer taken prior to entry to ->queuecommand. Before that most of the threaded HBAs dropped it immediately in the ->queuecommand routines so they could be multi threaded, which meant all we were doing a pointless lock shuffle. What actually governs the threading is the ioscheduler entry context to the request function, which tends to be governed by how the I/O is called at the top. James -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html