On 08/28/2014 02:31 PM, Martin Peschke wrote:
On Thu, 2014-08-28 at 14:04 +0200, Hannes Reinecke wrote:
On 08/25/2014 01:15 PM, Paolo Bonzini wrote:
- abort the command, and then the driver should never call the
->scsi_done callback for the Scsi_Cmnd*.

In practice we rely on the latter behaviour; when ->scsi_done is
called while the command is under eh_abort _really bad things_
will happen.
As soon as eh_abort is called control is transferred back to the
SCSI midlayer, so any LLDD should never send completions for these
commands back to the midlayer.

Mmh, then there is a small race window starting at the point in time
when the abort function of an LLDD is called up to the point in time
when that abort function has taken the necessary measures to make sure
that scsi_done won't be called for a racing command completion , isn't
it?

No, that's fine. The timeout function is under control of the block layer, which sets an atomic flag on the request before calling the timeout function. And ->scsi_done() essentially just calls 'blk_complete_request();, which checks the very same flag before raising the block soft irq.

Cheers,

Hannes
--
Dr. Hannes Reinecke                   zSeries & Storage
h...@suse.de                          +49 911 74053 688
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: J. Hawn, J. Guild, F. Imendörffer, HRB 16746 (AG Nürnberg)
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to