diff options
| author | Chris Mason <mason@kernel.org> | 2026-10-28 10:42:29 -0600 |
|---|---|---|
| committer | Keith Busch <kbusch@kernel.org> | 2026-11-03 14:21:57 -0800 |
| commit | 80095787f776967361cca76357f19e5445e0cd75 (patch) | |
| tree | fb1ae1862963b519e587636bc6b2f7c02ceda761 /tools/perf/scripts/python/bin/stackcollapse-report | |
| parent | 86ae3841aea4e29d7ac08d5614ca3823dc8dfbc9 (diff) | |
nvmet-rdma: queue the release work under the mutex
nvmet_rdma_remove_one() takes the queue mutex, unlists each queue of
the device and queues its release work, then flushes nvmet-wq. So a
queue that still holds objects on the device must either be on the
list or have its release work queued. nvmet_rdma_queue_disconnect()
breaks that: it unlists the queue under the mutex, drops it, and only
then calls __nvmet_rdma_queue_disconnect() to queue the work. A device
removal in that window finds nothing to wait for, and the release work
then destroys the QP and CQ share on a freed device.
Queue the work before dropping the mutex, as nvmet_rdma_remove_one()
itself does. That's safe now that rdma_disconnect() no longer sleeps on
an iWARP event that needs the same mutex.
Fixes: f1d4ef7d8883 ("nvmet-rdma: register ib_client to not deadlock in device removal")
Cc: Christoph Hellwig <hch@lst.de>
Cc: Sagi Grimberg <sagi@grimberg.me>
Cc: Chaitanya Kulkarni <kch@nvidia.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Chris Mason <mason@kernel.org>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Keith Busch <kbusch@kernel.org>
Diffstat (limited to 'tools/perf/scripts/python/bin/stackcollapse-report')
0 files changed, 0 insertions, 0 deletions
