diff --git a/src/plugins/select/serial/select_serial.c b/src/plugins/select/serial/select_serial.c index 7f08f7180f98a6658b5f948fa9379978453cb927..8e45076a2cc6c573ceb0e7623b870809927e36f1 100644 --- a/src/plugins/select/serial/select_serial.c +++ b/src/plugins/select/serial/select_serial.c @@ -2130,6 +2130,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); @@ -2160,7 +2161,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); @@ -2170,6 +2170,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); diff --git a/testsuite/expect/test4.12 b/testsuite/expect/test4.12 index ce6dde92d09d645a916acfc0f2eff46bd79f40c0..7aabf3369811d1449ebb35f47a1d528afe413f7d 100755 --- a/testsuite/expect/test4.12 +++ b/testsuite/expect/test4.12 @@ -188,6 +188,13 @@ proc sinfo_test_2 { node proc_cnt total_procs } { } exp_continue } + -re "mix ($number)(K?) $node" { + set num_alloc $expect_out(1,string) + if {[string compare $expect_out(2,string) ""]} { + set num_alloc [expr $inode_procs * 1024] + } + exp_continue + } -re $prompt { } timeout {