Jeff Garzik wrote: > Matthew Wilcox wrote: >> Can you tell me a bit more about these drivers? Would it be possible to >> convert them to one host/many channels, which would give us the exclusion >> we want? > > As a tangent, I would prefer a more "natural" representation than > current, where there is a 1-1 correspondence between scsi_host and ATA > controller instance, and a 1-1 correspondence between SCSI channels and > ATA ports. Currently, the biggest problem is the EH thread. SCSI EH is per host and entering entering SCSI EH means host-wide quiescence. > Alas _any_ change to the current setup requires special attention, > because it is tied intimately into master/slave exclusion and scheduling. > > I occasionally ponder what it would take to create an intelligent > request scheduling framework that takes into account inflexible hardware > bottlenecks like simplex (one command per controller, $n ports, $m > devices), master/slave (one command port, $m devices), NCQ ($n commands > per port, $m devices), port multipliers with their own bottlenecks, etc. > > I see a lot of common code patterns in this area, but we are all sorta > doing our own thing at a low level in drivers, because of subtle (and > not-so-subtle) differences in hardware queueing support. Amen. It's slow but things are being shifted from SCSI to block. EH can be shifted to block and made per-queue. Mapping the current SCSI EH architecture to it will take some work but after that changing ATA host <-> SCSI host mapping shouldn't be too difficult. Thanks. -- tejun - To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html