Commit 77ecfa82 authored by Iustin Pop's avatar Iustin Pop
Browse files

htools: replace two hardcoded uses of pri+sec nodes



These two cases use explicit uses of primary and secondary nodes with
Instance.allNodes, which means the code is more flexible if the
internal layout of the instance changes.

I've verified that the output of involvedNodes  is not required to be
4-element long, and as such the function docstring has been updated.
Signed-off-by: default avatarIustin Pop <iustin@google.com>
Reviewed-by: default avatarGuido Trotter <ultrotter@google.com>
parent bbe9758d
...@@ -582,8 +582,7 @@ tryBalance ini_tbl disk_moves inst_moves evac_mode mg_limit min_gain = ...@@ -582,8 +582,7 @@ tryBalance ini_tbl disk_moves inst_moves evac_mode mg_limit min_gain =
all_inst' = if evac_mode all_inst' = if evac_mode
then let bad_nodes = map Node.idx . filter Node.offline $ then let bad_nodes = map Node.idx . filter Node.offline $
Container.elems ini_nl Container.elems ini_nl
in filter (\e -> Instance.sNode e `elem` bad_nodes || in filter (any (`elem` bad_nodes) . Instance.allNodes)
Instance.pNode e `elem` bad_nodes)
all_inst all_inst
else all_inst else all_inst
reloc_inst = filter Instance.movable all_inst' reloc_inst = filter Instance.movable all_inst'
...@@ -1223,13 +1222,22 @@ printSolutionLine nl il nmlen imlen plc pos = ...@@ -1223,13 +1222,22 @@ printSolutionLine nl il nmlen imlen plc pos =
cmds) cmds)
-- | Return the instance and involved nodes in an instance move. -- | Return the instance and involved nodes in an instance move.
involvedNodes :: Instance.List -> Placement -> [Ndx] --
-- Note that the output list length can vary, and is not required nor
-- guaranteed to be of any specific length.
involvedNodes :: Instance.List -- ^ Instance list, used for retrieving
-- the instance from its index; note
-- that this /must/ be the original
-- instance list, so that we can
-- retrieve the old nodes
-> Placement -- ^ The placement we're investigating,
-- containing the new nodes and
-- instance index
-> [Ndx] -- ^ Resulting list of node indices
involvedNodes il plc = involvedNodes il plc =
let (i, np, ns, _, _) = plc let (i, np, ns, _, _) = plc
inst = Container.find i il inst = Container.find i il
op = Instance.pNode inst in nub $ [np, ns] ++ Instance.allNodes inst
os = Instance.sNode inst
in nub [np, ns, op, os]
-- | Inner function for splitJobs, that either appends the next job to -- | Inner function for splitJobs, that either appends the next job to
-- the current jobset, or starts a new jobset. -- the current jobset, or starts a new jobset.
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment