On Wed, 2017-02-22 at 17:07 +0100, Hannes Reinecke wrote: > Primary goal is to make asynchronous aborts mandatory; there hasn't > been a single report so far where asynchronous abort won't work, so > the 'no_async_abort' flag has never been used and will be removed > with this patchset. Hello Hannes, There is a problem with asynchronous aborts. Some SCSI drivers, e.g. ib_srp, support fast error recovery by performing a transport layer reconnect without reporting this event as a failure to the SCSI core. While such a reconnect is ongoing it is important that no attempt is made to use the data structures that represent the connection. Hence the scsi_target_block() call in srp_reconnect_rport(). This blocks most .queuecommand() calls except those that originate from the SCSI EH. Hence the if (current == shost->ehandler) mutex_lock(&rport->mutex) code in srp_queuecommand(). Asynchronous aborts break this code because the asynchronous abort code submits an abort from another context than the SCSI EH thread. I know that this way of detecting the SCSI EH context is not an optimal solution. A few years ago I have tried to modify the SCSI EH such that reconnects and .queuecommand() calls could be serialized but James was not interested in such patches at that time. Bart.