1
1

Do not use nodes that are flagged as down or do-not-use for this map. Modify error output to reflect possible reasons no nodes would be available

This commit was SVN r23333.
Этот коммит содержится в:
Ralph Castain 2010-07-01 19:39:31 +00:00
родитель 81a65f2c67
Коммит 510ade9503
2 изменённых файлов: 19 добавлений и 5 удалений

Просмотреть файл

@ -49,7 +49,10 @@ no nodes were found or all the available nodes were already used.
Note that since the -nolocal option was given no processes can be Note that since the -nolocal option was given no processes can be
launched on the local node. launched on the local node.
[orte-rmaps-base:no-available-resources] [orte-rmaps-base:no-available-resources]
There are no nodes allocated to this job. No nodes are available for this job, either due to a failure to
allocate nodes to the job, or allocated nodes being marked
as unavailable (e.g., down, rebooting, or a process attempting
to be relocated to another node when none are available).
[orte-rmaps-base:all-available-resources-used] [orte-rmaps-base:all-available-resources-used]
All nodes which are allocated for this job are already filled. All nodes which are allocated for this job are already filled.
# #

Просмотреть файл

@ -57,20 +57,31 @@ int orte_rmaps_base_get_target_nodes(opal_list_t *allocated_nodes, orte_std_cntr
/** set default answer */ /** set default answer */
*total_num_slots = 0; *total_num_slots = 0;
/* if the hnp was allocated, include it */ /* if the hnp was allocated, include it unless flagged not to */
if (orte_hnp_is_allocated) { if (orte_hnp_is_allocated) {
node = (orte_node_t*)opal_pointer_array_get_item(orte_node_pool, 0); node = (orte_node_t*)opal_pointer_array_get_item(orte_node_pool, 0);
OBJ_RETAIN(node); if (ORTE_NODE_STATE_UP == node->state) {
opal_list_append(allocated_nodes, &node->super); OBJ_RETAIN(node);
opal_list_append(allocated_nodes, &node->super);
} else if (ORTE_NODE_STATE_DO_NOT_USE == node->state) {
/* clear this for future use */
node->state = ORTE_NODE_STATE_UP;
}
} }
/* add everything in the node pool */ /* add everything in the node pool that can be used */
for (i=1; i < orte_node_pool->size; i++) { for (i=1; i < orte_node_pool->size; i++) {
if (NULL != (node = (orte_node_t*)opal_pointer_array_get_item(orte_node_pool, i))) { if (NULL != (node = (orte_node_t*)opal_pointer_array_get_item(orte_node_pool, i))) {
/* ignore nodes that are "down" */ /* ignore nodes that are "down" */
if (ORTE_NODE_STATE_DOWN == node->state) { if (ORTE_NODE_STATE_DOWN == node->state) {
continue; continue;
} }
/* ignore nodes that are marked as do-not-use for this mapping */
if (ORTE_NODE_STATE_DO_NOT_USE == node->state) {
/* reset the state so it can be used another time */
node->state = ORTE_NODE_STATE_UP;
continue;
}
/* retain a copy for our use in case the item gets /* retain a copy for our use in case the item gets
* destructed along the way * destructed along the way
*/ */