Jeff Garzik wrote: > Tejun Heo wrote: >> Some commands need post-processing after successful completion. This >> was done in ata_scsi_qc_complete() till now but command post >> processing doesn't belong to SAT layer. Move them to >> __ata_qc_complete() and, while at it, restructure a bit to ease adding >> post-processing for other commands. >> >> Signed-off-by: Tejun Heo <htejun@xxxxxxxxx> > > BTW, while doing the TEST UNIT READY emulation patch for ATA (recently > withdrawn from libata-dev.git#upstream), I found a problem with the > interface that was difficult to get around: TEST UNIT READY simulation > code really wants to look at the result TF of CHECK POWER MODE, even if > ATA_ERR is asserted, before determining whether or not to call that > command an error. > > Maybe the EH scheduling could be moved until after ->complete_fn, to > permit ->complete_fn users to manipulate qc->err_mask etc.? Yeah, right. Device error is a special case. In many cases, devices can operate without any problem after asserting error and for some commands error is used to signal certain conditions. I think the least intrusive way would be a qc flag - ATA_QCFLAG_ALLOW_DEVERR, maybe. Also, I'm not sure whether EH should kick in when passthru commands fail with a device error. Maybe libata should just report the error to the issuer and continue operation? -- 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