diff --git a/src/plugins/select/bluegene/ba_bgq/block_allocator.c b/src/plugins/select/bluegene/ba_bgq/block_allocator.c index 077f3621f891cd6b9bb49586a9dc4eee684dfb67..73dad51f855a17b0ac4c58f7a72c3dd0b7ec113d 100644 --- a/src/plugins/select/bluegene/ba_bgq/block_allocator.c +++ b/src/plugins/select/bluegene/ba_bgq/block_allocator.c @@ -1584,10 +1584,13 @@ extern struct job_record *ba_remove_job_in_block_job_list( xassert((ba_mp = list_peek(bg_record->ba_mp_list))); if (!job_ptr) { - FREE_NULL_BITMAP(ba_mp->cnode_bitmap); - if (ba_mp->cnode_usable_bitmap) + if (ba_mp->cnode_usable_bitmap) { + FREE_NULL_BITMAP(ba_mp->cnode_bitmap); ba_mp->cnode_bitmap = bit_copy(ba_mp->cnode_usable_bitmap); + } else if (ba_mp->cnode_bitmap) + bit_nclear(ba_mp->cnode_bitmap, 0, + bit_size(ba_mp->cnode_bitmap)-1); return NULL; } diff --git a/src/plugins/select/bluegene/bg_record_functions.c b/src/plugins/select/bluegene/bg_record_functions.c index 3aa9f2d683308f2465d49192d4c8b7b2265442c1..81f994e884131d7924ab1dda8a2e6c819b3470c0 100644 --- a/src/plugins/select/bluegene/bg_record_functions.c +++ b/src/plugins/select/bluegene/bg_record_functions.c @@ -1480,8 +1480,13 @@ extern int bg_reset_block(bg_record_t *bg_record, struct job_record *job_ptr) while ((ba_mp = list_next(itr))) { if (!ba_mp->used) continue; - bit_nclear(ba_mp->cnode_bitmap, 0, - bit_size(ba_mp->cnode_bitmap)-1); + if (ba_mp->cnode_usable_bitmap) { + FREE_NULL_BITMAP(ba_mp->cnode_bitmap); + ba_mp->cnode_bitmap = + bit_copy(ba_mp->cnode_usable_bitmap); + } else if (ba_mp->cnode_bitmap) + bit_nclear(ba_mp->cnode_bitmap, 0, + bit_size(ba_mp->cnode_bitmap)-1); } list_iterator_destroy(itr); #endif