linux_dsm_epyc7002/drivers/nvme/host
Keith Busch 49cd84b6f8 nvme: implement Enhanced Command Retry
A controller may have an internal state that is not able to successfully
process commands for a short duration. In such states, an immediate
command requeue is expected to fail. The driver may exceed its max
retry count, which permanently ends the command in failure when the same
command would succeed after waiting for the controller to be ready.

NVMe ratified TP 4033 provides a delay hint in the completion status
code for failed commands. Implement the retry delay based on the command
completion status and the controller's requested delay.

Note that requeued commands are handled per request_queue, not per
individual request. If multiple commands fail, the controller should
consistently report the desired delay time for retryable commands in
all CQEs, otherwise the requeue list may be kicked too soon.

Signed-off-by: Keith Busch <keith.busch@intel.com>
Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2018-12-07 22:26:58 -07:00
..
core.c nvme: implement Enhanced Command Retry 2018-12-07 22:26:58 -07:00
fabrics.c nvme: disable fabrics SQ flow control when asked by the user 2018-12-07 22:26:57 -07:00
fabrics.h nvme: disable fabrics SQ flow control when asked by the user 2018-12-07 22:26:57 -07:00
fault_inject.c nvme: Add fault injection feature 2018-03-26 08:53:43 -06:00
fc.c nvme: add a numa_node field to struct nvme_ctrl 2018-12-07 22:26:55 -07:00
Kconfig IB: Revert "remove redundant INFINIBAND kconfig dependencies" 2018-05-28 10:40:16 -06:00
lightnvm.c lightnvm: do no update csecs and sos on 1.2 2018-10-09 08:25:08 -06:00
Makefile nvme: Add fault injection feature 2018-03-26 08:53:43 -06:00
multipath.c nvme: add a numa_node field to struct nvme_ctrl 2018-12-07 22:26:55 -07:00
nvme.h nvme: implement Enhanced Command Retry 2018-12-07 22:26:58 -07:00
pci.c block: only allow polling if a poll queue_map exists 2018-12-04 11:38:19 -07:00
rdma.c nvme: add a numa_node field to struct nvme_ctrl 2018-12-07 22:26:55 -07:00
trace.c nvme: add disk name to trace events 2018-07-24 15:55:48 +02:00
trace.h nvme-core: add async event trace helper 2018-10-01 14:16:12 -07:00