Re: Debugging scsi abort handling ?

Hannes Reinecke
2014-08-28T14:22:10Z

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
hare@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 majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html