From 7f348fc32f4573606951ec17638ce2484fa12d89 Mon Sep 17 00:00:00 2001 From: Danny Auble <da@schedmd.com> Date: Fri, 21 Oct 2011 10:15:50 -0700 Subject: [PATCH] BGQ - if using a sub midplane system remove any blocks that have missing cnodes in them. --- .../select/bluegene/bl_bgq/bridge_status.cc | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/plugins/select/bluegene/bl_bgq/bridge_status.cc b/src/plugins/select/bluegene/bl_bgq/bridge_status.cc index 8a1a6111f69..62c639ebe7b 100644 --- a/src/plugins/select/bluegene/bl_bgq/bridge_status.cc +++ b/src/plugins/select/bluegene/bl_bgq/bridge_status.cc @@ -229,6 +229,7 @@ static void _handle_node_change(ba_mp_t *ba_mp, const std::string& cnode_loc, bg_record_t *bg_record; ba_mp_t *found_ba_mp; ListIterator itr, itr2; + List delete_list = NULL; if (!ba_mp->cnode_err_bitmap) ba_mp->cnode_err_bitmap = bit_alloc(bg_conf->mp_cnode_cnt); @@ -284,6 +285,17 @@ static void _handle_node_change(ba_mp_t *ba_mp, const std::string& cnode_loc, continue; } + if (bg_conf->sub_mp_sys + && (state == Hardware::Missing)) { + if (!delete_list) + delete_list = list_create(NULL); + debug("Removing block %s, " + "it has missing cnodes", + bg_record->bg_block_id); + list_push(delete_list, bg_record); + break; + } + if (!found_ba_mp->cnode_err_bitmap) found_ba_mp->cnode_err_bitmap = bit_alloc(bg_conf->mp_cnode_cnt); @@ -313,6 +325,10 @@ static void _handle_node_change(ba_mp_t *ba_mp, const std::string& cnode_loc, list_iterator_destroy(itr); slurm_mutex_unlock(&block_state_mutex); + if (delete_list) { + free_block_list(NO_VAL, delete_list, 1, 0); + list_destroy(delete_list); + } } static void _handle_cable_change(int dim, ba_mp_t *ba_mp, -- GitLab