Skip to content

Commit 55adcdb

Browse files
hreineckekeithbusch
authored andcommitted
nvme-loop: always quiesce and cancel commands before destroying admin q
Once ->init_ctrl_finish() is called there may be commands outstanding, so we should quiesce the admin queue and cancel all commands prior to call nvme_loop_destroy_admin_queue(). Signed-off-by: Hannes Reinecke <hare@suse.de> Tested-by: Mark O'Donovan <shiftee@posteo.net> Signed-off-by: Keith Busch <kbusch@kernel.org>
1 parent fd1418d commit 55adcdb

File tree

1 file changed

+4
-0
lines changed

1 file changed

+4
-0
lines changed

drivers/nvme/target/loop.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -466,6 +466,8 @@ static void nvme_loop_reset_ctrl_work(struct work_struct *work)
466466
out_destroy_io:
467467
nvme_loop_destroy_io_queues(ctrl);
468468
out_destroy_admin:
469+
nvme_quiesce_admin_queue(&ctrl->ctrl);
470+
nvme_cancel_admin_tagset(&ctrl->ctrl);
469471
nvme_loop_destroy_admin_queue(ctrl);
470472
out_disable:
471473
dev_warn(ctrl->ctrl.device, "Removing after reset failure\n");
@@ -600,6 +602,8 @@ static struct nvme_ctrl *nvme_loop_create_ctrl(struct device *dev,
600602
return &ctrl->ctrl;
601603

602604
out_remove_admin_queue:
605+
nvme_quiesce_admin_queue(&ctrl->ctrl);
606+
nvme_cancel_admin_tagset(&ctrl->ctrl);
603607
nvme_loop_destroy_admin_queue(ctrl);
604608
out_free_queues:
605609
kfree(ctrl->queues);

0 commit comments

Comments
 (0)