diff --git a/NEWS b/NEWS index 0c1a454dab9260252252fe9be0176e32c81d441d..2e1bac7290f8f079ddbfa719643e608cb12e627f 100644 --- a/NEWS +++ b/NEWS @@ -14,6 +14,7 @@ documents those changes that are of interest to users and administrators. and it doesn't meet basic requirements. -- burst_buffer/cray - Fix for script creating or deleting persistent buffer would fail "paths" operation and hold the job. + -- power/cray - Prevent possible divide by zero. * Changes in Slurm 15.08.10 =========================== diff --git a/src/plugins/power/cray/power_cray.c b/src/plugins/power/cray/power_cray.c index e0ef5ac7788464275b7e9c83b2993e3346820a0e..1afce377eaa79e895ffbf8f6629975b0bcf05a0a 100644 --- a/src/plugins/power/cray/power_cray.c +++ b/src/plugins/power/cray/power_cray.c @@ -1437,13 +1437,16 @@ static void _rebalance_node_power(void) if ((alloc_power > cap_watts) || (node_power_needed > avail_power)) { /* When CapWatts changes, we might need to lower nodes more * than the configured change rate specifications */ - uint32_t red1 = 0, red2 = 0; + uint32_t red1 = 0, red2 = 0, node_num; if (alloc_power > cap_watts) red1 = alloc_power - cap_watts; if (node_power_needed > avail_power) red2 = node_power_needed - avail_power; red1 = MAX(red1, red2); - red1 /= (node_power_lower_cnt + node_power_same_cnt); + node_num = node_power_lower_cnt + node_power_same_cnt; + if (node_num == 0) + node_num = node_record_count; + red1 /= node_num; for (i = 0, node_ptr = node_record_table_ptr; i < node_record_count; i++, node_ptr++) { if (!node_ptr->power || !node_ptr->power->new_cap_watts)