diff --git a/src/plugins/select/serial/select_serial.c b/src/plugins/select/serial/select_serial.c index 5f42168067b2db962395d9dd5701898c81414608..dead76a4291db5f3e1b8e8375fdc89aaa58ab287 100644 --- a/src/plugins/select/serial/select_serial.c +++ b/src/plugins/select/serial/select_serial.c @@ -2138,6 +2138,7 @@ extern bitstr_t * select_p_resv_test(bitstr_t *avail_bitmap, uint32_t node_cnt, int rem_nodes = node_cnt; int rem_cores = core_cnt; bitstr_t *new_bitmap; + bool enforce_node_cnt = (node_cnt != 0); xassert(avail_bitmap); new_bitmap = bit_copy(avail_bitmap); @@ -2168,7 +2169,6 @@ extern bitstr_t * select_p_resv_test(bitstr_t *avail_bitmap, uint32_t node_cnt, continue; } - rem_nodes--; for (j = 0; j < node_cores; j++) { if (bit_test(*core_bitmap, core_inx)) { bit_clear(*core_bitmap, core_inx); @@ -2178,6 +2178,9 @@ extern bitstr_t * select_p_resv_test(bitstr_t *avail_bitmap, uint32_t node_cnt, } core_inx++; } + rem_nodes--; + if (enforce_node_cnt && (rem_nodes <= 0)) + break; } if ((rem_cores > 0) || (rem_nodes > 0)) FREE_NULL_BITMAP(new_bitmap);