[PATCH 4/9] nvme: do not restart the request timeout if we're resetting the controller

Busch, Keith keith.busch at intel.com
Thu Oct 22 09:27:03 PDT 2015


On Thu, Oct 22, 2015 at 02:03:36PM +0200, Christoph Hellwig wrote:
> Otherwise we're never going to complete a command when it is restarted just
> after we completed all other outstanding commands in nvme_clear_queue.

Returning BLK_EH_HANDLED to block mq's timeout handler has the block layer
complete the request. However, the reset work is going to force cancel
the request anyway, so the same command will be completed twice. That
can't be right ... right?

> @@ -1063,7 +1063,9 @@ static enum blk_eh_timer_return nvme_timeout(struct request *req, bool reserved)
>  				 req->tag, nvmeq->qid);
>  		}
>  		spin_unlock_irq(&dev_list_lock);
> -		return BLK_EH_RESET_TIMER;
> +
> +		req->errors = -EIO;
> +		return BLK_EH_HANDLED;
>  	}



More information about the Linux-nvme mailing list