linux/drivers/nvme/host
Sagi Grimberg e164471dcf nvme: don't protect ns mutation with ns->head->lock
Right now ns->head->lock is protecting namespace mutation
which is wrong and unneeded. Move it to only protect
against head mutations. While we're at it, remove unnecessary
ns->head reference as we already have head pointer.

The problem with this is that the head->lock spans
mpath disk node I/O that may block under some conditions (if
for example the controller is disconnecting or the path
became inaccessible), The locking scheme does not allow any
other path to enable itself, preventing blocked I/O to complete
and forward-progress from there.

This is a preparation patch for the fix in a subsequent patch
where the disk I/O will also be done outside the head->lock.

Fixes: 0d0b660f21 ("nvme: add ANA support")
Signed-off-by: Anton Eidelman <anton@lightbitslabs.com>
Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
Signed-off-by: Christoph Hellwig <hch@lst.de>
2020-06-24 18:41:20 +02:00
..
core.c nvme: fix possible deadlock when I/O is blocked 2020-06-24 18:41:20 +02:00
fabrics.c nvme-fabrics: Use scnprintf() for avoiding potential buffer overflow 2020-03-26 04:51:55 +09:00
fabrics.h
fault_inject.c
fc.c nvme-fc: don't call nvme_cleanup_cmd() for AENs 2020-06-11 09:10:05 -06:00
fc.h nvme-fc: Update header and host for common definitions for LS handling 2020-05-09 16:18:33 -06:00
hwmon.c
Kconfig treewide: replace '---help---' in Kconfig files with 'help' 2020-06-14 01:57:21 +09:00
lightnvm.c nvme: introduce namespace features flag 2020-05-27 07:12:38 +02:00
Makefile
multipath.c nvme: don't protect ns mutation with ns->head->lock 2020-06-24 18:41:20 +02:00
nvme.h block: remove the error argument to the block_bio_complete tracepoint 2020-06-04 21:16:11 -06:00
pci.c nvme-pci: initialize tagset numa value to the value of the ctrl 2020-06-24 18:37:08 +02:00
rdma.c nvme-rdma: assign completion vector correctly 2020-06-24 18:41:19 +02:00
tcp.c nvme-tcp: initialize tagset numa value to the value of the ctrl 2020-06-24 18:37:08 +02:00
trace.c
trace.h