linux/drivers/nvme/host
Anton Eidelman 2d570a7c02 nvme/tcp: fix bug on double requeue when send fails
When nvme_tcp_io_work() fails to send to socket due to
connection close/reset, error_recovery work is triggered
from nvme_tcp_state_change() socket callback.
This cancels all the active requests in the tagset,
which requeues them.

The failed request, however, was ended and thus requeued
individually as well unless send returned -EPIPE.
Another return code to be treated the same way is -ECONNRESET.

Double requeue caused BUG_ON(blk_queued_rq(rq))
in blk_mq_requeue_request() from either the individual requeue
of the failed request or the bulk requeue from
blk_mq_tagset_busy_iter(, nvme_cancel_request, );

Signed-off-by: Anton Eidelman <anton@lightbitslabs.com>
Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
Signed-off-by: Keith Busch <kbusch@kernel.org>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2020-02-14 10:12:04 -07:00
..
core.c nvme: Translate more status codes to blk_status_t 2020-01-10 08:55:50 -07:00
fabrics.c nvme-fabrics: allow discovery subsystems accept a kato 2019-09-12 08:50:46 -07:00
fabrics.h nvme: Remove ADMIN_ONLY state 2019-10-14 23:21:44 +09:00
fault_inject.c nvme: enable to inject errors into admin commands 2019-06-21 11:15:50 +02:00
fc.c nvme-fc: fix double-free scenarios on hw queues 2019-11-27 03:00:13 +09:00
hwmon.c nvme: hwmon: add quirk to avoid changing temperature threshold 2019-11-22 02:21:08 +09:00
Kconfig block: Allow t10-pi to be modular 2020-01-06 20:59:04 -07:00
lightnvm.c lightnvm: move metadata mapping to lower level driver 2019-08-06 08:20:10 -06:00
Makefile nvme: Add hardware monitoring support 2019-11-12 01:57:35 +09:00
multipath.c for-5.5/drivers-20191121 2019-11-25 11:15:41 -08:00
nvme.h nvme-rdma: Avoid preallocating big SGL for data 2019-11-27 02:13:45 +09:00
pci.c nvme-pci: remove nvmeq->tags 2020-02-04 03:00:25 +09:00
rdma.c nvme-rdma: Avoid preallocating big SGL for data 2019-11-27 02:13:45 +09:00
tcp.c nvme/tcp: fix bug on double requeue when send fails 2020-02-14 10:12:04 -07:00
trace.c nvme: trace: parse Get LBA Status command in detail 2019-08-29 12:55:01 -07:00
trace.h nvme-trace: print result and status in hex format 2019-06-21 11:12:37 +02:00