|
@@ -3314,6 +3314,9 @@ void nvme_remove_namespaces(struct nvme_ctrl *ctrl)
|
|
|
struct nvme_ns *ns, *next;
|
|
|
LIST_HEAD(ns_list);
|
|
|
|
|
|
+ /* prevent racing with ns scanning */
|
|
|
+ flush_work(&ctrl->scan_work);
|
|
|
+
|
|
|
/*
|
|
|
* The dead states indicates the controller was not gracefully
|
|
|
* disconnected. In that case, we won't be able to flush any data while
|
|
@@ -3476,7 +3479,6 @@ void nvme_stop_ctrl(struct nvme_ctrl *ctrl)
|
|
|
nvme_mpath_stop(ctrl);
|
|
|
nvme_stop_keep_alive(ctrl);
|
|
|
flush_work(&ctrl->async_event_work);
|
|
|
- flush_work(&ctrl->scan_work);
|
|
|
cancel_work_sync(&ctrl->fw_act_work);
|
|
|
if (ctrl->ops->stop_ctrl)
|
|
|
ctrl->ops->stop_ctrl(ctrl);
|