On Tue, 7 Sep 1999 [EMAIL PROTECTED] wrote:
> Gerard wrote:
> > By the way, I donnot have seen yet this mechanism correctly implemented.
> > For example, it is not so in FreeBSD-CAM, and I can argue on this point
> > if people want me to do so.
>
> I realy want to see your argument.
> Go ahead, please ...
I donnot want to have problems with who you know, so I just will be very
general.
In the T10-CAM, the queuing is based on the following:
1) There is no HA queue to be handled by upper layers. If an HA is limited
about the number of outstanding commands, it must handle that by
its driver (I mean the SIM).
2) The SIM maintains queues per logical devices. These queues are
physically handled by SIM and virtually shared by peripheral drivers.
The problem with current SCSI access methods is this damned HA queue.
The reason could be that implementors have soldered in their mind their
preferred SCSI boards that is either mailbox-based or slot-based.
The HA must be considered as a path to devices and the XPT layer has only
to route CCBs to an HA that offers a path to the corresponding device.
No queuing is desirable in that layer.
An SCSI AM that handles both HA queuing and device queuing is pain in the
ass to make working reliably, especially during error recovery.
When I read CAM3 for the first time, I imagined the following solution for
a sym53c8xx SIM for CAM3. On sym53c8xx chips, an IO can be associated with
a full 32 bits address (so not slot based).
1) The driver would use a buffer between the CPU and the SCSI processor
of 2*N + 2 entries (+1 for some idle task)
3) The driver would insert a special JOB every N*IO jobs. On this special
JOB, the SCSI processor would just tell the CPU (by INT) that previous
N entries are free.
3) Use a limited DONE queue with synchronisation between the C code and
the SCSI processor (using INT) when this queue overflows.
A driver designed this way is virtually able to route an unlimited number
of commands to devices (In fact, 15*64*256=245760 possibles tagged
commands for 15 devices/64 LUN/256 tags).
My opinion is that a well-designed SCSI access method (CAM3 is so, IMHO),
must not implement HA queues at all in the XPT (leave the SIM deal with HA
limitations) but just require SIMs to maintain logical device queues as
specified in CAM3.
Everything get a lot simpler when design is fine and specifications well
understood.
Regards,
G�rard
-
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to [EMAIL PROTECTED]