linux/drivers/nvme/target
James Smart 9d625f7792 nvmet_fc: prevent new io rqsts in possible isr completions
When a bio completion calls back into the transport for a
back-end io device, the request completion path can free
the transport io job structure allowing it to be reused for
other operations. The transport has a defer_rcv queue which
holds temporary cmd rcv ops while waitng for io job structures.
when the job frees, if there's a cmd waiting, it is picked up
and submitted for processing, which can call back out to the
bio path if it's a read.  Unfortunately, what is unknown is the
context of the original bio done call, and it may be in a state
(softirq) that is not compatible with submitting the new bio in
the same calling sequence. This is especially true when using
scsi back-end devices as scsi is in softirq when it makes the
done call.

Correct by scheduling the io to be started via workq rather
than calling the start new io path inline to the original bio
done path.

Signed-off-by: James Smart <james.smart@broadcom.com>
Signed-off-by: Keith Busch <keith.busch@intel.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2018-03-26 08:53:43 -06:00
..
admin-cmd.c nvmet: remove redundant local variable 2017-11-10 19:53:25 -07:00
configfs.c nvmet: make config_item_type const 2017-10-19 16:15:28 +02:00
core.c nvmet: fix PSDT field check in command format 2018-02-28 10:10:22 -07:00
discovery.c nvmet: don't return "any" ip address in discovery log page 2018-03-26 08:53:43 -06:00
fabrics-cmd.c nvmet: lower log level for each queue creation 2018-01-08 11:01:52 +01:00
fc.c nvmet_fc: prevent new io rqsts in possible isr completions 2018-03-26 08:53:43 -06:00
fcloop.c Merge branch 'for-4.16/block' of git://git.kernel.dk/linux-block 2018-01-29 11:51:49 -08:00
io-cmd.c nvmet: Change return code of discard command if not supported 2018-02-14 15:38:59 +02:00
Kconfig nvmet/rdma: Use sgl_alloc() and sgl_free() 2018-01-06 09:18:00 -07:00
loop.c nvmet-loop: use blk_rq_payload_bytes for sgl selection 2018-02-22 01:45:34 -07:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
nvmet.h nvmet: don't return "any" ip address in discovery log page 2018-03-26 08:53:43 -06:00
rdma.c nvmet: don't return "any" ip address in discovery log page 2018-03-26 08:53:43 -06:00