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
launched on the local node.
[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]
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 */
*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) {
node = (orte_node_t*)opal_pointer_array_get_item(orte_node_pool, 0);
OBJ_RETAIN(node);
opal_list_append(allocated_nodes, &node->super);
if (ORTE_NODE_STATE_UP == node->state) {
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++) {
if (NULL != (node = (orte_node_t*)opal_pointer_array_get_item(orte_node_pool, i))) {
/* ignore nodes that are "down" */
if (ORTE_NODE_STATE_DOWN == node->state) {
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
* destructed along the way
*/