Dave Hansen <dave.hansen@xxxxxxxxx> writes: > On 6/30/20 1:22 AM, Huang, Ying wrote: >>> + /* >>> + * To avoid cycles in the migration "graph", ensure >>> + * that migration sources are not future targets by >>> + * setting them in 'used_targets'. >>> + * >>> + * But, do this only once per pass so that multiple >>> + * source nodes can share a target node. >> establish_migrate_target() calls find_next_best_node(), which will set >> target_node in used_targets. So it seems that the nodes_or() below is >> only necessary to initialize used_targets, and multiple source nodes >> cannot share one target node in current implementation. > > Yes, that is true. My focus on this implementation was simplicity and > sanity for common configurations. I can certainly imagine scenarios > where this is suboptimal. > > I'm totally open to other ways of doing this. OK. So when we really need to share one target node for multiple source nodes, we can add a parameter to find_next_best_node() to specify whether set target_node in used_targets. Best Regards, Huang, Ying