nvme-rdma: Fix device removal handling
authorSagi Grimberg <sagi@grimberg.me>
Thu, 14 Jul 2016 14:39:47 +0000 (17:39 +0300)
committerSagi Grimberg <sagi@grimberg.me>
Wed, 3 Aug 2016 13:25:07 +0000 (16:25 +0300)
commit57de5a0a40db97bb390d3ac1f4c2e74b9f3515c3
tree698913355a30c7e313c1347064c565dbf55516b5
parent5f372eb3e76317b4fe4ba53ad1547f39fc883350
nvme-rdma: Fix device removal handling

Device removal sequence may have crashed because the
controller (and admin queue space) was freed before
we destroyed the admin queue resources. Thus we
want to destroy the admin queue and only then queue
controller deletion and wait for it to complete.

More specifically we:
1. own the controller deletion (make sure we are not
   competing with another deletion).
2. get rid of inflight reconnects if exists (which
   also destroy and create queues).
3. destroy the queue.
4. safely queue controller deletion (and wait for it
   to complete).

Reported-by: Steve Wise <swise@opengridcomputing.com>
Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
Reviewed-by: Christoph Hellwig <hch@lst.de>
drivers/nvme/host/rdma.c