--- James Bottomley <James.Bottomley@xxxxxxxxxxxx> wrote: > On Tue, 2006-05-16 at 15:24 -0700, Luben Tuikov wrote: > > "*after* the nexus is terminated"? > > > > Are you saying that libata calls "done()" and then calls > > "scsi_req_abort_cmd()" on the same command in succession? > > no, I'm saying ata_qc_complete() is an indication from the driver that > the nexus is terminated. But this is completely out of SCSI Core's domain. The nexus between the driver and SCSI Core is terminated only when done() is called. done() is the antagonist of queuecommand(). Until done() is called, if the LLDD/IC/SCSI Core want to request that a command be aborted for whatever reason, it calls scsi_req_abort_cmd(). That is, until the nexus created by calling queuecommand(), is returned to SCSI Core (by the driver calling done()), if either the driver or SCSI Core want to request the command be aborted, they call scsi_req_abort_cmd(). What scsi_req_abort_cmd() accomplishes is that both parties of the nexus are "on the same page" wrt the state of the command, independently of which party called scsi_req_abort_cmd(). Luben > > > I haven't looked in the code (which GIT tree is it?) but I don't > > believe that Tejun would do such a thing. > > It's in the libata-dev tree on www.kernel.org/git > > James > > > - : 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