|
@@ -1117,14 +1117,19 @@ static u32 nvme_passthru_start(struct nvme_ctrl *ctrl, struct nvme_ns *ns,
|
|
|
|
|
|
static void nvme_update_formats(struct nvme_ctrl *ctrl)
|
|
|
{
|
|
|
- struct nvme_ns *ns;
|
|
|
+ struct nvme_ns *ns, *next;
|
|
|
+ LIST_HEAD(rm_list);
|
|
|
|
|
|
mutex_lock(&ctrl->namespaces_mutex);
|
|
|
list_for_each_entry(ns, &ctrl->namespaces, list) {
|
|
|
- if (ns->disk && nvme_revalidate_disk(ns->disk))
|
|
|
- nvme_ns_remove(ns);
|
|
|
+ if (ns->disk && nvme_revalidate_disk(ns->disk)) {
|
|
|
+ list_move_tail(&ns->list, &rm_list);
|
|
|
+ }
|
|
|
}
|
|
|
mutex_unlock(&ctrl->namespaces_mutex);
|
|
|
+
|
|
|
+ list_for_each_entry_safe(ns, next, &rm_list, list)
|
|
|
+ nvme_ns_remove(ns);
|
|
|
}
|
|
|
|
|
|
static void nvme_passthru_end(struct nvme_ctrl *ctrl, u32 effects)
|