diff --git a/src/plugins/select/bluegene/bg_core.c b/src/plugins/select/bluegene/bg_core.c index 38b0360de6e55c1351287a1ab7f8ea33d6ecfb4d..72b9f164e6a47a18372f7af8b356724662244862 100644 --- a/src/plugins/select/bluegene/bg_core.c +++ b/src/plugins/select/bluegene/bg_core.c @@ -406,16 +406,19 @@ extern int bg_free_block(bg_record_t *bg_record, bool wait, bool locked) /* Fake a free since we are n deallocating state before this. */ - if (bg_record->state & BG_BLOCK_ERROR_FLAG) + if (bg_record->state & BG_BLOCK_ERROR_FLAG) { + /* This will set the state to ERROR(Free) + * just incase the state was ERROR(SOMETHING ELSE) */ + bg_record->state = BG_BLOCK_ERROR_FLAG; break; - else if (count >= 3) + } else if (count >= 3) bg_record->state = BG_BLOCK_FREE; else if (bg_record->state != BG_BLOCK_FREE) bg_record->state = BG_BLOCK_TERM; #endif if (!wait || (bg_record->state == BG_BLOCK_FREE) -#ifdef HAVE_BGL +#ifndef HAVE_BGL || (bg_record->state & BG_BLOCK_ERROR_FLAG) #endif ) {