On 2/28/18 10:35 AM, Bart Van Assche wrote: > From: Damien Le Moal <damien.lemoal@xxxxxxx> > > In case of a failed write request (all retries failed) and when using > libata, the SCSI error handler calls scsi_finish_command(). In the > case of blk-mq this means that scsi_mq_done() does not get called, > that blk_mq_complete_request() does not get called and also that the > mq-deadline .completed_request() method is not called. This results in > the target zone of the failed write request being left in a locked > state, preventing that any new write requests are issued to the same > zone. > > Fix this by replacing the .completed_request() method with the > .finish_request() method as this method is always called whether or > not a request completes successfully. Since the .finish_request() > method is only called by the blk-mq core if a .prepare_request() > method exists, add a dummy .prepare_request() method. Thanks, applied for 4.16. -- Jens Axboe