|
@@ -417,6 +417,15 @@ static inline void nvme_mpath_clear_current_path(struct nvme_ns *ns)
|
|
|
rcu_assign_pointer(head->current_path, NULL);
|
|
|
}
|
|
|
struct nvme_ns *nvme_find_path(struct nvme_ns_head *head);
|
|
|
+
|
|
|
+static inline void nvme_mpath_check_last_path(struct nvme_ns *ns)
|
|
|
+{
|
|
|
+ struct nvme_ns_head *head = ns->head;
|
|
|
+
|
|
|
+ if (head->disk && list_empty(&head->list))
|
|
|
+ kblockd_schedule_work(&head->requeue_work);
|
|
|
+}
|
|
|
+
|
|
|
#else
|
|
|
static inline void nvme_failover_req(struct request *req)
|
|
|
{
|
|
@@ -448,6 +457,9 @@ static inline void nvme_mpath_remove_disk_links(struct nvme_ns *ns)
|
|
|
static inline void nvme_mpath_clear_current_path(struct nvme_ns *ns)
|
|
|
{
|
|
|
}
|
|
|
+static inline void nvme_mpath_check_last_path(struct nvme_ns *ns)
|
|
|
+{
|
|
|
+}
|
|
|
#endif /* CONFIG_NVME_MULTIPATH */
|
|
|
|
|
|
#ifdef CONFIG_NVM
|