Tejun Heo wrote:
IMHO, it's a good idea to maintain one qc to one ATA/ATAPI command
mapping as long as possible. And, in the suggested framework, it's
guaranteed that no other command can come inbetween CHECK_SENSE and
REQUEST_SENSE.
Requesting sense from EH, calling scsi_decide_disposition() on the
sense and following the verdict should achieve the same effect as
emulating autosense. Is there any compelling reason to break one qc to
one command mapping?
Yes, you should have one qc <-> one ATA/ATAPI command. That's why, in
the NCQ scenario, I wanted to make sure that one qc was always reserved
for error handling: REQUEST SENSE or READ LOG EXT, most importantly.
For SAT layer MODE SELECT translations, that implies multiple calls to
qc_new/qc_issue/qc_complete before completing the overall SCSI command.
The same for handling sata_sil mod15write: I am beginning to feel
like the mod15write workaround might be best implemented in a manner
that caused libata-scsi (not sata_sil) to create/issue/complete multiple
ATA commands.
The only problem you run into is that a qc may be active during EH, when
you need another qc. So avoiding recursive details becomes an issue.
Jeff
-
: 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