linux/drivers/nvme/target
Solganik Alexander e4fcf07cca nvmet: Fix possible infinite loop triggered on hot namespace removal
When removing a namespace we delete it from the subsystem namespaces
list with list_del_init which allows us to know if it is enabled or
not.

The problem is that list_del_init initialize the list next and does
not respect the RCU list-traversal we do on the IO path for locating
a namespace. Instead we need to use list_del_rcu which is allowed to
run concurrently with the _rcu list-traversal primitives (keeps list
next intact) and guarantees concurrent nvmet_find_naespace forward
progress.

By changing that, we cannot rely on ns->dev_link for knowing if the
namspace is enabled, so add enabled indicator entry to nvmet_ns for
that.

Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
Signed-off-by: Solganik Alexander <sashas@lightbitslabs.com>
Cc: <stable@vger.kernel.org> # v4.8+
2016-12-06 10:17:03 +02:00
..
admin-cmd.c nvmet: add support for the Write Zeroes command 2016-12-01 07:58:40 -07:00
configfs.c nvmet: Fix possible infinite loop triggered on hot namespace removal 2016-12-06 10:17:03 +02:00
core.c nvmet: Fix possible infinite loop triggered on hot namespace removal 2016-12-06 10:17:03 +02:00
discovery.c
fabrics-cmd.c nvme: introduce struct nvme_request 2016-11-10 10:06:24 -07:00
io-cmd.c nvmet: add support for the Write Zeroes command 2016-12-01 07:58:40 -07:00
Kconfig nvme: fabrics drivers don't need the nvme-pci driver 2016-08-19 14:22:28 +03:00
loop.c nvme: untangle 0 and BLK_MQ_RQ_QUEUE_OK 2016-11-15 12:50:11 -07:00
Makefile nvmet-rdma: add a NVMe over Fabrics RDMA target driver 2016-07-08 08:38:49 -06:00
nvmet.h nvmet: Fix possible infinite loop triggered on hot namespace removal 2016-12-06 10:17:03 +02:00
rdma.c nvmet-rdma: Fix REJ status code 2016-12-06 10:17:03 +02:00