Commit 886fabf6 authored by Keith Busch's avatar Keith Busch Committed by Christoph Hellwig
Browse files

nvme: update node paths after adding new path



The nvme namespace paths were being updated only when the current path
was not set or nonoptimized. If a new path comes online that is a better
path for its NUMA node, the multipath selector may continue using the
previously set path on a potentially further node.

This patch re-runs the path assignment after successfully adding a new
optimized path.

Signed-off-by: default avatarKeith Busch <keith.busch@intel.com>
Reviewed-by: default avatarSagi Grimberg <sagi@grimberg.me>
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
parent 0585b754
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -321,6 +321,15 @@ static void nvme_mpath_set_live(struct nvme_ns *ns)
		device_add_disk(&head->subsys->dev, head->disk,
				nvme_ns_id_attr_groups);

	if (nvme_path_is_optimized(ns)) {
		int node, srcu_idx;

		srcu_idx = srcu_read_lock(&head->srcu);
		for_each_node(node)
			__nvme_find_path(head, node);
		srcu_read_unlock(&head->srcu, srcu_idx);
	}

	kblockd_schedule_work(&ns->head->requeue_work);
}