linux/drivers/nvme/host
Ming Lei 21f33b1577 nvme: avoid to use blk_mq_abort_requeue_list()
commit 986f75c876 upstream.

NVMe may add request into requeue list simply and not kick off the
requeue if hw queues are stopped. Then blk_mq_abort_requeue_list()
is called in both nvme_kill_queues() and nvme_ns_remove() for
dealing with this issue.

Unfortunately blk_mq_abort_requeue_list() is absolutely a
race maker, for example, one request may be requeued during
the aborting. So this patch just calls blk_mq_kick_requeue_list() in
nvme_kill_queues() to handle this issue like what nvme_start_queues()
does. Now all requests in requeue list when queues are stopped will be
handled by blk_mq_kick_requeue_list() when queues are restarted, either
in nvme_start_queues() or in nvme_kill_queues().

Reported-by: Zhang Yi <yizhan@redhat.com>
Reviewed-by: Keith Busch <keith.busch@intel.com>
Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
Signed-off-by: Ming Lei <ming.lei@redhat.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2017-06-07 12:07:48 +02:00
..
core.c nvme: avoid to use blk_mq_abort_requeue_list() 2017-06-07 12:07:48 +02:00
fabrics.c Merge branch 'for-4.9/block' of git://git.kernel.dk/linux-block 2016-10-07 14:42:05 -07:00
fabrics.h Merge branch 'for-4.9/block' of git://git.kernel.dk/linux-block 2016-10-07 14:42:05 -07:00
Kconfig nvme-rdma: add back dependency on CONFIG_BLOCK 2016-09-12 22:29:43 +03:00
lightnvm.c lightnvm: invalid offset calculation for lba_shift 2016-11-11 18:27:32 -07:00
Makefile nvme-rdma: add a NVMe over Fabrics RDMA host driver 2016-07-08 08:38:49 -06:00
nvme.h nvme: simplify stripe quirk 2017-04-12 12:41:18 +02:00
pci.c nvme: unmap CMB and remove sysfs file in reset path 2017-05-25 15:44:46 +02:00
rdma.c nvme-rdma: support devices with queue size < 32 2017-06-07 12:07:48 +02:00
scsi.c nvme: Add tertiary number to NVME_VS 2016-10-19 11:36:22 -06:00