File: NEWS

package info (click to toggle)
slurm-wlm 24.11.5-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 51,508 kB
  • sloc: ansic: 529,598; exp: 64,795; python: 17,051; sh: 10,365; javascript: 6,528; makefile: 4,116; perl: 3,762; pascal: 131
file content (15965 lines) | stat: -rw-r--r-- 926,586 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
2595
2596
2597
2598
2599
2600
2601
2602
2603
2604
2605
2606
2607
2608
2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
2622
2623
2624
2625
2626
2627
2628
2629
2630
2631
2632
2633
2634
2635
2636
2637
2638
2639
2640
2641
2642
2643
2644
2645
2646
2647
2648
2649
2650
2651
2652
2653
2654
2655
2656
2657
2658
2659
2660
2661
2662
2663
2664
2665
2666
2667
2668
2669
2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
2689
2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725
2726
2727
2728
2729
2730
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
2806
2807
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
2818
2819
2820
2821
2822
2823
2824
2825
2826
2827
2828
2829
2830
2831
2832
2833
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
2862
2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
2873
2874
2875
2876
2877
2878
2879
2880
2881
2882
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
2900
2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
2913
2914
2915
2916
2917
2918
2919
2920
2921
2922
2923
2924
2925
2926
2927
2928
2929
2930
2931
2932
2933
2934
2935
2936
2937
2938
2939
2940
2941
2942
2943
2944
2945
2946
2947
2948
2949
2950
2951
2952
2953
2954
2955
2956
2957
2958
2959
2960
2961
2962
2963
2964
2965
2966
2967
2968
2969
2970
2971
2972
2973
2974
2975
2976
2977
2978
2979
2980
2981
2982
2983
2984
2985
2986
2987
2988
2989
2990
2991
2992
2993
2994
2995
2996
2997
2998
2999
3000
3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
3015
3016
3017
3018
3019
3020
3021
3022
3023
3024
3025
3026
3027
3028
3029
3030
3031
3032
3033
3034
3035
3036
3037
3038
3039
3040
3041
3042
3043
3044
3045
3046
3047
3048
3049
3050
3051
3052
3053
3054
3055
3056
3057
3058
3059
3060
3061
3062
3063
3064
3065
3066
3067
3068
3069
3070
3071
3072
3073
3074
3075
3076
3077
3078
3079
3080
3081
3082
3083
3084
3085
3086
3087
3088
3089
3090
3091
3092
3093
3094
3095
3096
3097
3098
3099
3100
3101
3102
3103
3104
3105
3106
3107
3108
3109
3110
3111
3112
3113
3114
3115
3116
3117
3118
3119
3120
3121
3122
3123
3124
3125
3126
3127
3128
3129
3130
3131
3132
3133
3134
3135
3136
3137
3138
3139
3140
3141
3142
3143
3144
3145
3146
3147
3148
3149
3150
3151
3152
3153
3154
3155
3156
3157
3158
3159
3160
3161
3162
3163
3164
3165
3166
3167
3168
3169
3170
3171
3172
3173
3174
3175
3176
3177
3178
3179
3180
3181
3182
3183
3184
3185
3186
3187
3188
3189
3190
3191
3192
3193
3194
3195
3196
3197
3198
3199
3200
3201
3202
3203
3204
3205
3206
3207
3208
3209
3210
3211
3212
3213
3214
3215
3216
3217
3218
3219
3220
3221
3222
3223
3224
3225
3226
3227
3228
3229
3230
3231
3232
3233
3234
3235
3236
3237
3238
3239
3240
3241
3242
3243
3244
3245
3246
3247
3248
3249
3250
3251
3252
3253
3254
3255
3256
3257
3258
3259
3260
3261
3262
3263
3264
3265
3266
3267
3268
3269
3270
3271
3272
3273
3274
3275
3276
3277
3278
3279
3280
3281
3282
3283
3284
3285
3286
3287
3288
3289
3290
3291
3292
3293
3294
3295
3296
3297
3298
3299
3300
3301
3302
3303
3304
3305
3306
3307
3308
3309
3310
3311
3312
3313
3314
3315
3316
3317
3318
3319
3320
3321
3322
3323
3324
3325
3326
3327
3328
3329
3330
3331
3332
3333
3334
3335
3336
3337
3338
3339
3340
3341
3342
3343
3344
3345
3346
3347
3348
3349
3350
3351
3352
3353
3354
3355
3356
3357
3358
3359
3360
3361
3362
3363
3364
3365
3366
3367
3368
3369
3370
3371
3372
3373
3374
3375
3376
3377
3378
3379
3380
3381
3382
3383
3384
3385
3386
3387
3388
3389
3390
3391
3392
3393
3394
3395
3396
3397
3398
3399
3400
3401
3402
3403
3404
3405
3406
3407
3408
3409
3410
3411
3412
3413
3414
3415
3416
3417
3418
3419
3420
3421
3422
3423
3424
3425
3426
3427
3428
3429
3430
3431
3432
3433
3434
3435
3436
3437
3438
3439
3440
3441
3442
3443
3444
3445
3446
3447
3448
3449
3450
3451
3452
3453
3454
3455
3456
3457
3458
3459
3460
3461
3462
3463
3464
3465
3466
3467
3468
3469
3470
3471
3472
3473
3474
3475
3476
3477
3478
3479
3480
3481
3482
3483
3484
3485
3486
3487
3488
3489
3490
3491
3492
3493
3494
3495
3496
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
3507
3508
3509
3510
3511
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
3522
3523
3524
3525
3526
3527
3528
3529
3530
3531
3532
3533
3534
3535
3536
3537
3538
3539
3540
3541
3542
3543
3544
3545
3546
3547
3548
3549
3550
3551
3552
3553
3554
3555
3556
3557
3558
3559
3560
3561
3562
3563
3564
3565
3566
3567
3568
3569
3570
3571
3572
3573
3574
3575
3576
3577
3578
3579
3580
3581
3582
3583
3584
3585
3586
3587
3588
3589
3590
3591
3592
3593
3594
3595
3596
3597
3598
3599
3600
3601
3602
3603
3604
3605
3606
3607
3608
3609
3610
3611
3612
3613
3614
3615
3616
3617
3618
3619
3620
3621
3622
3623
3624
3625
3626
3627
3628
3629
3630
3631
3632
3633
3634
3635
3636
3637
3638
3639
3640
3641
3642
3643
3644
3645
3646
3647
3648
3649
3650
3651
3652
3653
3654
3655
3656
3657
3658
3659
3660
3661
3662
3663
3664
3665
3666
3667
3668
3669
3670
3671
3672
3673
3674
3675
3676
3677
3678
3679
3680
3681
3682
3683
3684
3685
3686
3687
3688
3689
3690
3691
3692
3693
3694
3695
3696
3697
3698
3699
3700
3701
3702
3703
3704
3705
3706
3707
3708
3709
3710
3711
3712
3713
3714
3715
3716
3717
3718
3719
3720
3721
3722
3723
3724
3725
3726
3727
3728
3729
3730
3731
3732
3733
3734
3735
3736
3737
3738
3739
3740
3741
3742
3743
3744
3745
3746
3747
3748
3749
3750
3751
3752
3753
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
3764
3765
3766
3767
3768
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
3779
3780
3781
3782
3783
3784
3785
3786
3787
3788
3789
3790
3791
3792
3793
3794
3795
3796
3797
3798
3799
3800
3801
3802
3803
3804
3805
3806
3807
3808
3809
3810
3811
3812
3813
3814
3815
3816
3817
3818
3819
3820
3821
3822
3823
3824
3825
3826
3827
3828
3829
3830
3831
3832
3833
3834
3835
3836
3837
3838
3839
3840
3841
3842
3843
3844
3845
3846
3847
3848
3849
3850
3851
3852
3853
3854
3855
3856
3857
3858
3859
3860
3861
3862
3863
3864
3865
3866
3867
3868
3869
3870
3871
3872
3873
3874
3875
3876
3877
3878
3879
3880
3881
3882
3883
3884
3885
3886
3887
3888
3889
3890
3891
3892
3893
3894
3895
3896
3897
3898
3899
3900
3901
3902
3903
3904
3905
3906
3907
3908
3909
3910
3911
3912
3913
3914
3915
3916
3917
3918
3919
3920
3921
3922
3923
3924
3925
3926
3927
3928
3929
3930
3931
3932
3933
3934
3935
3936
3937
3938
3939
3940
3941
3942
3943
3944
3945
3946
3947
3948
3949
3950
3951
3952
3953
3954
3955
3956
3957
3958
3959
3960
3961
3962
3963
3964
3965
3966
3967
3968
3969
3970
3971
3972
3973
3974
3975
3976
3977
3978
3979
3980
3981
3982
3983
3984
3985
3986
3987
3988
3989
3990
3991
3992
3993
3994
3995
3996
3997
3998
3999
4000
4001
4002
4003
4004
4005
4006
4007
4008
4009
4010
4011
4012
4013
4014
4015
4016
4017
4018
4019
4020
4021
4022
4023
4024
4025
4026
4027
4028
4029
4030
4031
4032
4033
4034
4035
4036
4037
4038
4039
4040
4041
4042
4043
4044
4045
4046
4047
4048
4049
4050
4051
4052
4053
4054
4055
4056
4057
4058
4059
4060
4061
4062
4063
4064
4065
4066
4067
4068
4069
4070
4071
4072
4073
4074
4075
4076
4077
4078
4079
4080
4081
4082
4083
4084
4085
4086
4087
4088
4089
4090
4091
4092
4093
4094
4095
4096
4097
4098
4099
4100
4101
4102
4103
4104
4105
4106
4107
4108
4109
4110
4111
4112
4113
4114
4115
4116
4117
4118
4119
4120
4121
4122
4123
4124
4125
4126
4127
4128
4129
4130
4131
4132
4133
4134
4135
4136
4137
4138
4139
4140
4141
4142
4143
4144
4145
4146
4147
4148
4149
4150
4151
4152
4153
4154
4155
4156
4157
4158
4159
4160
4161
4162
4163
4164
4165
4166
4167
4168
4169
4170
4171
4172
4173
4174
4175
4176
4177
4178
4179
4180
4181
4182
4183
4184
4185
4186
4187
4188
4189
4190
4191
4192
4193
4194
4195
4196
4197
4198
4199
4200
4201
4202
4203
4204
4205
4206
4207
4208
4209
4210
4211
4212
4213
4214
4215
4216
4217
4218
4219
4220
4221
4222
4223
4224
4225
4226
4227
4228
4229
4230
4231
4232
4233
4234
4235
4236
4237
4238
4239
4240
4241
4242
4243
4244
4245
4246
4247
4248
4249
4250
4251
4252
4253
4254
4255
4256
4257
4258
4259
4260
4261
4262
4263
4264
4265
4266
4267
4268
4269
4270
4271
4272
4273
4274
4275
4276
4277
4278
4279
4280
4281
4282
4283
4284
4285
4286
4287
4288
4289
4290
4291
4292
4293
4294
4295
4296
4297
4298
4299
4300
4301
4302
4303
4304
4305
4306
4307
4308
4309
4310
4311
4312
4313
4314
4315
4316
4317
4318
4319
4320
4321
4322
4323
4324
4325
4326
4327
4328
4329
4330
4331
4332
4333
4334
4335
4336
4337
4338
4339
4340
4341
4342
4343
4344
4345
4346
4347
4348
4349
4350
4351
4352
4353
4354
4355
4356
4357
4358
4359
4360
4361
4362
4363
4364
4365
4366
4367
4368
4369
4370
4371
4372
4373
4374
4375
4376
4377
4378
4379
4380
4381
4382
4383
4384
4385
4386
4387
4388
4389
4390
4391
4392
4393
4394
4395
4396
4397
4398
4399
4400
4401
4402
4403
4404
4405
4406
4407
4408
4409
4410
4411
4412
4413
4414
4415
4416
4417
4418
4419
4420
4421
4422
4423
4424
4425
4426
4427
4428
4429
4430
4431
4432
4433
4434
4435
4436
4437
4438
4439
4440
4441
4442
4443
4444
4445
4446
4447
4448
4449
4450
4451
4452
4453
4454
4455
4456
4457
4458
4459
4460
4461
4462
4463
4464
4465
4466
4467
4468
4469
4470
4471
4472
4473
4474
4475
4476
4477
4478
4479
4480
4481
4482
4483
4484
4485
4486
4487
4488
4489
4490
4491
4492
4493
4494
4495
4496
4497
4498
4499
4500
4501
4502
4503
4504
4505
4506
4507
4508
4509
4510
4511
4512
4513
4514
4515
4516
4517
4518
4519
4520
4521
4522
4523
4524
4525
4526
4527
4528
4529
4530
4531
4532
4533
4534
4535
4536
4537
4538
4539
4540
4541
4542
4543
4544
4545
4546
4547
4548
4549
4550
4551
4552
4553
4554
4555
4556
4557
4558
4559
4560
4561
4562
4563
4564
4565
4566
4567
4568
4569
4570
4571
4572
4573
4574
4575
4576
4577
4578
4579
4580
4581
4582
4583
4584
4585
4586
4587
4588
4589
4590
4591
4592
4593
4594
4595
4596
4597
4598
4599
4600
4601
4602
4603
4604
4605
4606
4607
4608
4609
4610
4611
4612
4613
4614
4615
4616
4617
4618
4619
4620
4621
4622
4623
4624
4625
4626
4627
4628
4629
4630
4631
4632
4633
4634
4635
4636
4637
4638
4639
4640
4641
4642
4643
4644
4645
4646
4647
4648
4649
4650
4651
4652
4653
4654
4655
4656
4657
4658
4659
4660
4661
4662
4663
4664
4665
4666
4667
4668
4669
4670
4671
4672
4673
4674
4675
4676
4677
4678
4679
4680
4681
4682
4683
4684
4685
4686
4687
4688
4689
4690
4691
4692
4693
4694
4695
4696
4697
4698
4699
4700
4701
4702
4703
4704
4705
4706
4707
4708
4709
4710
4711
4712
4713
4714
4715
4716
4717
4718
4719
4720
4721
4722
4723
4724
4725
4726
4727
4728
4729
4730
4731
4732
4733
4734
4735
4736
4737
4738
4739
4740
4741
4742
4743
4744
4745
4746
4747
4748
4749
4750
4751
4752
4753
4754
4755
4756
4757
4758
4759
4760
4761
4762
4763
4764
4765
4766
4767
4768
4769
4770
4771
4772
4773
4774
4775
4776
4777
4778
4779
4780
4781
4782
4783
4784
4785
4786
4787
4788
4789
4790
4791
4792
4793
4794
4795
4796
4797
4798
4799
4800
4801
4802
4803
4804
4805
4806
4807
4808
4809
4810
4811
4812
4813
4814
4815
4816
4817
4818
4819
4820
4821
4822
4823
4824
4825
4826
4827
4828
4829
4830
4831
4832
4833
4834
4835
4836
4837
4838
4839
4840
4841
4842
4843
4844
4845
4846
4847
4848
4849
4850
4851
4852
4853
4854
4855
4856
4857
4858
4859
4860
4861
4862
4863
4864
4865
4866
4867
4868
4869
4870
4871
4872
4873
4874
4875
4876
4877
4878
4879
4880
4881
4882
4883
4884
4885
4886
4887
4888
4889
4890
4891
4892
4893
4894
4895
4896
4897
4898
4899
4900
4901
4902
4903
4904
4905
4906
4907
4908
4909
4910
4911
4912
4913
4914
4915
4916
4917
4918
4919
4920
4921
4922
4923
4924
4925
4926
4927
4928
4929
4930
4931
4932
4933
4934
4935
4936
4937
4938
4939
4940
4941
4942
4943
4944
4945
4946
4947
4948
4949
4950
4951
4952
4953
4954
4955
4956
4957
4958
4959
4960
4961
4962
4963
4964
4965
4966
4967
4968
4969
4970
4971
4972
4973
4974
4975
4976
4977
4978
4979
4980
4981
4982
4983
4984
4985
4986
4987
4988
4989
4990
4991
4992
4993
4994
4995
4996
4997
4998
4999
5000
5001
5002
5003
5004
5005
5006
5007
5008
5009
5010
5011
5012
5013
5014
5015
5016
5017
5018
5019
5020
5021
5022
5023
5024
5025
5026
5027
5028
5029
5030
5031
5032
5033
5034
5035
5036
5037
5038
5039
5040
5041
5042
5043
5044
5045
5046
5047
5048
5049
5050
5051
5052
5053
5054
5055
5056
5057
5058
5059
5060
5061
5062
5063
5064
5065
5066
5067
5068
5069
5070
5071
5072
5073
5074
5075
5076
5077
5078
5079
5080
5081
5082
5083
5084
5085
5086
5087
5088
5089
5090
5091
5092
5093
5094
5095
5096
5097
5098
5099
5100
5101
5102
5103
5104
5105
5106
5107
5108
5109
5110
5111
5112
5113
5114
5115
5116
5117
5118
5119
5120
5121
5122
5123
5124
5125
5126
5127
5128
5129
5130
5131
5132
5133
5134
5135
5136
5137
5138
5139
5140
5141
5142
5143
5144
5145
5146
5147
5148
5149
5150
5151
5152
5153
5154
5155
5156
5157
5158
5159
5160
5161
5162
5163
5164
5165
5166
5167
5168
5169
5170
5171
5172
5173
5174
5175
5176
5177
5178
5179
5180
5181
5182
5183
5184
5185
5186
5187
5188
5189
5190
5191
5192
5193
5194
5195
5196
5197
5198
5199
5200
5201
5202
5203
5204
5205
5206
5207
5208
5209
5210
5211
5212
5213
5214
5215
5216
5217
5218
5219
5220
5221
5222
5223
5224
5225
5226
5227
5228
5229
5230
5231
5232
5233
5234
5235
5236
5237
5238
5239
5240
5241
5242
5243
5244
5245
5246
5247
5248
5249
5250
5251
5252
5253
5254
5255
5256
5257
5258
5259
5260
5261
5262
5263
5264
5265
5266
5267
5268
5269
5270
5271
5272
5273
5274
5275
5276
5277
5278
5279
5280
5281
5282
5283
5284
5285
5286
5287
5288
5289
5290
5291
5292
5293
5294
5295
5296
5297
5298
5299
5300
5301
5302
5303
5304
5305
5306
5307
5308
5309
5310
5311
5312
5313
5314
5315
5316
5317
5318
5319
5320
5321
5322
5323
5324
5325
5326
5327
5328
5329
5330
5331
5332
5333
5334
5335
5336
5337
5338
5339
5340
5341
5342
5343
5344
5345
5346
5347
5348
5349
5350
5351
5352
5353
5354
5355
5356
5357
5358
5359
5360
5361
5362
5363
5364
5365
5366
5367
5368
5369
5370
5371
5372
5373
5374
5375
5376
5377
5378
5379
5380
5381
5382
5383
5384
5385
5386
5387
5388
5389
5390
5391
5392
5393
5394
5395
5396
5397
5398
5399
5400
5401
5402
5403
5404
5405
5406
5407
5408
5409
5410
5411
5412
5413
5414
5415
5416
5417
5418
5419
5420
5421
5422
5423
5424
5425
5426
5427
5428
5429
5430
5431
5432
5433
5434
5435
5436
5437
5438
5439
5440
5441
5442
5443
5444
5445
5446
5447
5448
5449
5450
5451
5452
5453
5454
5455
5456
5457
5458
5459
5460
5461
5462
5463
5464
5465
5466
5467
5468
5469
5470
5471
5472
5473
5474
5475
5476
5477
5478
5479
5480
5481
5482
5483
5484
5485
5486
5487
5488
5489
5490
5491
5492
5493
5494
5495
5496
5497
5498
5499
5500
5501
5502
5503
5504
5505
5506
5507
5508
5509
5510
5511
5512
5513
5514
5515
5516
5517
5518
5519
5520
5521
5522
5523
5524
5525
5526
5527
5528
5529
5530
5531
5532
5533
5534
5535
5536
5537
5538
5539
5540
5541
5542
5543
5544
5545
5546
5547
5548
5549
5550
5551
5552
5553
5554
5555
5556
5557
5558
5559
5560
5561
5562
5563
5564
5565
5566
5567
5568
5569
5570
5571
5572
5573
5574
5575
5576
5577
5578
5579
5580
5581
5582
5583
5584
5585
5586
5587
5588
5589
5590
5591
5592
5593
5594
5595
5596
5597
5598
5599
5600
5601
5602
5603
5604
5605
5606
5607
5608
5609
5610
5611
5612
5613
5614
5615
5616
5617
5618
5619
5620
5621
5622
5623
5624
5625
5626
5627
5628
5629
5630
5631
5632
5633
5634
5635
5636
5637
5638
5639
5640
5641
5642
5643
5644
5645
5646
5647
5648
5649
5650
5651
5652
5653
5654
5655
5656
5657
5658
5659
5660
5661
5662
5663
5664
5665
5666
5667
5668
5669
5670
5671
5672
5673
5674
5675
5676
5677
5678
5679
5680
5681
5682
5683
5684
5685
5686
5687
5688
5689
5690
5691
5692
5693
5694
5695
5696
5697
5698
5699
5700
5701
5702
5703
5704
5705
5706
5707
5708
5709
5710
5711
5712
5713
5714
5715
5716
5717
5718
5719
5720
5721
5722
5723
5724
5725
5726
5727
5728
5729
5730
5731
5732
5733
5734
5735
5736
5737
5738
5739
5740
5741
5742
5743
5744
5745
5746
5747
5748
5749
5750
5751
5752
5753
5754
5755
5756
5757
5758
5759
5760
5761
5762
5763
5764
5765
5766
5767
5768
5769
5770
5771
5772
5773
5774
5775
5776
5777
5778
5779
5780
5781
5782
5783
5784
5785
5786
5787
5788
5789
5790
5791
5792
5793
5794
5795
5796
5797
5798
5799
5800
5801
5802
5803
5804
5805
5806
5807
5808
5809
5810
5811
5812
5813
5814
5815
5816
5817
5818
5819
5820
5821
5822
5823
5824
5825
5826
5827
5828
5829
5830
5831
5832
5833
5834
5835
5836
5837
5838
5839
5840
5841
5842
5843
5844
5845
5846
5847
5848
5849
5850
5851
5852
5853
5854
5855
5856
5857
5858
5859
5860
5861
5862
5863
5864
5865
5866
5867
5868
5869
5870
5871
5872
5873
5874
5875
5876
5877
5878
5879
5880
5881
5882
5883
5884
5885
5886
5887
5888
5889
5890
5891
5892
5893
5894
5895
5896
5897
5898
5899
5900
5901
5902
5903
5904
5905
5906
5907
5908
5909
5910
5911
5912
5913
5914
5915
5916
5917
5918
5919
5920
5921
5922
5923
5924
5925
5926
5927
5928
5929
5930
5931
5932
5933
5934
5935
5936
5937
5938
5939
5940
5941
5942
5943
5944
5945
5946
5947
5948
5949
5950
5951
5952
5953
5954
5955
5956
5957
5958
5959
5960
5961
5962
5963
5964
5965
5966
5967
5968
5969
5970
5971
5972
5973
5974
5975
5976
5977
5978
5979
5980
5981
5982
5983
5984
5985
5986
5987
5988
5989
5990
5991
5992
5993
5994
5995
5996
5997
5998
5999
6000
6001
6002
6003
6004
6005
6006
6007
6008
6009
6010
6011
6012
6013
6014
6015
6016
6017
6018
6019
6020
6021
6022
6023
6024
6025
6026
6027
6028
6029
6030
6031
6032
6033
6034
6035
6036
6037
6038
6039
6040
6041
6042
6043
6044
6045
6046
6047
6048
6049
6050
6051
6052
6053
6054
6055
6056
6057
6058
6059
6060
6061
6062
6063
6064
6065
6066
6067
6068
6069
6070
6071
6072
6073
6074
6075
6076
6077
6078
6079
6080
6081
6082
6083
6084
6085
6086
6087
6088
6089
6090
6091
6092
6093
6094
6095
6096
6097
6098
6099
6100
6101
6102
6103
6104
6105
6106
6107
6108
6109
6110
6111
6112
6113
6114
6115
6116
6117
6118
6119
6120
6121
6122
6123
6124
6125
6126
6127
6128
6129
6130
6131
6132
6133
6134
6135
6136
6137
6138
6139
6140
6141
6142
6143
6144
6145
6146
6147
6148
6149
6150
6151
6152
6153
6154
6155
6156
6157
6158
6159
6160
6161
6162
6163
6164
6165
6166
6167
6168
6169
6170
6171
6172
6173
6174
6175
6176
6177
6178
6179
6180
6181
6182
6183
6184
6185
6186
6187
6188
6189
6190
6191
6192
6193
6194
6195
6196
6197
6198
6199
6200
6201
6202
6203
6204
6205
6206
6207
6208
6209
6210
6211
6212
6213
6214
6215
6216
6217
6218
6219
6220
6221
6222
6223
6224
6225
6226
6227
6228
6229
6230
6231
6232
6233
6234
6235
6236
6237
6238
6239
6240
6241
6242
6243
6244
6245
6246
6247
6248
6249
6250
6251
6252
6253
6254
6255
6256
6257
6258
6259
6260
6261
6262
6263
6264
6265
6266
6267
6268
6269
6270
6271
6272
6273
6274
6275
6276
6277
6278
6279
6280
6281
6282
6283
6284
6285
6286
6287
6288
6289
6290
6291
6292
6293
6294
6295
6296
6297
6298
6299
6300
6301
6302
6303
6304
6305
6306
6307
6308
6309
6310
6311
6312
6313
6314
6315
6316
6317
6318
6319
6320
6321
6322
6323
6324
6325
6326
6327
6328
6329
6330
6331
6332
6333
6334
6335
6336
6337
6338
6339
6340
6341
6342
6343
6344
6345
6346
6347
6348
6349
6350
6351
6352
6353
6354
6355
6356
6357
6358
6359
6360
6361
6362
6363
6364
6365
6366
6367
6368
6369
6370
6371
6372
6373
6374
6375
6376
6377
6378
6379
6380
6381
6382
6383
6384
6385
6386
6387
6388
6389
6390
6391
6392
6393
6394
6395
6396
6397
6398
6399
6400
6401
6402
6403
6404
6405
6406
6407
6408
6409
6410
6411
6412
6413
6414
6415
6416
6417
6418
6419
6420
6421
6422
6423
6424
6425
6426
6427
6428
6429
6430
6431
6432
6433
6434
6435
6436
6437
6438
6439
6440
6441
6442
6443
6444
6445
6446
6447
6448
6449
6450
6451
6452
6453
6454
6455
6456
6457
6458
6459
6460
6461
6462
6463
6464
6465
6466
6467
6468
6469
6470
6471
6472
6473
6474
6475
6476
6477
6478
6479
6480
6481
6482
6483
6484
6485
6486
6487
6488
6489
6490
6491
6492
6493
6494
6495
6496
6497
6498
6499
6500
6501
6502
6503
6504
6505
6506
6507
6508
6509
6510
6511
6512
6513
6514
6515
6516
6517
6518
6519
6520
6521
6522
6523
6524
6525
6526
6527
6528
6529
6530
6531
6532
6533
6534
6535
6536
6537
6538
6539
6540
6541
6542
6543
6544
6545
6546
6547
6548
6549
6550
6551
6552
6553
6554
6555
6556
6557
6558
6559
6560
6561
6562
6563
6564
6565
6566
6567
6568
6569
6570
6571
6572
6573
6574
6575
6576
6577
6578
6579
6580
6581
6582
6583
6584
6585
6586
6587
6588
6589
6590
6591
6592
6593
6594
6595
6596
6597
6598
6599
6600
6601
6602
6603
6604
6605
6606
6607
6608
6609
6610
6611
6612
6613
6614
6615
6616
6617
6618
6619
6620
6621
6622
6623
6624
6625
6626
6627
6628
6629
6630
6631
6632
6633
6634
6635
6636
6637
6638
6639
6640
6641
6642
6643
6644
6645
6646
6647
6648
6649
6650
6651
6652
6653
6654
6655
6656
6657
6658
6659
6660
6661
6662
6663
6664
6665
6666
6667
6668
6669
6670
6671
6672
6673
6674
6675
6676
6677
6678
6679
6680
6681
6682
6683
6684
6685
6686
6687
6688
6689
6690
6691
6692
6693
6694
6695
6696
6697
6698
6699
6700
6701
6702
6703
6704
6705
6706
6707
6708
6709
6710
6711
6712
6713
6714
6715
6716
6717
6718
6719
6720
6721
6722
6723
6724
6725
6726
6727
6728
6729
6730
6731
6732
6733
6734
6735
6736
6737
6738
6739
6740
6741
6742
6743
6744
6745
6746
6747
6748
6749
6750
6751
6752
6753
6754
6755
6756
6757
6758
6759
6760
6761
6762
6763
6764
6765
6766
6767
6768
6769
6770
6771
6772
6773
6774
6775
6776
6777
6778
6779
6780
6781
6782
6783
6784
6785
6786
6787
6788
6789
6790
6791
6792
6793
6794
6795
6796
6797
6798
6799
6800
6801
6802
6803
6804
6805
6806
6807
6808
6809
6810
6811
6812
6813
6814
6815
6816
6817
6818
6819
6820
6821
6822
6823
6824
6825
6826
6827
6828
6829
6830
6831
6832
6833
6834
6835
6836
6837
6838
6839
6840
6841
6842
6843
6844
6845
6846
6847
6848
6849
6850
6851
6852
6853
6854
6855
6856
6857
6858
6859
6860
6861
6862
6863
6864
6865
6866
6867
6868
6869
6870
6871
6872
6873
6874
6875
6876
6877
6878
6879
6880
6881
6882
6883
6884
6885
6886
6887
6888
6889
6890
6891
6892
6893
6894
6895
6896
6897
6898
6899
6900
6901
6902
6903
6904
6905
6906
6907
6908
6909
6910
6911
6912
6913
6914
6915
6916
6917
6918
6919
6920
6921
6922
6923
6924
6925
6926
6927
6928
6929
6930
6931
6932
6933
6934
6935
6936
6937
6938
6939
6940
6941
6942
6943
6944
6945
6946
6947
6948
6949
6950
6951
6952
6953
6954
6955
6956
6957
6958
6959
6960
6961
6962
6963
6964
6965
6966
6967
6968
6969
6970
6971
6972
6973
6974
6975
6976
6977
6978
6979
6980
6981
6982
6983
6984
6985
6986
6987
6988
6989
6990
6991
6992
6993
6994
6995
6996
6997
6998
6999
7000
7001
7002
7003
7004
7005
7006
7007
7008
7009
7010
7011
7012
7013
7014
7015
7016
7017
7018
7019
7020
7021
7022
7023
7024
7025
7026
7027
7028
7029
7030
7031
7032
7033
7034
7035
7036
7037
7038
7039
7040
7041
7042
7043
7044
7045
7046
7047
7048
7049
7050
7051
7052
7053
7054
7055
7056
7057
7058
7059
7060
7061
7062
7063
7064
7065
7066
7067
7068
7069
7070
7071
7072
7073
7074
7075
7076
7077
7078
7079
7080
7081
7082
7083
7084
7085
7086
7087
7088
7089
7090
7091
7092
7093
7094
7095
7096
7097
7098
7099
7100
7101
7102
7103
7104
7105
7106
7107
7108
7109
7110
7111
7112
7113
7114
7115
7116
7117
7118
7119
7120
7121
7122
7123
7124
7125
7126
7127
7128
7129
7130
7131
7132
7133
7134
7135
7136
7137
7138
7139
7140
7141
7142
7143
7144
7145
7146
7147
7148
7149
7150
7151
7152
7153
7154
7155
7156
7157
7158
7159
7160
7161
7162
7163
7164
7165
7166
7167
7168
7169
7170
7171
7172
7173
7174
7175
7176
7177
7178
7179
7180
7181
7182
7183
7184
7185
7186
7187
7188
7189
7190
7191
7192
7193
7194
7195
7196
7197
7198
7199
7200
7201
7202
7203
7204
7205
7206
7207
7208
7209
7210
7211
7212
7213
7214
7215
7216
7217
7218
7219
7220
7221
7222
7223
7224
7225
7226
7227
7228
7229
7230
7231
7232
7233
7234
7235
7236
7237
7238
7239
7240
7241
7242
7243
7244
7245
7246
7247
7248
7249
7250
7251
7252
7253
7254
7255
7256
7257
7258
7259
7260
7261
7262
7263
7264
7265
7266
7267
7268
7269
7270
7271
7272
7273
7274
7275
7276
7277
7278
7279
7280
7281
7282
7283
7284
7285
7286
7287
7288
7289
7290
7291
7292
7293
7294
7295
7296
7297
7298
7299
7300
7301
7302
7303
7304
7305
7306
7307
7308
7309
7310
7311
7312
7313
7314
7315
7316
7317
7318
7319
7320
7321
7322
7323
7324
7325
7326
7327
7328
7329
7330
7331
7332
7333
7334
7335
7336
7337
7338
7339
7340
7341
7342
7343
7344
7345
7346
7347
7348
7349
7350
7351
7352
7353
7354
7355
7356
7357
7358
7359
7360
7361
7362
7363
7364
7365
7366
7367
7368
7369
7370
7371
7372
7373
7374
7375
7376
7377
7378
7379
7380
7381
7382
7383
7384
7385
7386
7387
7388
7389
7390
7391
7392
7393
7394
7395
7396
7397
7398
7399
7400
7401
7402
7403
7404
7405
7406
7407
7408
7409
7410
7411
7412
7413
7414
7415
7416
7417
7418
7419
7420
7421
7422
7423
7424
7425
7426
7427
7428
7429
7430
7431
7432
7433
7434
7435
7436
7437
7438
7439
7440
7441
7442
7443
7444
7445
7446
7447
7448
7449
7450
7451
7452
7453
7454
7455
7456
7457
7458
7459
7460
7461
7462
7463
7464
7465
7466
7467
7468
7469
7470
7471
7472
7473
7474
7475
7476
7477
7478
7479
7480
7481
7482
7483
7484
7485
7486
7487
7488
7489
7490
7491
7492
7493
7494
7495
7496
7497
7498
7499
7500
7501
7502
7503
7504
7505
7506
7507
7508
7509
7510
7511
7512
7513
7514
7515
7516
7517
7518
7519
7520
7521
7522
7523
7524
7525
7526
7527
7528
7529
7530
7531
7532
7533
7534
7535
7536
7537
7538
7539
7540
7541
7542
7543
7544
7545
7546
7547
7548
7549
7550
7551
7552
7553
7554
7555
7556
7557
7558
7559
7560
7561
7562
7563
7564
7565
7566
7567
7568
7569
7570
7571
7572
7573
7574
7575
7576
7577
7578
7579
7580
7581
7582
7583
7584
7585
7586
7587
7588
7589
7590
7591
7592
7593
7594
7595
7596
7597
7598
7599
7600
7601
7602
7603
7604
7605
7606
7607
7608
7609
7610
7611
7612
7613
7614
7615
7616
7617
7618
7619
7620
7621
7622
7623
7624
7625
7626
7627
7628
7629
7630
7631
7632
7633
7634
7635
7636
7637
7638
7639
7640
7641
7642
7643
7644
7645
7646
7647
7648
7649
7650
7651
7652
7653
7654
7655
7656
7657
7658
7659
7660
7661
7662
7663
7664
7665
7666
7667
7668
7669
7670
7671
7672
7673
7674
7675
7676
7677
7678
7679
7680
7681
7682
7683
7684
7685
7686
7687
7688
7689
7690
7691
7692
7693
7694
7695
7696
7697
7698
7699
7700
7701
7702
7703
7704
7705
7706
7707
7708
7709
7710
7711
7712
7713
7714
7715
7716
7717
7718
7719
7720
7721
7722
7723
7724
7725
7726
7727
7728
7729
7730
7731
7732
7733
7734
7735
7736
7737
7738
7739
7740
7741
7742
7743
7744
7745
7746
7747
7748
7749
7750
7751
7752
7753
7754
7755
7756
7757
7758
7759
7760
7761
7762
7763
7764
7765
7766
7767
7768
7769
7770
7771
7772
7773
7774
7775
7776
7777
7778
7779
7780
7781
7782
7783
7784
7785
7786
7787
7788
7789
7790
7791
7792
7793
7794
7795
7796
7797
7798
7799
7800
7801
7802
7803
7804
7805
7806
7807
7808
7809
7810
7811
7812
7813
7814
7815
7816
7817
7818
7819
7820
7821
7822
7823
7824
7825
7826
7827
7828
7829
7830
7831
7832
7833
7834
7835
7836
7837
7838
7839
7840
7841
7842
7843
7844
7845
7846
7847
7848
7849
7850
7851
7852
7853
7854
7855
7856
7857
7858
7859
7860
7861
7862
7863
7864
7865
7866
7867
7868
7869
7870
7871
7872
7873
7874
7875
7876
7877
7878
7879
7880
7881
7882
7883
7884
7885
7886
7887
7888
7889
7890
7891
7892
7893
7894
7895
7896
7897
7898
7899
7900
7901
7902
7903
7904
7905
7906
7907
7908
7909
7910
7911
7912
7913
7914
7915
7916
7917
7918
7919
7920
7921
7922
7923
7924
7925
7926
7927
7928
7929
7930
7931
7932
7933
7934
7935
7936
7937
7938
7939
7940
7941
7942
7943
7944
7945
7946
7947
7948
7949
7950
7951
7952
7953
7954
7955
7956
7957
7958
7959
7960
7961
7962
7963
7964
7965
7966
7967
7968
7969
7970
7971
7972
7973
7974
7975
7976
7977
7978
7979
7980
7981
7982
7983
7984
7985
7986
7987
7988
7989
7990
7991
7992
7993
7994
7995
7996
7997
7998
7999
8000
8001
8002
8003
8004
8005
8006
8007
8008
8009
8010
8011
8012
8013
8014
8015
8016
8017
8018
8019
8020
8021
8022
8023
8024
8025
8026
8027
8028
8029
8030
8031
8032
8033
8034
8035
8036
8037
8038
8039
8040
8041
8042
8043
8044
8045
8046
8047
8048
8049
8050
8051
8052
8053
8054
8055
8056
8057
8058
8059
8060
8061
8062
8063
8064
8065
8066
8067
8068
8069
8070
8071
8072
8073
8074
8075
8076
8077
8078
8079
8080
8081
8082
8083
8084
8085
8086
8087
8088
8089
8090
8091
8092
8093
8094
8095
8096
8097
8098
8099
8100
8101
8102
8103
8104
8105
8106
8107
8108
8109
8110
8111
8112
8113
8114
8115
8116
8117
8118
8119
8120
8121
8122
8123
8124
8125
8126
8127
8128
8129
8130
8131
8132
8133
8134
8135
8136
8137
8138
8139
8140
8141
8142
8143
8144
8145
8146
8147
8148
8149
8150
8151
8152
8153
8154
8155
8156
8157
8158
8159
8160
8161
8162
8163
8164
8165
8166
8167
8168
8169
8170
8171
8172
8173
8174
8175
8176
8177
8178
8179
8180
8181
8182
8183
8184
8185
8186
8187
8188
8189
8190
8191
8192
8193
8194
8195
8196
8197
8198
8199
8200
8201
8202
8203
8204
8205
8206
8207
8208
8209
8210
8211
8212
8213
8214
8215
8216
8217
8218
8219
8220
8221
8222
8223
8224
8225
8226
8227
8228
8229
8230
8231
8232
8233
8234
8235
8236
8237
8238
8239
8240
8241
8242
8243
8244
8245
8246
8247
8248
8249
8250
8251
8252
8253
8254
8255
8256
8257
8258
8259
8260
8261
8262
8263
8264
8265
8266
8267
8268
8269
8270
8271
8272
8273
8274
8275
8276
8277
8278
8279
8280
8281
8282
8283
8284
8285
8286
8287
8288
8289
8290
8291
8292
8293
8294
8295
8296
8297
8298
8299
8300
8301
8302
8303
8304
8305
8306
8307
8308
8309
8310
8311
8312
8313
8314
8315
8316
8317
8318
8319
8320
8321
8322
8323
8324
8325
8326
8327
8328
8329
8330
8331
8332
8333
8334
8335
8336
8337
8338
8339
8340
8341
8342
8343
8344
8345
8346
8347
8348
8349
8350
8351
8352
8353
8354
8355
8356
8357
8358
8359
8360
8361
8362
8363
8364
8365
8366
8367
8368
8369
8370
8371
8372
8373
8374
8375
8376
8377
8378
8379
8380
8381
8382
8383
8384
8385
8386
8387
8388
8389
8390
8391
8392
8393
8394
8395
8396
8397
8398
8399
8400
8401
8402
8403
8404
8405
8406
8407
8408
8409
8410
8411
8412
8413
8414
8415
8416
8417
8418
8419
8420
8421
8422
8423
8424
8425
8426
8427
8428
8429
8430
8431
8432
8433
8434
8435
8436
8437
8438
8439
8440
8441
8442
8443
8444
8445
8446
8447
8448
8449
8450
8451
8452
8453
8454
8455
8456
8457
8458
8459
8460
8461
8462
8463
8464
8465
8466
8467
8468
8469
8470
8471
8472
8473
8474
8475
8476
8477
8478
8479
8480
8481
8482
8483
8484
8485
8486
8487
8488
8489
8490
8491
8492
8493
8494
8495
8496
8497
8498
8499
8500
8501
8502
8503
8504
8505
8506
8507
8508
8509
8510
8511
8512
8513
8514
8515
8516
8517
8518
8519
8520
8521
8522
8523
8524
8525
8526
8527
8528
8529
8530
8531
8532
8533
8534
8535
8536
8537
8538
8539
8540
8541
8542
8543
8544
8545
8546
8547
8548
8549
8550
8551
8552
8553
8554
8555
8556
8557
8558
8559
8560
8561
8562
8563
8564
8565
8566
8567
8568
8569
8570
8571
8572
8573
8574
8575
8576
8577
8578
8579
8580
8581
8582
8583
8584
8585
8586
8587
8588
8589
8590
8591
8592
8593
8594
8595
8596
8597
8598
8599
8600
8601
8602
8603
8604
8605
8606
8607
8608
8609
8610
8611
8612
8613
8614
8615
8616
8617
8618
8619
8620
8621
8622
8623
8624
8625
8626
8627
8628
8629
8630
8631
8632
8633
8634
8635
8636
8637
8638
8639
8640
8641
8642
8643
8644
8645
8646
8647
8648
8649
8650
8651
8652
8653
8654
8655
8656
8657
8658
8659
8660
8661
8662
8663
8664
8665
8666
8667
8668
8669
8670
8671
8672
8673
8674
8675
8676
8677
8678
8679
8680
8681
8682
8683
8684
8685
8686
8687
8688
8689
8690
8691
8692
8693
8694
8695
8696
8697
8698
8699
8700
8701
8702
8703
8704
8705
8706
8707
8708
8709
8710
8711
8712
8713
8714
8715
8716
8717
8718
8719
8720
8721
8722
8723
8724
8725
8726
8727
8728
8729
8730
8731
8732
8733
8734
8735
8736
8737
8738
8739
8740
8741
8742
8743
8744
8745
8746
8747
8748
8749
8750
8751
8752
8753
8754
8755
8756
8757
8758
8759
8760
8761
8762
8763
8764
8765
8766
8767
8768
8769
8770
8771
8772
8773
8774
8775
8776
8777
8778
8779
8780
8781
8782
8783
8784
8785
8786
8787
8788
8789
8790
8791
8792
8793
8794
8795
8796
8797
8798
8799
8800
8801
8802
8803
8804
8805
8806
8807
8808
8809
8810
8811
8812
8813
8814
8815
8816
8817
8818
8819
8820
8821
8822
8823
8824
8825
8826
8827
8828
8829
8830
8831
8832
8833
8834
8835
8836
8837
8838
8839
8840
8841
8842
8843
8844
8845
8846
8847
8848
8849
8850
8851
8852
8853
8854
8855
8856
8857
8858
8859
8860
8861
8862
8863
8864
8865
8866
8867
8868
8869
8870
8871
8872
8873
8874
8875
8876
8877
8878
8879
8880
8881
8882
8883
8884
8885
8886
8887
8888
8889
8890
8891
8892
8893
8894
8895
8896
8897
8898
8899
8900
8901
8902
8903
8904
8905
8906
8907
8908
8909
8910
8911
8912
8913
8914
8915
8916
8917
8918
8919
8920
8921
8922
8923
8924
8925
8926
8927
8928
8929
8930
8931
8932
8933
8934
8935
8936
8937
8938
8939
8940
8941
8942
8943
8944
8945
8946
8947
8948
8949
8950
8951
8952
8953
8954
8955
8956
8957
8958
8959
8960
8961
8962
8963
8964
8965
8966
8967
8968
8969
8970
8971
8972
8973
8974
8975
8976
8977
8978
8979
8980
8981
8982
8983
8984
8985
8986
8987
8988
8989
8990
8991
8992
8993
8994
8995
8996
8997
8998
8999
9000
9001
9002
9003
9004
9005
9006
9007
9008
9009
9010
9011
9012
9013
9014
9015
9016
9017
9018
9019
9020
9021
9022
9023
9024
9025
9026
9027
9028
9029
9030
9031
9032
9033
9034
9035
9036
9037
9038
9039
9040
9041
9042
9043
9044
9045
9046
9047
9048
9049
9050
9051
9052
9053
9054
9055
9056
9057
9058
9059
9060
9061
9062
9063
9064
9065
9066
9067
9068
9069
9070
9071
9072
9073
9074
9075
9076
9077
9078
9079
9080
9081
9082
9083
9084
9085
9086
9087
9088
9089
9090
9091
9092
9093
9094
9095
9096
9097
9098
9099
9100
9101
9102
9103
9104
9105
9106
9107
9108
9109
9110
9111
9112
9113
9114
9115
9116
9117
9118
9119
9120
9121
9122
9123
9124
9125
9126
9127
9128
9129
9130
9131
9132
9133
9134
9135
9136
9137
9138
9139
9140
9141
9142
9143
9144
9145
9146
9147
9148
9149
9150
9151
9152
9153
9154
9155
9156
9157
9158
9159
9160
9161
9162
9163
9164
9165
9166
9167
9168
9169
9170
9171
9172
9173
9174
9175
9176
9177
9178
9179
9180
9181
9182
9183
9184
9185
9186
9187
9188
9189
9190
9191
9192
9193
9194
9195
9196
9197
9198
9199
9200
9201
9202
9203
9204
9205
9206
9207
9208
9209
9210
9211
9212
9213
9214
9215
9216
9217
9218
9219
9220
9221
9222
9223
9224
9225
9226
9227
9228
9229
9230
9231
9232
9233
9234
9235
9236
9237
9238
9239
9240
9241
9242
9243
9244
9245
9246
9247
9248
9249
9250
9251
9252
9253
9254
9255
9256
9257
9258
9259
9260
9261
9262
9263
9264
9265
9266
9267
9268
9269
9270
9271
9272
9273
9274
9275
9276
9277
9278
9279
9280
9281
9282
9283
9284
9285
9286
9287
9288
9289
9290
9291
9292
9293
9294
9295
9296
9297
9298
9299
9300
9301
9302
9303
9304
9305
9306
9307
9308
9309
9310
9311
9312
9313
9314
9315
9316
9317
9318
9319
9320
9321
9322
9323
9324
9325
9326
9327
9328
9329
9330
9331
9332
9333
9334
9335
9336
9337
9338
9339
9340
9341
9342
9343
9344
9345
9346
9347
9348
9349
9350
9351
9352
9353
9354
9355
9356
9357
9358
9359
9360
9361
9362
9363
9364
9365
9366
9367
9368
9369
9370
9371
9372
9373
9374
9375
9376
9377
9378
9379
9380
9381
9382
9383
9384
9385
9386
9387
9388
9389
9390
9391
9392
9393
9394
9395
9396
9397
9398
9399
9400
9401
9402
9403
9404
9405
9406
9407
9408
9409
9410
9411
9412
9413
9414
9415
9416
9417
9418
9419
9420
9421
9422
9423
9424
9425
9426
9427
9428
9429
9430
9431
9432
9433
9434
9435
9436
9437
9438
9439
9440
9441
9442
9443
9444
9445
9446
9447
9448
9449
9450
9451
9452
9453
9454
9455
9456
9457
9458
9459
9460
9461
9462
9463
9464
9465
9466
9467
9468
9469
9470
9471
9472
9473
9474
9475
9476
9477
9478
9479
9480
9481
9482
9483
9484
9485
9486
9487
9488
9489
9490
9491
9492
9493
9494
9495
9496
9497
9498
9499
9500
9501
9502
9503
9504
9505
9506
9507
9508
9509
9510
9511
9512
9513
9514
9515
9516
9517
9518
9519
9520
9521
9522
9523
9524
9525
9526
9527
9528
9529
9530
9531
9532
9533
9534
9535
9536
9537
9538
9539
9540
9541
9542
9543
9544
9545
9546
9547
9548
9549
9550
9551
9552
9553
9554
9555
9556
9557
9558
9559
9560
9561
9562
9563
9564
9565
9566
9567
9568
9569
9570
9571
9572
9573
9574
9575
9576
9577
9578
9579
9580
9581
9582
9583
9584
9585
9586
9587
9588
9589
9590
9591
9592
9593
9594
9595
9596
9597
9598
9599
9600
9601
9602
9603
9604
9605
9606
9607
9608
9609
9610
9611
9612
9613
9614
9615
9616
9617
9618
9619
9620
9621
9622
9623
9624
9625
9626
9627
9628
9629
9630
9631
9632
9633
9634
9635
9636
9637
9638
9639
9640
9641
9642
9643
9644
9645
9646
9647
9648
9649
9650
9651
9652
9653
9654
9655
9656
9657
9658
9659
9660
9661
9662
9663
9664
9665
9666
9667
9668
9669
9670
9671
9672
9673
9674
9675
9676
9677
9678
9679
9680
9681
9682
9683
9684
9685
9686
9687
9688
9689
9690
9691
9692
9693
9694
9695
9696
9697
9698
9699
9700
9701
9702
9703
9704
9705
9706
9707
9708
9709
9710
9711
9712
9713
9714
9715
9716
9717
9718
9719
9720
9721
9722
9723
9724
9725
9726
9727
9728
9729
9730
9731
9732
9733
9734
9735
9736
9737
9738
9739
9740
9741
9742
9743
9744
9745
9746
9747
9748
9749
9750
9751
9752
9753
9754
9755
9756
9757
9758
9759
9760
9761
9762
9763
9764
9765
9766
9767
9768
9769
9770
9771
9772
9773
9774
9775
9776
9777
9778
9779
9780
9781
9782
9783
9784
9785
9786
9787
9788
9789
9790
9791
9792
9793
9794
9795
9796
9797
9798
9799
9800
9801
9802
9803
9804
9805
9806
9807
9808
9809
9810
9811
9812
9813
9814
9815
9816
9817
9818
9819
9820
9821
9822
9823
9824
9825
9826
9827
9828
9829
9830
9831
9832
9833
9834
9835
9836
9837
9838
9839
9840
9841
9842
9843
9844
9845
9846
9847
9848
9849
9850
9851
9852
9853
9854
9855
9856
9857
9858
9859
9860
9861
9862
9863
9864
9865
9866
9867
9868
9869
9870
9871
9872
9873
9874
9875
9876
9877
9878
9879
9880
9881
9882
9883
9884
9885
9886
9887
9888
9889
9890
9891
9892
9893
9894
9895
9896
9897
9898
9899
9900
9901
9902
9903
9904
9905
9906
9907
9908
9909
9910
9911
9912
9913
9914
9915
9916
9917
9918
9919
9920
9921
9922
9923
9924
9925
9926
9927
9928
9929
9930
9931
9932
9933
9934
9935
9936
9937
9938
9939
9940
9941
9942
9943
9944
9945
9946
9947
9948
9949
9950
9951
9952
9953
9954
9955
9956
9957
9958
9959
9960
9961
9962
9963
9964
9965
9966
9967
9968
9969
9970
9971
9972
9973
9974
9975
9976
9977
9978
9979
9980
9981
9982
9983
9984
9985
9986
9987
9988
9989
9990
9991
9992
9993
9994
9995
9996
9997
9998
9999
10000
10001
10002
10003
10004
10005
10006
10007
10008
10009
10010
10011
10012
10013
10014
10015
10016
10017
10018
10019
10020
10021
10022
10023
10024
10025
10026
10027
10028
10029
10030
10031
10032
10033
10034
10035
10036
10037
10038
10039
10040
10041
10042
10043
10044
10045
10046
10047
10048
10049
10050
10051
10052
10053
10054
10055
10056
10057
10058
10059
10060
10061
10062
10063
10064
10065
10066
10067
10068
10069
10070
10071
10072
10073
10074
10075
10076
10077
10078
10079
10080
10081
10082
10083
10084
10085
10086
10087
10088
10089
10090
10091
10092
10093
10094
10095
10096
10097
10098
10099
10100
10101
10102
10103
10104
10105
10106
10107
10108
10109
10110
10111
10112
10113
10114
10115
10116
10117
10118
10119
10120
10121
10122
10123
10124
10125
10126
10127
10128
10129
10130
10131
10132
10133
10134
10135
10136
10137
10138
10139
10140
10141
10142
10143
10144
10145
10146
10147
10148
10149
10150
10151
10152
10153
10154
10155
10156
10157
10158
10159
10160
10161
10162
10163
10164
10165
10166
10167
10168
10169
10170
10171
10172
10173
10174
10175
10176
10177
10178
10179
10180
10181
10182
10183
10184
10185
10186
10187
10188
10189
10190
10191
10192
10193
10194
10195
10196
10197
10198
10199
10200
10201
10202
10203
10204
10205
10206
10207
10208
10209
10210
10211
10212
10213
10214
10215
10216
10217
10218
10219
10220
10221
10222
10223
10224
10225
10226
10227
10228
10229
10230
10231
10232
10233
10234
10235
10236
10237
10238
10239
10240
10241
10242
10243
10244
10245
10246
10247
10248
10249
10250
10251
10252
10253
10254
10255
10256
10257
10258
10259
10260
10261
10262
10263
10264
10265
10266
10267
10268
10269
10270
10271
10272
10273
10274
10275
10276
10277
10278
10279
10280
10281
10282
10283
10284
10285
10286
10287
10288
10289
10290
10291
10292
10293
10294
10295
10296
10297
10298
10299
10300
10301
10302
10303
10304
10305
10306
10307
10308
10309
10310
10311
10312
10313
10314
10315
10316
10317
10318
10319
10320
10321
10322
10323
10324
10325
10326
10327
10328
10329
10330
10331
10332
10333
10334
10335
10336
10337
10338
10339
10340
10341
10342
10343
10344
10345
10346
10347
10348
10349
10350
10351
10352
10353
10354
10355
10356
10357
10358
10359
10360
10361
10362
10363
10364
10365
10366
10367
10368
10369
10370
10371
10372
10373
10374
10375
10376
10377
10378
10379
10380
10381
10382
10383
10384
10385
10386
10387
10388
10389
10390
10391
10392
10393
10394
10395
10396
10397
10398
10399
10400
10401
10402
10403
10404
10405
10406
10407
10408
10409
10410
10411
10412
10413
10414
10415
10416
10417
10418
10419
10420
10421
10422
10423
10424
10425
10426
10427
10428
10429
10430
10431
10432
10433
10434
10435
10436
10437
10438
10439
10440
10441
10442
10443
10444
10445
10446
10447
10448
10449
10450
10451
10452
10453
10454
10455
10456
10457
10458
10459
10460
10461
10462
10463
10464
10465
10466
10467
10468
10469
10470
10471
10472
10473
10474
10475
10476
10477
10478
10479
10480
10481
10482
10483
10484
10485
10486
10487
10488
10489
10490
10491
10492
10493
10494
10495
10496
10497
10498
10499
10500
10501
10502
10503
10504
10505
10506
10507
10508
10509
10510
10511
10512
10513
10514
10515
10516
10517
10518
10519
10520
10521
10522
10523
10524
10525
10526
10527
10528
10529
10530
10531
10532
10533
10534
10535
10536
10537
10538
10539
10540
10541
10542
10543
10544
10545
10546
10547
10548
10549
10550
10551
10552
10553
10554
10555
10556
10557
10558
10559
10560
10561
10562
10563
10564
10565
10566
10567
10568
10569
10570
10571
10572
10573
10574
10575
10576
10577
10578
10579
10580
10581
10582
10583
10584
10585
10586
10587
10588
10589
10590
10591
10592
10593
10594
10595
10596
10597
10598
10599
10600
10601
10602
10603
10604
10605
10606
10607
10608
10609
10610
10611
10612
10613
10614
10615
10616
10617
10618
10619
10620
10621
10622
10623
10624
10625
10626
10627
10628
10629
10630
10631
10632
10633
10634
10635
10636
10637
10638
10639
10640
10641
10642
10643
10644
10645
10646
10647
10648
10649
10650
10651
10652
10653
10654
10655
10656
10657
10658
10659
10660
10661
10662
10663
10664
10665
10666
10667
10668
10669
10670
10671
10672
10673
10674
10675
10676
10677
10678
10679
10680
10681
10682
10683
10684
10685
10686
10687
10688
10689
10690
10691
10692
10693
10694
10695
10696
10697
10698
10699
10700
10701
10702
10703
10704
10705
10706
10707
10708
10709
10710
10711
10712
10713
10714
10715
10716
10717
10718
10719
10720
10721
10722
10723
10724
10725
10726
10727
10728
10729
10730
10731
10732
10733
10734
10735
10736
10737
10738
10739
10740
10741
10742
10743
10744
10745
10746
10747
10748
10749
10750
10751
10752
10753
10754
10755
10756
10757
10758
10759
10760
10761
10762
10763
10764
10765
10766
10767
10768
10769
10770
10771
10772
10773
10774
10775
10776
10777
10778
10779
10780
10781
10782
10783
10784
10785
10786
10787
10788
10789
10790
10791
10792
10793
10794
10795
10796
10797
10798
10799
10800
10801
10802
10803
10804
10805
10806
10807
10808
10809
10810
10811
10812
10813
10814
10815
10816
10817
10818
10819
10820
10821
10822
10823
10824
10825
10826
10827
10828
10829
10830
10831
10832
10833
10834
10835
10836
10837
10838
10839
10840
10841
10842
10843
10844
10845
10846
10847
10848
10849
10850
10851
10852
10853
10854
10855
10856
10857
10858
10859
10860
10861
10862
10863
10864
10865
10866
10867
10868
10869
10870
10871
10872
10873
10874
10875
10876
10877
10878
10879
10880
10881
10882
10883
10884
10885
10886
10887
10888
10889
10890
10891
10892
10893
10894
10895
10896
10897
10898
10899
10900
10901
10902
10903
10904
10905
10906
10907
10908
10909
10910
10911
10912
10913
10914
10915
10916
10917
10918
10919
10920
10921
10922
10923
10924
10925
10926
10927
10928
10929
10930
10931
10932
10933
10934
10935
10936
10937
10938
10939
10940
10941
10942
10943
10944
10945
10946
10947
10948
10949
10950
10951
10952
10953
10954
10955
10956
10957
10958
10959
10960
10961
10962
10963
10964
10965
10966
10967
10968
10969
10970
10971
10972
10973
10974
10975
10976
10977
10978
10979
10980
10981
10982
10983
10984
10985
10986
10987
10988
10989
10990
10991
10992
10993
10994
10995
10996
10997
10998
10999
11000
11001
11002
11003
11004
11005
11006
11007
11008
11009
11010
11011
11012
11013
11014
11015
11016
11017
11018
11019
11020
11021
11022
11023
11024
11025
11026
11027
11028
11029
11030
11031
11032
11033
11034
11035
11036
11037
11038
11039
11040
11041
11042
11043
11044
11045
11046
11047
11048
11049
11050
11051
11052
11053
11054
11055
11056
11057
11058
11059
11060
11061
11062
11063
11064
11065
11066
11067
11068
11069
11070
11071
11072
11073
11074
11075
11076
11077
11078
11079
11080
11081
11082
11083
11084
11085
11086
11087
11088
11089
11090
11091
11092
11093
11094
11095
11096
11097
11098
11099
11100
11101
11102
11103
11104
11105
11106
11107
11108
11109
11110
11111
11112
11113
11114
11115
11116
11117
11118
11119
11120
11121
11122
11123
11124
11125
11126
11127
11128
11129
11130
11131
11132
11133
11134
11135
11136
11137
11138
11139
11140
11141
11142
11143
11144
11145
11146
11147
11148
11149
11150
11151
11152
11153
11154
11155
11156
11157
11158
11159
11160
11161
11162
11163
11164
11165
11166
11167
11168
11169
11170
11171
11172
11173
11174
11175
11176
11177
11178
11179
11180
11181
11182
11183
11184
11185
11186
11187
11188
11189
11190
11191
11192
11193
11194
11195
11196
11197
11198
11199
11200
11201
11202
11203
11204
11205
11206
11207
11208
11209
11210
11211
11212
11213
11214
11215
11216
11217
11218
11219
11220
11221
11222
11223
11224
11225
11226
11227
11228
11229
11230
11231
11232
11233
11234
11235
11236
11237
11238
11239
11240
11241
11242
11243
11244
11245
11246
11247
11248
11249
11250
11251
11252
11253
11254
11255
11256
11257
11258
11259
11260
11261
11262
11263
11264
11265
11266
11267
11268
11269
11270
11271
11272
11273
11274
11275
11276
11277
11278
11279
11280
11281
11282
11283
11284
11285
11286
11287
11288
11289
11290
11291
11292
11293
11294
11295
11296
11297
11298
11299
11300
11301
11302
11303
11304
11305
11306
11307
11308
11309
11310
11311
11312
11313
11314
11315
11316
11317
11318
11319
11320
11321
11322
11323
11324
11325
11326
11327
11328
11329
11330
11331
11332
11333
11334
11335
11336
11337
11338
11339
11340
11341
11342
11343
11344
11345
11346
11347
11348
11349
11350
11351
11352
11353
11354
11355
11356
11357
11358
11359
11360
11361
11362
11363
11364
11365
11366
11367
11368
11369
11370
11371
11372
11373
11374
11375
11376
11377
11378
11379
11380
11381
11382
11383
11384
11385
11386
11387
11388
11389
11390
11391
11392
11393
11394
11395
11396
11397
11398
11399
11400
11401
11402
11403
11404
11405
11406
11407
11408
11409
11410
11411
11412
11413
11414
11415
11416
11417
11418
11419
11420
11421
11422
11423
11424
11425
11426
11427
11428
11429
11430
11431
11432
11433
11434
11435
11436
11437
11438
11439
11440
11441
11442
11443
11444
11445
11446
11447
11448
11449
11450
11451
11452
11453
11454
11455
11456
11457
11458
11459
11460
11461
11462
11463
11464
11465
11466
11467
11468
11469
11470
11471
11472
11473
11474
11475
11476
11477
11478
11479
11480
11481
11482
11483
11484
11485
11486
11487
11488
11489
11490
11491
11492
11493
11494
11495
11496
11497
11498
11499
11500
11501
11502
11503
11504
11505
11506
11507
11508
11509
11510
11511
11512
11513
11514
11515
11516
11517
11518
11519
11520
11521
11522
11523
11524
11525
11526
11527
11528
11529
11530
11531
11532
11533
11534
11535
11536
11537
11538
11539
11540
11541
11542
11543
11544
11545
11546
11547
11548
11549
11550
11551
11552
11553
11554
11555
11556
11557
11558
11559
11560
11561
11562
11563
11564
11565
11566
11567
11568
11569
11570
11571
11572
11573
11574
11575
11576
11577
11578
11579
11580
11581
11582
11583
11584
11585
11586
11587
11588
11589
11590
11591
11592
11593
11594
11595
11596
11597
11598
11599
11600
11601
11602
11603
11604
11605
11606
11607
11608
11609
11610
11611
11612
11613
11614
11615
11616
11617
11618
11619
11620
11621
11622
11623
11624
11625
11626
11627
11628
11629
11630
11631
11632
11633
11634
11635
11636
11637
11638
11639
11640
11641
11642
11643
11644
11645
11646
11647
11648
11649
11650
11651
11652
11653
11654
11655
11656
11657
11658
11659
11660
11661
11662
11663
11664
11665
11666
11667
11668
11669
11670
11671
11672
11673
11674
11675
11676
11677
11678
11679
11680
11681
11682
11683
11684
11685
11686
11687
11688
11689
11690
11691
11692
11693
11694
11695
11696
11697
11698
11699
11700
11701
11702
11703
11704
11705
11706
11707
11708
11709
11710
11711
11712
11713
11714
11715
11716
11717
11718
11719
11720
11721
11722
11723
11724
11725
11726
11727
11728
11729
11730
11731
11732
11733
11734
11735
11736
11737
11738
11739
11740
11741
11742
11743
11744
11745
11746
11747
11748
11749
11750
11751
11752
11753
11754
11755
11756
11757
11758
11759
11760
11761
11762
11763
11764
11765
11766
11767
11768
11769
11770
11771
11772
11773
11774
11775
11776
11777
11778
11779
11780
11781
11782
11783
11784
11785
11786
11787
11788
11789
11790
11791
11792
11793
11794
11795
11796
11797
11798
11799
11800
11801
11802
11803
11804
11805
11806
11807
11808
11809
11810
11811
11812
11813
11814
11815
11816
11817
11818
11819
11820
11821
11822
11823
11824
11825
11826
11827
11828
11829
11830
11831
11832
11833
11834
11835
11836
11837
11838
11839
11840
11841
11842
11843
11844
11845
11846
11847
11848
11849
11850
11851
11852
11853
11854
11855
11856
11857
11858
11859
11860
11861
11862
11863
11864
11865
11866
11867
11868
11869
11870
11871
11872
11873
11874
11875
11876
11877
11878
11879
11880
11881
11882
11883
11884
11885
11886
11887
11888
11889
11890
11891
11892
11893
11894
11895
11896
11897
11898
11899
11900
11901
11902
11903
11904
11905
11906
11907
11908
11909
11910
11911
11912
11913
11914
11915
11916
11917
11918
11919
11920
11921
11922
11923
11924
11925
11926
11927
11928
11929
11930
11931
11932
11933
11934
11935
11936
11937
11938
11939
11940
11941
11942
11943
11944
11945
11946
11947
11948
11949
11950
11951
11952
11953
11954
11955
11956
11957
11958
11959
11960
11961
11962
11963
11964
11965
11966
11967
11968
11969
11970
11971
11972
11973
11974
11975
11976
11977
11978
11979
11980
11981
11982
11983
11984
11985
11986
11987
11988
11989
11990
11991
11992
11993
11994
11995
11996
11997
11998
11999
12000
12001
12002
12003
12004
12005
12006
12007
12008
12009
12010
12011
12012
12013
12014
12015
12016
12017
12018
12019
12020
12021
12022
12023
12024
12025
12026
12027
12028
12029
12030
12031
12032
12033
12034
12035
12036
12037
12038
12039
12040
12041
12042
12043
12044
12045
12046
12047
12048
12049
12050
12051
12052
12053
12054
12055
12056
12057
12058
12059
12060
12061
12062
12063
12064
12065
12066
12067
12068
12069
12070
12071
12072
12073
12074
12075
12076
12077
12078
12079
12080
12081
12082
12083
12084
12085
12086
12087
12088
12089
12090
12091
12092
12093
12094
12095
12096
12097
12098
12099
12100
12101
12102
12103
12104
12105
12106
12107
12108
12109
12110
12111
12112
12113
12114
12115
12116
12117
12118
12119
12120
12121
12122
12123
12124
12125
12126
12127
12128
12129
12130
12131
12132
12133
12134
12135
12136
12137
12138
12139
12140
12141
12142
12143
12144
12145
12146
12147
12148
12149
12150
12151
12152
12153
12154
12155
12156
12157
12158
12159
12160
12161
12162
12163
12164
12165
12166
12167
12168
12169
12170
12171
12172
12173
12174
12175
12176
12177
12178
12179
12180
12181
12182
12183
12184
12185
12186
12187
12188
12189
12190
12191
12192
12193
12194
12195
12196
12197
12198
12199
12200
12201
12202
12203
12204
12205
12206
12207
12208
12209
12210
12211
12212
12213
12214
12215
12216
12217
12218
12219
12220
12221
12222
12223
12224
12225
12226
12227
12228
12229
12230
12231
12232
12233
12234
12235
12236
12237
12238
12239
12240
12241
12242
12243
12244
12245
12246
12247
12248
12249
12250
12251
12252
12253
12254
12255
12256
12257
12258
12259
12260
12261
12262
12263
12264
12265
12266
12267
12268
12269
12270
12271
12272
12273
12274
12275
12276
12277
12278
12279
12280
12281
12282
12283
12284
12285
12286
12287
12288
12289
12290
12291
12292
12293
12294
12295
12296
12297
12298
12299
12300
12301
12302
12303
12304
12305
12306
12307
12308
12309
12310
12311
12312
12313
12314
12315
12316
12317
12318
12319
12320
12321
12322
12323
12324
12325
12326
12327
12328
12329
12330
12331
12332
12333
12334
12335
12336
12337
12338
12339
12340
12341
12342
12343
12344
12345
12346
12347
12348
12349
12350
12351
12352
12353
12354
12355
12356
12357
12358
12359
12360
12361
12362
12363
12364
12365
12366
12367
12368
12369
12370
12371
12372
12373
12374
12375
12376
12377
12378
12379
12380
12381
12382
12383
12384
12385
12386
12387
12388
12389
12390
12391
12392
12393
12394
12395
12396
12397
12398
12399
12400
12401
12402
12403
12404
12405
12406
12407
12408
12409
12410
12411
12412
12413
12414
12415
12416
12417
12418
12419
12420
12421
12422
12423
12424
12425
12426
12427
12428
12429
12430
12431
12432
12433
12434
12435
12436
12437
12438
12439
12440
12441
12442
12443
12444
12445
12446
12447
12448
12449
12450
12451
12452
12453
12454
12455
12456
12457
12458
12459
12460
12461
12462
12463
12464
12465
12466
12467
12468
12469
12470
12471
12472
12473
12474
12475
12476
12477
12478
12479
12480
12481
12482
12483
12484
12485
12486
12487
12488
12489
12490
12491
12492
12493
12494
12495
12496
12497
12498
12499
12500
12501
12502
12503
12504
12505
12506
12507
12508
12509
12510
12511
12512
12513
12514
12515
12516
12517
12518
12519
12520
12521
12522
12523
12524
12525
12526
12527
12528
12529
12530
12531
12532
12533
12534
12535
12536
12537
12538
12539
12540
12541
12542
12543
12544
12545
12546
12547
12548
12549
12550
12551
12552
12553
12554
12555
12556
12557
12558
12559
12560
12561
12562
12563
12564
12565
12566
12567
12568
12569
12570
12571
12572
12573
12574
12575
12576
12577
12578
12579
12580
12581
12582
12583
12584
12585
12586
12587
12588
12589
12590
12591
12592
12593
12594
12595
12596
12597
12598
12599
12600
12601
12602
12603
12604
12605
12606
12607
12608
12609
12610
12611
12612
12613
12614
12615
12616
12617
12618
12619
12620
12621
12622
12623
12624
12625
12626
12627
12628
12629
12630
12631
12632
12633
12634
12635
12636
12637
12638
12639
12640
12641
12642
12643
12644
12645
12646
12647
12648
12649
12650
12651
12652
12653
12654
12655
12656
12657
12658
12659
12660
12661
12662
12663
12664
12665
12666
12667
12668
12669
12670
12671
12672
12673
12674
12675
12676
12677
12678
12679
12680
12681
12682
12683
12684
12685
12686
12687
12688
12689
12690
12691
12692
12693
12694
12695
12696
12697
12698
12699
12700
12701
12702
12703
12704
12705
12706
12707
12708
12709
12710
12711
12712
12713
12714
12715
12716
12717
12718
12719
12720
12721
12722
12723
12724
12725
12726
12727
12728
12729
12730
12731
12732
12733
12734
12735
12736
12737
12738
12739
12740
12741
12742
12743
12744
12745
12746
12747
12748
12749
12750
12751
12752
12753
12754
12755
12756
12757
12758
12759
12760
12761
12762
12763
12764
12765
12766
12767
12768
12769
12770
12771
12772
12773
12774
12775
12776
12777
12778
12779
12780
12781
12782
12783
12784
12785
12786
12787
12788
12789
12790
12791
12792
12793
12794
12795
12796
12797
12798
12799
12800
12801
12802
12803
12804
12805
12806
12807
12808
12809
12810
12811
12812
12813
12814
12815
12816
12817
12818
12819
12820
12821
12822
12823
12824
12825
12826
12827
12828
12829
12830
12831
12832
12833
12834
12835
12836
12837
12838
12839
12840
12841
12842
12843
12844
12845
12846
12847
12848
12849
12850
12851
12852
12853
12854
12855
12856
12857
12858
12859
12860
12861
12862
12863
12864
12865
12866
12867
12868
12869
12870
12871
12872
12873
12874
12875
12876
12877
12878
12879
12880
12881
12882
12883
12884
12885
12886
12887
12888
12889
12890
12891
12892
12893
12894
12895
12896
12897
12898
12899
12900
12901
12902
12903
12904
12905
12906
12907
12908
12909
12910
12911
12912
12913
12914
12915
12916
12917
12918
12919
12920
12921
12922
12923
12924
12925
12926
12927
12928
12929
12930
12931
12932
12933
12934
12935
12936
12937
12938
12939
12940
12941
12942
12943
12944
12945
12946
12947
12948
12949
12950
12951
12952
12953
12954
12955
12956
12957
12958
12959
12960
12961
12962
12963
12964
12965
12966
12967
12968
12969
12970
12971
12972
12973
12974
12975
12976
12977
12978
12979
12980
12981
12982
12983
12984
12985
12986
12987
12988
12989
12990
12991
12992
12993
12994
12995
12996
12997
12998
12999
13000
13001
13002
13003
13004
13005
13006
13007
13008
13009
13010
13011
13012
13013
13014
13015
13016
13017
13018
13019
13020
13021
13022
13023
13024
13025
13026
13027
13028
13029
13030
13031
13032
13033
13034
13035
13036
13037
13038
13039
13040
13041
13042
13043
13044
13045
13046
13047
13048
13049
13050
13051
13052
13053
13054
13055
13056
13057
13058
13059
13060
13061
13062
13063
13064
13065
13066
13067
13068
13069
13070
13071
13072
13073
13074
13075
13076
13077
13078
13079
13080
13081
13082
13083
13084
13085
13086
13087
13088
13089
13090
13091
13092
13093
13094
13095
13096
13097
13098
13099
13100
13101
13102
13103
13104
13105
13106
13107
13108
13109
13110
13111
13112
13113
13114
13115
13116
13117
13118
13119
13120
13121
13122
13123
13124
13125
13126
13127
13128
13129
13130
13131
13132
13133
13134
13135
13136
13137
13138
13139
13140
13141
13142
13143
13144
13145
13146
13147
13148
13149
13150
13151
13152
13153
13154
13155
13156
13157
13158
13159
13160
13161
13162
13163
13164
13165
13166
13167
13168
13169
13170
13171
13172
13173
13174
13175
13176
13177
13178
13179
13180
13181
13182
13183
13184
13185
13186
13187
13188
13189
13190
13191
13192
13193
13194
13195
13196
13197
13198
13199
13200
13201
13202
13203
13204
13205
13206
13207
13208
13209
13210
13211
13212
13213
13214
13215
13216
13217
13218
13219
13220
13221
13222
13223
13224
13225
13226
13227
13228
13229
13230
13231
13232
13233
13234
13235
13236
13237
13238
13239
13240
13241
13242
13243
13244
13245
13246
13247
13248
13249
13250
13251
13252
13253
13254
13255
13256
13257
13258
13259
13260
13261
13262
13263
13264
13265
13266
13267
13268
13269
13270
13271
13272
13273
13274
13275
13276
13277
13278
13279
13280
13281
13282
13283
13284
13285
13286
13287
13288
13289
13290
13291
13292
13293
13294
13295
13296
13297
13298
13299
13300
13301
13302
13303
13304
13305
13306
13307
13308
13309
13310
13311
13312
13313
13314
13315
13316
13317
13318
13319
13320
13321
13322
13323
13324
13325
13326
13327
13328
13329
13330
13331
13332
13333
13334
13335
13336
13337
13338
13339
13340
13341
13342
13343
13344
13345
13346
13347
13348
13349
13350
13351
13352
13353
13354
13355
13356
13357
13358
13359
13360
13361
13362
13363
13364
13365
13366
13367
13368
13369
13370
13371
13372
13373
13374
13375
13376
13377
13378
13379
13380
13381
13382
13383
13384
13385
13386
13387
13388
13389
13390
13391
13392
13393
13394
13395
13396
13397
13398
13399
13400
13401
13402
13403
13404
13405
13406
13407
13408
13409
13410
13411
13412
13413
13414
13415
13416
13417
13418
13419
13420
13421
13422
13423
13424
13425
13426
13427
13428
13429
13430
13431
13432
13433
13434
13435
13436
13437
13438
13439
13440
13441
13442
13443
13444
13445
13446
13447
13448
13449
13450
13451
13452
13453
13454
13455
13456
13457
13458
13459
13460
13461
13462
13463
13464
13465
13466
13467
13468
13469
13470
13471
13472
13473
13474
13475
13476
13477
13478
13479
13480
13481
13482
13483
13484
13485
13486
13487
13488
13489
13490
13491
13492
13493
13494
13495
13496
13497
13498
13499
13500
13501
13502
13503
13504
13505
13506
13507
13508
13509
13510
13511
13512
13513
13514
13515
13516
13517
13518
13519
13520
13521
13522
13523
13524
13525
13526
13527
13528
13529
13530
13531
13532
13533
13534
13535
13536
13537
13538
13539
13540
13541
13542
13543
13544
13545
13546
13547
13548
13549
13550
13551
13552
13553
13554
13555
13556
13557
13558
13559
13560
13561
13562
13563
13564
13565
13566
13567
13568
13569
13570
13571
13572
13573
13574
13575
13576
13577
13578
13579
13580
13581
13582
13583
13584
13585
13586
13587
13588
13589
13590
13591
13592
13593
13594
13595
13596
13597
13598
13599
13600
13601
13602
13603
13604
13605
13606
13607
13608
13609
13610
13611
13612
13613
13614
13615
13616
13617
13618
13619
13620
13621
13622
13623
13624
13625
13626
13627
13628
13629
13630
13631
13632
13633
13634
13635
13636
13637
13638
13639
13640
13641
13642
13643
13644
13645
13646
13647
13648
13649
13650
13651
13652
13653
13654
13655
13656
13657
13658
13659
13660
13661
13662
13663
13664
13665
13666
13667
13668
13669
13670
13671
13672
13673
13674
13675
13676
13677
13678
13679
13680
13681
13682
13683
13684
13685
13686
13687
13688
13689
13690
13691
13692
13693
13694
13695
13696
13697
13698
13699
13700
13701
13702
13703
13704
13705
13706
13707
13708
13709
13710
13711
13712
13713
13714
13715
13716
13717
13718
13719
13720
13721
13722
13723
13724
13725
13726
13727
13728
13729
13730
13731
13732
13733
13734
13735
13736
13737
13738
13739
13740
13741
13742
13743
13744
13745
13746
13747
13748
13749
13750
13751
13752
13753
13754
13755
13756
13757
13758
13759
13760
13761
13762
13763
13764
13765
13766
13767
13768
13769
13770
13771
13772
13773
13774
13775
13776
13777
13778
13779
13780
13781
13782
13783
13784
13785
13786
13787
13788
13789
13790
13791
13792
13793
13794
13795
13796
13797
13798
13799
13800
13801
13802
13803
13804
13805
13806
13807
13808
13809
13810
13811
13812
13813
13814
13815
13816
13817
13818
13819
13820
13821
13822
13823
13824
13825
13826
13827
13828
13829
13830
13831
13832
13833
13834
13835
13836
13837
13838
13839
13840
13841
13842
13843
13844
13845
13846
13847
13848
13849
13850
13851
13852
13853
13854
13855
13856
13857
13858
13859
13860
13861
13862
13863
13864
13865
13866
13867
13868
13869
13870
13871
13872
13873
13874
13875
13876
13877
13878
13879
13880
13881
13882
13883
13884
13885
13886
13887
13888
13889
13890
13891
13892
13893
13894
13895
13896
13897
13898
13899
13900
13901
13902
13903
13904
13905
13906
13907
13908
13909
13910
13911
13912
13913
13914
13915
13916
13917
13918
13919
13920
13921
13922
13923
13924
13925
13926
13927
13928
13929
13930
13931
13932
13933
13934
13935
13936
13937
13938
13939
13940
13941
13942
13943
13944
13945
13946
13947
13948
13949
13950
13951
13952
13953
13954
13955
13956
13957
13958
13959
13960
13961
13962
13963
13964
13965
13966
13967
13968
13969
13970
13971
13972
13973
13974
13975
13976
13977
13978
13979
13980
13981
13982
13983
13984
13985
13986
13987
13988
13989
13990
13991
13992
13993
13994
13995
13996
13997
13998
13999
14000
14001
14002
14003
14004
14005
14006
14007
14008
14009
14010
14011
14012
14013
14014
14015
14016
14017
14018
14019
14020
14021
14022
14023
14024
14025
14026
14027
14028
14029
14030
14031
14032
14033
14034
14035
14036
14037
14038
14039
14040
14041
14042
14043
14044
14045
14046
14047
14048
14049
14050
14051
14052
14053
14054
14055
14056
14057
14058
14059
14060
14061
14062
14063
14064
14065
14066
14067
14068
14069
14070
14071
14072
14073
14074
14075
14076
14077
14078
14079
14080
14081
14082
14083
14084
14085
14086
14087
14088
14089
14090
14091
14092
14093
14094
14095
14096
14097
14098
14099
14100
14101
14102
14103
14104
14105
14106
14107
14108
14109
14110
14111
14112
14113
14114
14115
14116
14117
14118
14119
14120
14121
14122
14123
14124
14125
14126
14127
14128
14129
14130
14131
14132
14133
14134
14135
14136
14137
14138
14139
14140
14141
14142
14143
14144
14145
14146
14147
14148
14149
14150
14151
14152
14153
14154
14155
14156
14157
14158
14159
14160
14161
14162
14163
14164
14165
14166
14167
14168
14169
14170
14171
14172
14173
14174
14175
14176
14177
14178
14179
14180
14181
14182
14183
14184
14185
14186
14187
14188
14189
14190
14191
14192
14193
14194
14195
14196
14197
14198
14199
14200
14201
14202
14203
14204
14205
14206
14207
14208
14209
14210
14211
14212
14213
14214
14215
14216
14217
14218
14219
14220
14221
14222
14223
14224
14225
14226
14227
14228
14229
14230
14231
14232
14233
14234
14235
14236
14237
14238
14239
14240
14241
14242
14243
14244
14245
14246
14247
14248
14249
14250
14251
14252
14253
14254
14255
14256
14257
14258
14259
14260
14261
14262
14263
14264
14265
14266
14267
14268
14269
14270
14271
14272
14273
14274
14275
14276
14277
14278
14279
14280
14281
14282
14283
14284
14285
14286
14287
14288
14289
14290
14291
14292
14293
14294
14295
14296
14297
14298
14299
14300
14301
14302
14303
14304
14305
14306
14307
14308
14309
14310
14311
14312
14313
14314
14315
14316
14317
14318
14319
14320
14321
14322
14323
14324
14325
14326
14327
14328
14329
14330
14331
14332
14333
14334
14335
14336
14337
14338
14339
14340
14341
14342
14343
14344
14345
14346
14347
14348
14349
14350
14351
14352
14353
14354
14355
14356
14357
14358
14359
14360
14361
14362
14363
14364
14365
14366
14367
14368
14369
14370
14371
14372
14373
14374
14375
14376
14377
14378
14379
14380
14381
14382
14383
14384
14385
14386
14387
14388
14389
14390
14391
14392
14393
14394
14395
14396
14397
14398
14399
14400
14401
14402
14403
14404
14405
14406
14407
14408
14409
14410
14411
14412
14413
14414
14415
14416
14417
14418
14419
14420
14421
14422
14423
14424
14425
14426
14427
14428
14429
14430
14431
14432
14433
14434
14435
14436
14437
14438
14439
14440
14441
14442
14443
14444
14445
14446
14447
14448
14449
14450
14451
14452
14453
14454
14455
14456
14457
14458
14459
14460
14461
14462
14463
14464
14465
14466
14467
14468
14469
14470
14471
14472
14473
14474
14475
14476
14477
14478
14479
14480
14481
14482
14483
14484
14485
14486
14487
14488
14489
14490
14491
14492
14493
14494
14495
14496
14497
14498
14499
14500
14501
14502
14503
14504
14505
14506
14507
14508
14509
14510
14511
14512
14513
14514
14515
14516
14517
14518
14519
14520
14521
14522
14523
14524
14525
14526
14527
14528
14529
14530
14531
14532
14533
14534
14535
14536
14537
14538
14539
14540
14541
14542
14543
14544
14545
14546
14547
14548
14549
14550
14551
14552
14553
14554
14555
14556
14557
14558
14559
14560
14561
14562
14563
14564
14565
14566
14567
14568
14569
14570
14571
14572
14573
14574
14575
14576
14577
14578
14579
14580
14581
14582
14583
14584
14585
14586
14587
14588
14589
14590
14591
14592
14593
14594
14595
14596
14597
14598
14599
14600
14601
14602
14603
14604
14605
14606
14607
14608
14609
14610
14611
14612
14613
14614
14615
14616
14617
14618
14619
14620
14621
14622
14623
14624
14625
14626
14627
14628
14629
14630
14631
14632
14633
14634
14635
14636
14637
14638
14639
14640
14641
14642
14643
14644
14645
14646
14647
14648
14649
14650
14651
14652
14653
14654
14655
14656
14657
14658
14659
14660
14661
14662
14663
14664
14665
14666
14667
14668
14669
14670
14671
14672
14673
14674
14675
14676
14677
14678
14679
14680
14681
14682
14683
14684
14685
14686
14687
14688
14689
14690
14691
14692
14693
14694
14695
14696
14697
14698
14699
14700
14701
14702
14703
14704
14705
14706
14707
14708
14709
14710
14711
14712
14713
14714
14715
14716
14717
14718
14719
14720
14721
14722
14723
14724
14725
14726
14727
14728
14729
14730
14731
14732
14733
14734
14735
14736
14737
14738
14739
14740
14741
14742
14743
14744
14745
14746
14747
14748
14749
14750
14751
14752
14753
14754
14755
14756
14757
14758
14759
14760
14761
14762
14763
14764
14765
14766
14767
14768
14769
14770
14771
14772
14773
14774
14775
14776
14777
14778
14779
14780
14781
14782
14783
14784
14785
14786
14787
14788
14789
14790
14791
14792
14793
14794
14795
14796
14797
14798
14799
14800
14801
14802
14803
14804
14805
14806
14807
14808
14809
14810
14811
14812
14813
14814
14815
14816
14817
14818
14819
14820
14821
14822
14823
14824
14825
14826
14827
14828
14829
14830
14831
14832
14833
14834
14835
14836
14837
14838
14839
14840
14841
14842
14843
14844
14845
14846
14847
14848
14849
14850
14851
14852
14853
14854
14855
14856
14857
14858
14859
14860
14861
14862
14863
14864
14865
14866
14867
14868
14869
14870
14871
14872
14873
14874
14875
14876
14877
14878
14879
14880
14881
14882
14883
14884
14885
14886
14887
14888
14889
14890
14891
14892
14893
14894
14895
14896
14897
14898
14899
14900
14901
14902
14903
14904
14905
14906
14907
14908
14909
14910
14911
14912
14913
14914
14915
14916
14917
14918
14919
14920
14921
14922
14923
14924
14925
14926
14927
14928
14929
14930
14931
14932
14933
14934
14935
14936
14937
14938
14939
14940
14941
14942
14943
14944
14945
14946
14947
14948
14949
14950
14951
14952
14953
14954
14955
14956
14957
14958
14959
14960
14961
14962
14963
14964
14965
14966
14967
14968
14969
14970
14971
14972
14973
14974
14975
14976
14977
14978
14979
14980
14981
14982
14983
14984
14985
14986
14987
14988
14989
14990
14991
14992
14993
14994
14995
14996
14997
14998
14999
15000
15001
15002
15003
15004
15005
15006
15007
15008
15009
15010
15011
15012
15013
15014
15015
15016
15017
15018
15019
15020
15021
15022
15023
15024
15025
15026
15027
15028
15029
15030
15031
15032
15033
15034
15035
15036
15037
15038
15039
15040
15041
15042
15043
15044
15045
15046
15047
15048
15049
15050
15051
15052
15053
15054
15055
15056
15057
15058
15059
15060
15061
15062
15063
15064
15065
15066
15067
15068
15069
15070
15071
15072
15073
15074
15075
15076
15077
15078
15079
15080
15081
15082
15083
15084
15085
15086
15087
15088
15089
15090
15091
15092
15093
15094
15095
15096
15097
15098
15099
15100
15101
15102
15103
15104
15105
15106
15107
15108
15109
15110
15111
15112
15113
15114
15115
15116
15117
15118
15119
15120
15121
15122
15123
15124
15125
15126
15127
15128
15129
15130
15131
15132
15133
15134
15135
15136
15137
15138
15139
15140
15141
15142
15143
15144
15145
15146
15147
15148
15149
15150
15151
15152
15153
15154
15155
15156
15157
15158
15159
15160
15161
15162
15163
15164
15165
15166
15167
15168
15169
15170
15171
15172
15173
15174
15175
15176
15177
15178
15179
15180
15181
15182
15183
15184
15185
15186
15187
15188
15189
15190
15191
15192
15193
15194
15195
15196
15197
15198
15199
15200
15201
15202
15203
15204
15205
15206
15207
15208
15209
15210
15211
15212
15213
15214
15215
15216
15217
15218
15219
15220
15221
15222
15223
15224
15225
15226
15227
15228
15229
15230
15231
15232
15233
15234
15235
15236
15237
15238
15239
15240
15241
15242
15243
15244
15245
15246
15247
15248
15249
15250
15251
15252
15253
15254
15255
15256
15257
15258
15259
15260
15261
15262
15263
15264
15265
15266
15267
15268
15269
15270
15271
15272
15273
15274
15275
15276
15277
15278
15279
15280
15281
15282
15283
15284
15285
15286
15287
15288
15289
15290
15291
15292
15293
15294
15295
15296
15297
15298
15299
15300
15301
15302
15303
15304
15305
15306
15307
15308
15309
15310
15311
15312
15313
15314
15315
15316
15317
15318
15319
15320
15321
15322
15323
15324
15325
15326
15327
15328
15329
15330
15331
15332
15333
15334
15335
15336
15337
15338
15339
15340
15341
15342
15343
15344
15345
15346
15347
15348
15349
15350
15351
15352
15353
15354
15355
15356
15357
15358
15359
15360
15361
15362
15363
15364
15365
15366
15367
15368
15369
15370
15371
15372
15373
15374
15375
15376
15377
15378
15379
15380
15381
15382
15383
15384
15385
15386
15387
15388
15389
15390
15391
15392
15393
15394
15395
15396
15397
15398
15399
15400
15401
15402
15403
15404
15405
15406
15407
15408
15409
15410
15411
15412
15413
15414
15415
15416
15417
15418
15419
15420
15421
15422
15423
15424
15425
15426
15427
15428
15429
15430
15431
15432
15433
15434
15435
15436
15437
15438
15439
15440
15441
15442
15443
15444
15445
15446
15447
15448
15449
15450
15451
15452
15453
15454
15455
15456
15457
15458
15459
15460
15461
15462
15463
15464
15465
15466
15467
15468
15469
15470
15471
15472
15473
15474
15475
15476
15477
15478
15479
15480
15481
15482
15483
15484
15485
15486
15487
15488
15489
15490
15491
15492
15493
15494
15495
15496
15497
15498
15499
15500
15501
15502
15503
15504
15505
15506
15507
15508
15509
15510
15511
15512
15513
15514
15515
15516
15517
15518
15519
15520
15521
15522
15523
15524
15525
15526
15527
15528
15529
15530
15531
15532
15533
15534
15535
15536
15537
15538
15539
15540
15541
15542
15543
15544
15545
15546
15547
15548
15549
15550
15551
15552
15553
15554
15555
15556
15557
15558
15559
15560
15561
15562
15563
15564
15565
15566
15567
15568
15569
15570
15571
15572
15573
15574
15575
15576
15577
15578
15579
15580
15581
15582
15583
15584
15585
15586
15587
15588
15589
15590
15591
15592
15593
15594
15595
15596
15597
15598
15599
15600
15601
15602
15603
15604
15605
15606
15607
15608
15609
15610
15611
15612
15613
15614
15615
15616
15617
15618
15619
15620
15621
15622
15623
15624
15625
15626
15627
15628
15629
15630
15631
15632
15633
15634
15635
15636
15637
15638
15639
15640
15641
15642
15643
15644
15645
15646
15647
15648
15649
15650
15651
15652
15653
15654
15655
15656
15657
15658
15659
15660
15661
15662
15663
15664
15665
15666
15667
15668
15669
15670
15671
15672
15673
15674
15675
15676
15677
15678
15679
15680
15681
15682
15683
15684
15685
15686
15687
15688
15689
15690
15691
15692
15693
15694
15695
15696
15697
15698
15699
15700
15701
15702
15703
15704
15705
15706
15707
15708
15709
15710
15711
15712
15713
15714
15715
15716
15717
15718
15719
15720
15721
15722
15723
15724
15725
15726
15727
15728
15729
15730
15731
15732
15733
15734
15735
15736
15737
15738
15739
15740
15741
15742
15743
15744
15745
15746
15747
15748
15749
15750
15751
15752
15753
15754
15755
15756
15757
15758
15759
15760
15761
15762
15763
15764
15765
15766
15767
15768
15769
15770
15771
15772
15773
15774
15775
15776
15777
15778
15779
15780
15781
15782
15783
15784
15785
15786
15787
15788
15789
15790
15791
15792
15793
15794
15795
15796
15797
15798
15799
15800
15801
15802
15803
15804
15805
15806
15807
15808
15809
15810
15811
15812
15813
15814
15815
15816
15817
15818
15819
15820
15821
15822
15823
15824
15825
15826
15827
15828
15829
15830
15831
15832
15833
15834
15835
15836
15837
15838
15839
15840
15841
15842
15843
15844
15845
15846
15847
15848
15849
15850
15851
15852
15853
15854
15855
15856
15857
15858
15859
15860
15861
15862
15863
15864
15865
15866
15867
15868
15869
15870
15871
15872
15873
15874
15875
15876
15877
15878
15879
15880
15881
15882
15883
15884
15885
15886
15887
15888
15889
15890
15891
15892
15893
15894
15895
15896
15897
15898
15899
15900
15901
15902
15903
15904
15905
15906
15907
15908
15909
15910
15911
15912
15913
15914
15915
15916
15917
15918
15919
15920
15921
15922
15923
15924
15925
15926
15927
15928
15929
15930
15931
15932
15933
15934
15935
15936
15937
15938
15939
15940
15941
15942
15943
15944
15945
15946
15947
15948
15949
15950
15951
15952
15953
15954
15955
15956
15957
15958
15959
15960
15961
15962
15963
15964
15965
This file describes changes in recent versions of Slurm. It primarily
documents those changes that are of interest to users and administrators.

* Changes in Slurm 24.11.5
==========================
 -- Return error to scontrol reboot on bad nodelists.
 -- slurmrestd - Report an error when QOS resolution fails for v0.0.40
    endpoints.
 -- slurmrestd - Report an error when QOS resolution fails for v0.0.41
    endpoints.
 -- slurmrestd - Report an error when QOS resolution fails for v0.0.42
    endpoints.
 -- data_parser/v0.0.42 - Added +inline_enums flag which modifies the
    output when generating OpenAPI specification. It causes enum arrays to not
    be defined in their own schema with references ($ref) to them. Instead they
    will be dumped inline.
 -- Fix binding error with tres-bind map/mask on partial node allocations.
 -- Fix stepmgr enabled steps being able to request features.
 -- Reject step creation if requested feature is not available in job.
 -- slurmd - Restrict listening for new incoming RPC requests further into
    startup.
 -- slurmd - Avoid auth/slurm related hangs of CLI commands during startup
    and shutdown.
 -- slurmctld - Restrict processing new incoming RPC requests further into
    startup. Stop processing requests sooner during shutdown.
 -- slurmcltd - Avoid auth/slurm related hangs of CLI commands during
    startup and shutdown.
 -- slurmctld: Avoid race condition during shutdown or reconfigure that
    could result in a crash due delayed processing of a connection while
    plugins are unloaded.
 -- Fix small memleak when getting the job list from the database.
 -- Fix incorrect printing of % escape characters when printing stdio
    fields for jobs.
 -- Fix padding parsing when printing stdio fields for jobs.
 -- Fix printing %A array job id when expanding patterns.
 -- Fix reservations causing jobs to be held for Bad Constraints
 -- switch/hpe_slingshot - Prevent potential segfault on failed curl
    request to the fabric manager.
 -- Fix printing incorrect array job id when expanding stdio file names.
    The %A will now be substituted by the correct value.
 -- Fix printing incorrect array job id when expanding stdio file names.
    The %A will now be substituted by the correct value.
 -- switch/hpe_slingshot - Fix vni range not updating on slurmctld restart
    or reconfigre.
 -- Fix steps not being created when using certain combinations of -c and
    -n inferior to the jobs requested resources, when using stepmgr and nodes
    are configured with CPUs == Sockets*CoresPerSocket.
 -- Permit configuring the number of retry attempts to destroy CXI service
    via the new destroy_retries SwitchParameter.
 -- Do not reset memory.high and memory.swap.max in slurmd startup or
    reconfigure as we are never really touching this in slurmd.
 -- Fix reconfigure failure of slurmd when it has been started manually and
    the CoreSpecLimits have been removed from slurm.conf.
 -- Set or reset CoreSpec limits when slurmd is reconfigured and it was
    started with systemd.
 -- switch/hpe-slingshot - Make sure the slurmctld can free step VNIs after
    the controller restarts or reconfigures while the job is running.
 -- Fix backup slurmctld failure on 2nd takeover.
 -- Testsuite - fix python test 130_2.
 -- Fix security issue where a coordinator could add a user with elevated
    privileges. CVE-2025-43904.

* Changes in Slurm 24.11.4
==========================
 -- slurmctld,slurmrestd - Avoid possible race condition that could have caused
    process to crash when listener socket was closed while accepting a new
    connection.
 -- slurmrestd - Avoid race condition that could have resulted in address
    logged for a UNIX socket to be incorrect.
 -- slurmrestd - Fix parameters in OpenAPI specification for the following
    endpoints to have "job_id" field:
    GET /slurm/v0.0.40/jobs/state/
    GET /slurm/v0.0.41/jobs/state/
    GET /slurm/v0.0.42/jobs/state/
    GET /slurm/v0.0.43/jobs/state/
 -- slurmd - Fix tracking of thread counts that could cause incoming
    connections to be ignored after burst of simultaneous incoming connections
    that trigger delayed response logic.
 -- Stepmgr - Avoid unnecessary SRUN_TIMEOUT forwarding to stepmgr.
 -- Fix jobs being scheduled on higher weighted powered down nodes.
 -- Fix how backfill scheduler filters nodes from the available nodes based on
    exclusive user and mcs_label requirements.
 -- acct_gather_energy/{gpu,ipmi} - Fix potential energy consumption adjustment
    calculation underflow.
 -- acct_gather_energy/ipmi - Fix regression introduced in 24.05.5 (which
    introduced the new way of preserving energy measurements through slurmd
    restarts) when EnergyIPMICalcAdjustment=yes.
 -- Prevent slurmctld deadlock in the assoc mgr.
 -- Fix memory leak when RestrictedCoresPerGPU is enabled.
 -- Fix preemptor jobs not entering execution due to wrong calculation of
    accounting policy limits.
 -- Fix certain job requests that were incorrectly denied with node
    configuration unavailable error.
 -- slurmd - Avoid crash due when slurmd has a communications failure with
    slurmstepd.
 -- Fix memory leak when parsing yaml input.
 -- Prevent slurmctld from showing error message about PreemptMode=GANG being a
    cluster-wide option for `scontrol update part` calls that don't attempt to
    modify partition PreemptMode.
 -- Fix setting GANG preemption on partition when updating PreemptMode with
    scontrol.
 -- Fix CoreSpec and MemSpec limits not being removed from previously
    configured slurmd.
 -- Avoid race condition that could lead to a deadlock when slurmd, slurmstepd,
    slurmctld, slurmrestd or sackd have a fatal event.
 -- Fix jobs using --ntasks-per-node and --mem keep pending forever when the
    requested mem divided by the number of cpus will surpass the configured
    MaxMemPerCPU.
 -- slurmd - Fix address logged upon new incoming RPC connection from "INVALID"
    to IP address.
 -- Fix memory leak when retrieving reservations. This affects scontrol, sinfo,
    sview, and the following slurmrestd endpoints:
    'GET /slurm/{any_data_parser}/reservation/{reservation_name}'
    'GET /slurm/{any_data_parser}/reservations'
 -- Log warning instead of debuflags=conmgr gated log when deferring new
    incoming connections when number of active connections exceed
    conmgr_max_connections.
 -- Avoid race condition that could result in worker thread pool not activating
    all threads at once after a reconfigure resulting in lower utilization of
    available CPU threads until enough internal activity wakes up all threads
    in the worker pool.
 -- Avoid theoretical race condition that could result in new incoming RPC
    socket connections being ignored after reconfigure.
 -- slurmd - Avoid race condition that could result in a state where new
    incoming RPC connections will always be ignored.
 -- Add ReconfigFlags=KeepNodeStateFuture to restore saved FUTURE node state on
    restart and reconfig instead of reverting to FUTURE state. This will be
    made the default in 25.05.
 -- Fix case where hetjob submit would cause slurmctld to crash.
 -- Fix jobs using --cpus-per-gpu and --mem keep pending forever when the
    requested mem divided by the number of cpus will surpass the configured
    MaxMemPerCPU.
 -- Enforce that jobs using --mem and several --*-per-* options do not violate
    the MaxMemPerCPU in place.
 -- slurmctld - Fix use-cases of jobs incorrectly pending held when --prefer
    features are not initially satisfied.
 -- slurmctld - Fix jobs incorrectly held when --prefer not satisfied in some
    use-cases.
 -- Ensure RestrictedCoresPerGPU and CoreSpecCount don't overlap.

* Changes in Slurm 24.11.3
==========================
 -- Fix race condition in slurmrestd that resulted in "Requested
    data_parser plugin does not support OpenAPI plugin" error being returned
    for valid endpoints.
 -- If multiple partitions are requested, set the SLURM_JOB_PARTITION
    output environment variable to the partition in which the job is running
    for salloc and srun in order to match the documentation and the behavior of
    sbatch.
 -- Fix regression where slurmd -G gives no output.
 -- Don't print misleading errors for stepmgr enabled steps.
 -- slurmrestd - Avoid connection to slurmdbd for the following
    endpoints:
    GET /slurm/v0.0.41/jobs
    GET /slurm/v0.0.41/job/{job_id}
 -- slurmrestd - Avoid connection to slurmdbd for the following
    endpoints:
    GET /slurm/v0.0.40/jobs
    GET /slurm/v0.0.40/job/{job_id}
 -- Significantly increase entropy of clusterid portion of the
    sluid by seeding the random number generator
 -- Avoid changing process name to "watch" from original daemon name.
    This could potentially breaking some monitoring scripts.
 -- Avoid slurmctld being killed by SIGALRM due to race condition
    at startup.
 -- Fix slurmctld crash when after updating a reservation with an empty
    nodelist. The crash could occur after restarting slurmctld, or if
    downing/draining a node in the reservation with the REPLACE or REPLACE_DOWN
    flag.
 -- Fix race between task/cgroup cpuset and jobacctgather/cgroup.
    The first was removing the pid from task_X cgroup directory causing
    memory limits to not be applied.
 -- srun - Fixed wrongly constructed SLURM_CPU_BIND env variable
    that could get propagated to downward srun calls in certain mpi
    environments, causing launch failures.
 -- slurmrestd - Fix possible memory leak when parsing arrays with
    data_parser/v0.0.40.
 -- slurmrestd - Fix possible memory leak when parsing arrays with
    data_parser/v0.0.41.
 -- slurmrestd - Fix possible memory leak when parsing arrays with
    data_parser/v0.0.42.

* Changes in Slurm 24.11.2
==========================
 -- Fix segfault when submitting --test-only jobs that can preempt.
 -- Fix regression introduced in 23.11 that prevented the following
    flags from being added to a reservation on an update:
    DAILY, HOURLY, WEEKLY, WEEKDAY, and WEEKEND.
 -- Fix crash and issues evaluating job's suitability for running in
    nodes with already suspended job(s) there.
 -- Slurmctld will ensure that healthy nodes are not reported as
    UnavailableNodes in job reason codes.
 -- Fix handling of jobs submitted to a current reservation with
    flags OVERLAP,FLEX or OVERLAP,ANY_NODES when it overlaps nodes with a
    future maintenance reservation. When a job submission had a time limit that
    overlapped with the future maintenance reservation, it was rejected. Now
    the job is accepted but stays pending with the reason "ReqNodeNotAvail,
    Reserved for maintenance".
 -- pam_slurm_adopt - avoid errors when explicitly setting
    some arguments to the default value.
 -- Fix qos preemption with PreemptMode=SUSPEND
 -- slurmdbd - When changing a user's name update lineage
    at the same time.
 -- Fix regression in 24.11 in which burst_buffer.lua does not
    inherit the SLURM_CONF environment variable from slurmctld and fails to run
    if slurm.conf is in a non-standard location.
 -- Fix memory leak in slurmctld if select/linear and the
    PreemptParameters=reclaim_licenses options are both set in slurm.conf.
    Regression in 24.11.1.
 -- Fix running jobs, that requested multiple partitions, from
    potentially being set to the wrong partition on restart.
 -- switch/hpe_slingshot - Fix compatibility with newer cxi
    drivers, specifically when specifying disable_rdzv_get.
 -- Add ABORT_ON_FATAL environment variable to capture a backtrace
    from any fatal() message.
 -- Fix printing invalid address in rate limiting log statement.
 -- sched/backfill - Fix node state PLANNED not being cleared from
    fully allocated nodes during a backfill cycle.
 -- select/cons_tres - Fix future planning of jobs with bf_licenses.
 -- Prevent redundant "on_data returned rc: Rate limit exceeded,
    please retry momentarily" error message from being printed in
    slurmctld logs.
 -- Fix loading non-default QOS on pending jobs from pre-24.11 state.
 -- Fix pending jobs displaying QOS=(null) when not explicitly
    requesting a QOS.
 -- Fix segfault issue from job record with no job_resrcs
 -- Fix failing sacctmgr delete/modify/show account operations
    with where clauses.
 -- Fix regression in 24.11 in which Slurm daemons started catching
    several SIGTSTP, SIGTTIN and SIGUSR1 signals and ignored them, while before
    they were not ignoring them. This also caused slurmctld to not being
    able to shutdown after a SIGTSTP because slurmscriptd caught the signal
    and stopped while slurmctld ignored it. Unify and fix these situations and
    get back to the previous behavior for these signals.
 -- Document that SIGQUIT is no longer ignored by slurmctld,
    slurmdbd, and slurmd in 24.11. As of 24.11.0rc1, SIGQUIT is identical to
    SIGINT and SIGTERM for these daemons, but this change was not documented.
 -- Fix not considering nodes marked for reboot without ASAP
    in the scheduler.
 -- Remove the boot^ state on unexpected node reboot after
    return to service.
 -- Do not allow new jobs to start on a node which is being rebooted
    with the flag nextstate=resume.
 -- Prevent lower priority job running after cancelling an ASAP reboot.
 -- Fix srun jobs starting on nextstate=resume rebooting nodes.

* Changes in Slurm 24.11.1
==========================
 -- With client commands MIN_MEMORY will show mem_per_tres if specified.
 -- Fix errno message about bad constraint
 -- slurmctld - Fix crash and possible split brain issue if the
    backup controller handles an scontrol reconfigure while in control
    before the primary resumes operation.
 -- Fix stepmgr not getting dynamic node addrs from the controller
 -- stepmgr - avoid "Unexpected missing socket" errors.
 -- Fix `scontrol show steps` with dynamic stepmgr
 -- Deny jobs using the "R:" option of --signal if PreemptMode=OFF
    globally.
 -- Force jobs using the "R:" option of --signal to be preemptable
    by requeue or cancel only. If PreemptMode on the partition or QOS is off
    or suspend, the job will default to using PreemptMode=cancel.
 -- If --mem-per-cpu exceeds MaxMemPerCPU, the number of cpus per
    task will always be increased even if --cpus-per-task was specified. This
    is needed to ensure each task gets the expected amount of memory.
 -- Fix compilation issue on OpenSUSE Leap 15
 -- Fix jobs using more nodes than needed when not using -N
 -- Fix issue with allocation being allocated less resources
    than needed when using --gres-flags=enforce-binding.
 -- select/cons_tres - Fix errors with MaxCpusPerSocket partition
    limit. Used cpus/cores weren't counted properly, nor limiting free ones
    to avail, when the socket was partially allocated, or the job request
    went beyond this limit.
 -- Fix issue when jobs were preempted for licenses even if there
    were enough licenses available.
 -- Fix srun ntasks calculation inside an allocation when nodes are
    requested using a min-max range.
 -- Print correct number of digits for TmpDisk in sdiag.
 -- Fix a regression in 24.11 which caused file transfers to a job
    with sbcast to not join the job container namespace.
 -- data_parser/v0.0.40 - Prevent a segfault in the slurmrestd when
    dumping data with v0.0.40+complex data parser.
 -- Remove logic to force lowercase GRES names.
 -- data_parser/v0.0.42 - Prevent the association id from always
    being dumped as NULL when parsing in complex mode. Instead it will now
    dump the id. This affects the following endpoints:
    GET slurmdb/v0.0.42/association
    GET slurmdb/v0.0.42/associations
    GET slurmdb/v0.0.42/config
 -- Fixed a job requeuing issue that merged job entries into the
    same SLUID when all nodes in a job failed simultaneously.
 -- When a job completes, try to give idle nodes to reservations with
    the REPLACE flag before allowing them to be allocated to jobs.
 -- Avoid expensive lookup of all associations when dumping or
    parsing for v0.0.42 endpoints.
 -- Avoid expensive lookup of all associations when dumping or
    parsing for v0.0.41 endpoints.
 -- Avoid expensive lookup of all associations when dumping or
    parsing for v0.0.40 endpoints.
 -- Fix segfault when testing jobs against nodes with invalid gres.
 -- Fix performance regression while packing larger RPCs.
 -- Document the new mcs/label plugin.
 -- job_container/tmpfs - Fix Xauthoirty file being created
    outside the container when EntireStepInNS is enabled.
 -- job_container/tmpfs - Fix spank_task_post_fork not always
    running in the container when EntireStepInNS is enabled.
 -- Fix a job potentially getting stuck in CG on permissions
    errors while setting up X11 forwarding.
 -- Fix error on X11 shutdown if Xauthority file was not created.
 -- slurmctld - Fix memory or fd leak if an RPC is recieved that
    is not registered for processing.
 -- Inject OMPI_MCA_orte_precondition_transports when using PMIx. This fixes
    mpi apps using Intel OPA, PSM2 and OMPI 5.x when ran through srun.
 -- Don't skip the first partition_job_depth jobs per partition.
 -- Fix gres allocation issue after controller restart.
 -- Fix issue where jobs requesting cpus-per-gpu hang in queue.
 -- switch/hpe_slingshot - Treat HTTP status forbidden the same as
    unauthorized, allowing for a graceful retry attempt.

* Changes in Slurm 24.11.0
==========================
 -- slurmctld - Reject arbitrary distribution jobs that do not specifying a task
    count.
 -- Fix backwards compatibility of the RESPONSE_JOB_INFO RPC (used by squeue,
    scontrol show job, etc.) with Slurm clients version 24.05 and below. This
    was a regression in 24.11.0rc1.
 -- Do not let slurmctld/slurmd to start if there are more nodes defined in
    slurm.conf than the maximum supported amount (64k nodes).
 -- slurmctld - Set job's exit code to 1 when a job fails with state
    JOB_NODE_FAIL. This fixes "sbatch --wait" not being able to exit with error
    code when a job fails for this reason in some cases.
 -- Fix certain reservation updates requested from 23.02 clients.
 -- slurmrestd - Fix populating non-required object fields of objects as '{}' in
    JSON/YAML instead of 'null' causing compiled OpenAPI clients to reject
    the response to 'GET /slurm/v0.0.40/jobs' due to validation failure of
    '.jobs[].job_resources'.
 -- Fix issue where older versions of Slurm talking to a 24.11 dbd could
    loose step accounting.
 -- Fix minor memory leaks.
 -- Fix bad memory reference when xstrchr fails to find char.
 -- Remove duplicate checks for a data structure.
 -- Fix race condition in stepmgr step completion handling.
 -- slurm.spec - add ability to specify patches to apply on the command line
 -- slurm.spec - add ability to supply extra version information
 -- Fix 24.11 HA issues.
 -- Fix requeued jobs keeping their priority until the decay thread happens.
 -- Fix potential memory corruption in select/cons_tres plugin.
 -- Avoid cache coherency issue on non-x86 platforms that could result in a
    POSIX signal being ignored or an abort().
 -- slurmctld - Remove assertion in development builds that would trigger if
    an outdated client attempted to connect.
 -- slurmd - Wait for PrologEpilogTimeout on reconfigure for prologs to finish.
    This avoids a situation where the slurmd never detects that the prolog
    completed.
 -- job_container/tmpfs - Setup x11 forwarding within the namespace.

* Changes in Slurm 24.11.0rc2
=============================
 -- slurmctld - fix memory leak when sending a DBD_JOB_START message.
 -- Fix issue with accounting rollup dealing with association tables.
 -- Fix minor memory leaks.
 -- Fix potential thread safety issues.
 -- Init mutex in burst_buffer plugins.
 -- slurmdbd - don't log errors when no changes occur from db requests.
 -- slurmcltd,slurmd - Avoid deadlock during reconfigure if too many POSIX
    signals are received.

* Changes in Slurm 24.11.0rc1
=============================
 -- Improve error type logged from partial or incomplete reading from socket or
    pipe to avoid potentially logging an error from a previous syscall.
 -- slurmrestd - Improve the handling of queries when unable to connect to
    slurmdbd by providing responses when possible.
 -- slurmrestd,sackd,scrun - Avoid rare hangs related to I/O.
 -- scrun - Add support '--all' argument for kill subcommand.
 -- Remove srun --cpu-bind=rank.
 -- Add resource_spec/cpus and resource_spec/memory entry points in data_parser
    to print the CpuSpecList and MemSpecLimit in sinfo --json.
 -- sinfo - Add '.sinfo[].resource_spec.cpus' and
    '.sinfo[].resource_spec.memory' fields to print the CpuSpecList and
    MemSpecLimit dumped by 'sinfo --{json|yaml}'.
 -- Increase efficency of sending logs to syslog.
 -- Switch to new official YAML mime type "application/yaml" in compliance with
    RFC9512 as primary mime type for YAML formatting.
 -- slurmrestd - Removed deprecated fields from the following endpoints:
	'.result' from 'POST /slurm/v0.0.42/job/submit'.
	'.job_id', '.step_id', '.job_submit_user_msg' from 'POST /slurm/v0.0.42/job/{job_id}'.
	'.job.exclusive', '.jobs[].exclusive' to 'POST /slurm/v0.0.42/job/submit'.
	'.jobs[].exclusive' from 'GET /slurm/v0.0.42/job/{job_id}'.
	'.jobs[].exclusive' from 'GET /slurm/v0.0.42/jobs'.
	'.job.oversubscribe', '.jobs[].oversubscribe' to 'POST /slurm/v0.0.42/job/submit'.
	'.jobs[].oversubscribe' from 'GET /slurm/v0.0.42/job/{job_id}'.
	'.jobs[].oversubscribe' from 'GET /slurm/v0.0.42/jobs'.
 -- scontrol - Removed deprecated fields '.jobs[].exclusive' and
    '.jobs[].oversubscribe' from 'scontrol show jobs --{json|yaml}'.
 -- squeue - Removed deprecated fields '.jobs[].exclusive' and
    '.jobs[].oversubscribe' from 'squeue --{json|yaml}'.
 -- Improve the way to run external commands and fork processes to avoid
    non-async-signal safe calls between a fork and an exec. We fork ourselves
    now and executes the commands in a safe environment. This includes spank
    prolog/epilog executions.
 -- Improve MaxMemPerCPU enforcement when exclusive jobs request per node memory
    and the partition has heterogeneous nodes.
 -- Remove a TOCTOU where multiple steps requesting an energy reading at the
    same time could cause too frequent accesses to the drivers.
 -- Limit SwitchName to HOST_NAME_MAX chars length.
 -- For scancel --ctld and the following rest api endpoints:
      'DELETE /slurm/v0.0.40/jobs'
      'DELETE /slurm/v0.0.41/jobs'
      'DELETE /slurm/v0.0.42/jobs'
    Support array expressions in the responses to the client.
 -- salloc - Always output node names to the user when an allocation is granted.
 -- slurmrestd - Removed all v0.0.39 endpoints.
 -- select/linear - Reject jobs asking for GRES per job|socket|task or
    cpus|mem per GRES.
 -- Add /nodes POST endpoint to REST API, supports multiple node update whereas
    previously only single nodes could be updated through /node/<nodename>
    endpoint:
      'POST /slurm/v0.0.42/nodes'
 -- Do not allow changing or setting PreemptMode=GANG to a partition as this is
    a cluster-wide option.
 -- Add "%b" as a file name pattern for the array task id modulo 10.
 -- Skip packing empty nodes when they are hidden during REQUEST_NODE_INFO RPC.
 -- accounting_storage/mysql - Avoid a fatal condition when the db server is
    not reachable.
 -- Always lay out steps cyclically on nodes in an allocation.
 -- squeue - add priority by partition ('.jobs[].priority_by_partition') to
    JSON and YAML output.
 -- slurmrestd - Add clarification to "failed to open slurmdbd connection" error
    if the error was the result of an authentication failure.
 -- Make it so slurmctld responds to RPCs that have authenticaiton errors with
    the SLURM_PROTOCOL_AUTHENTICATION_ERROR error code.
 -- openapi/slurmctld - Display the correct error code instead of
    "Unspecified error" if querying the following endpoints fails:
      'GET /slurm/v0.0.40/diag/'
      'GET /slurm/v0.0.41/diag/'
      'GET /slurm/v0.0.42/diag/'
      'GET /slurm/v0.0.40/licenses/'
      'GET /slurm/v0.0.41/licenses/'
      'GET /slurm/v0.0.42/licenses/'
      'GET /slurm/v0.0.40/reconfigure'
      'GET /slurm/v0.0.41/reconfigure'
      'GET /slurm/v0.0.42/reconfigure'
 -- Fix how used cpus are tracked in a job allocation to allow the max number of
    concurrent steps to run at a time if threads per core is greater than 1.
 -- In existing allocations SLURM_GPUS_PER_NODE environment variable will be
    ignored by srun if --gpus is specified.
 -- When using --get-user-env explicitly or implicitly, check if PID or mnt
    namespaces are disabled and fall back to old logic that does not rely on
    them when they are not available.
 -- Removed non-functional option SLURM_PROLOG_CPU_MASK from TaskProlog which
    was used to reset the affinity of a task based on the mask given.
 -- slurmrestd - Support passing of '-d latest' to load latest version of
    data_parser plugin.
 -- sacct,sacctmgr,scontrol,sdiag,sinfo,squeue,sshare - Change response to
    '--json=list' or '--yaml=list' to send list of plugins to stdout and
    descriptive header to stderr to allow for easier parsing.
 -- slurmrestd - Change response to '-d list', '-a list' or '-s list' to send
    list of plugins to stdout and descriptive header to stderr to allow for
    easier parsing.
 -- sacct,sacctmgr,scontrol,sdiag,sinfo,squeue,sshare,slurmrestd - Avoid crash
    when loading data_parser plugins fail due to NULL dereference.
 -- Add autodetected gpus to the output of slurmd -C
 -- Remove burst_buffer/lua call slurm.job_info_to_string().
 -- Add SchedulerParameters=bf_allow_magnetic_slot option. It allows jobs in
    magnetic reservations to be planned by backfill scheduler.
 -- slurmrestd - Refuse to run as root, SlurmUser, and nobody(99).
 -- openapi/slurmctld - Revert regression that caused signaling jobs to cancel
    entire job arrays instead of job array tasks:
      'DELETE /slurm/v0.0.40/{job_id}'
      'DELETE /slurm/v0.0.41/{job_id}'
      'DELETE /slurm/v0.0.42/{job_id}'
 -- openapi/slurmctld - Support more formats for {job_id} including job steps:
      'DELETE /slurm/v0.0.40/{job_id}'
      'DELETE /slurm/v0.0.41/{job_id}'
      'DELETE /slurm/v0.0.42/{job_id}'
 -- Alter scheduling of jobs at submission time to consider job submission time
    and job id. This makes it so that that interactive jobs aren't allocated
    resources before batch jobs when they have the same priority at submit time.
 -- Fix multi-cluster submissions with differing Switch plugins.
 -- slurmrestd - Change +prefer_refs flag to default in data_parser/v0.0.42
    plugin. Add +minimize_refs flag to inline single referenced schemas in the
    OpenAPI schema. This sets the default OpenAPI schema generation behavior of
    data_parser/v0.0.42 to match v0.0.41+prefer_refs and v0.0.40 (without
    flags).
 -- Fix LaunchParameters=batch_step_set_cpu_freq.
 -- Clearer seff warning message for running jobs.
 -- data_parser/v0.0.42 - Rename JOB_INFO field "minimum_switches" to
    "required_switches" to reflect the actual behavior.
 -- data_parser/v0.0.42 - Rename ACCOUNT_CONDITION field "assocation" to
    "association" to fix typo.
 -- cgroup/v2 - fix cgroup cleanup when running inside a container without write
    permissions to /sys/fs/cgroup.
 -- cgroup/v2 - fix accounting of swap events detection.
 -- Fix gathering MaxRSS for jobs that run shorter than two jobacctgather
    intevals. Get the metrics from cgroups memory.peak or
    memory.max_usage_in_bytes where available.
 -- openapi/slurmctld - Set complex number support for the following fields:
      .shares[][].fairshare.factor
      .shares[][].fairshare.level
    for endpoints:
      'GET /slurm/v0.0.42/shares'
    and for commands:
      sshare --json
      sshare --yaml
 -- data_parser/v0.0.42 - Avoid dumping "Infinity" for NO_VAL tagged "number"
    fields.
 -- Add TopologyParam=TopoMaxSizeUnroll=# to allow --nodes=<min>-<max> for
    topology/block.
 -- sacct - Respect --noheader for --batch-script and --env-vars.
 -- sacct - Remove extra newline in output from --batch-script and --env-vars.
 -- Add "sacctmgr ping" command to query status of slurmdbd.
 -- Generate an error message when a NodeSet name conflicts with a NodeName, and
    prevent the controller from starting if such a conflict exists.
 -- slurmd - properly detect slurmd restarts in the energy gathering logic
    which caused bad numbers in accounting.
 -- sackd - retry fetching slurm configs indefinately in configless mode.
 -- job_submit/lua - Add "assoc_qos" attribute to job_desc to display all
    potential QOS's for a job's association.
 -- job_submit/lua - Add slurm.get_qos_priority() function to retrieve the
    given QOS's priority.
 -- sbcast - Add --nodelist option to specify where files are transmitted to
 -- sbcast - Add --no-allocation option to transmit files to nodes outside of a
    job allocation
 -- Add DataParserParameters slurm.conf parameter to allow setting default
    value for CLI --json and --yaml arguments.
 -- seff - improve step's max memory consumption report by using TresUsageInTot
    and TresUsageInAve instead of overestimating the values.
 -- Enable RPC queueing for REQUEST_KILL_JOBS, which is used when scancel is
    executed with --ctld flag.
 -- slurmdbd - Add -u option. This is used to determine if restarting the DBD
    will result in database conversion.
 -- Fix srun inside an salloc in a federated cluster when using IPv6.
 -- Calculate the forwarding timeouts according to tree depth rather than
    node count / tree width for each level. Fixes race conditions with same
    timeouts between two consecutive node levels.
 -- Add ability to submit jobs with multiple QOS.
 -- Fix difference in behavior when swapping partition order in job submission.
 -- Improve PLANNED state detection for mixed nodes and updating state before
    yielding backfill locks.
 -- Always consider partition priority tiers when deciding to try scheduling
    jobs on submit.
 -- Prevent starting jobs without reservations on submit when there are pending
    jobs with reservations that have flags FLEX or ANY_NODES that can be
    scheduled on overlapping nodes.
 -- Prevent jobs that request both high and low priority tier partitions from
    starting on submit in lower priority tier partitions if it could delay
    pending jobs in higher priority tier partitions.
 -- scontrol - Wait for slurmctld to start reconfigure in foreground mode
    before returning.
 -- Improve reconfigure handling on Linux to only close open file descriptors
    to avoid long delays on systems with large RLIMIT_NOFILE settings.
 -- salloc - Removed --get-user-env option.
 -- Removed the instant on feature from switch/hpe_slingshot.
 -- Hardware collectives in switch/hpe_slingshot now requires enable_stepmgr.
 -- Allow backfill to plan jobs on nodes currently being used by exclusive user
    or mcs jobs.
 -- Avoid miscaching IPv6 address to hostname lookups that could have caused
    logs to have the incorrect hostname.
 -- scontrol - Add --json/--yaml support to listpids
 -- scontrol - Add liststeps
 -- scontrol - Add listjobs
 -- slurmrestd - Avoid connection to slurmdbd for the following endpoints:
      GET /slurm/v0.0.42/jobs
      GET /slurm/v0.0.42/job/{job_id}
 -- slurmctld - Changed incoming RPC handling to dedicated thread pool.
 -- job_container/tmpfs - Add EntireStepInNS option that will place the
    slurmstepd process within the constructed namespace directly.
 -- scontrol show topo - Show aggregated block sizes when using topology/block.
 -- slurmrestd - Add more descriptive HTTP status for authentication failure
    and connectivity errors with controller.
 -- slurmrestd - Improve reporting errors from slurmctld for job queries:
      'GET /slurm/v0.0.41/{job_id}'
      'GET /slurm/v0.0.41/jobs/'
 -- Avoid rejecting a step request that needs fewer gres than nodes in the
    job allocation.
 -- slurmrestd - Tag the never populated '.jobs[].pid' field as deprecated for
    the following endpoints:
      'GET /slurm/v0.0.42/{job_id}'
      'GET /slurm/v0.0.42/jobs/'
 -- scontrol,squeue - Tag the never populated '.jobs[].pid' field as deprecated
    for the following:
      'scontrol show jobs --json'
      'scontrol show jobs --yaml'
      'scontrol show job ${JOB_ID} --json'
      'scontrol show job ${JOB_ID} --yaml'
      'squeue --json'
      'squeue --yaml'
 -- data_parser v0.0.42 - fix timestamp parsing regression introduced in in
    v0.0.40 (eaf3b6631f), parsing of non iso 8601 style timestamps
 -- cgroup/v2 will detect some special container and namespaced setups and
    will work with it.
 -- Support IPv6 in configless mode.
 -- Add SlurmctldParamters=ignore_constraint_validation to ignore
    constraint/feature validation at submission.
 -- slurmrestd - Set '.pings[].mode' field as deprecated in the following
    endpoints:
      'GET /slurm/v0.0.42/ping'
 -- scontrol - Set '.pings[].mode' field as deprecated in the following
    commands:
      'scontrol ping --json'
      'scontrol ping --yaml'
 -- slurmrestd - Set '.pings[].pinged' field as deprecated in the following
    endpoints:
      'GET /slurm/v0.0.42/ping'
 -- scontrol - Set '.pings[].pinged' field as deprecated in the following
    commands:
      'scontrol ping --json'
      'scontrol ping --yaml'
 -- slurmrestd - Add '.pings[].primary' field to the following endpoints:
      'GET /slurm/v0.0.42/ping'
 -- scontrol - Add '.pings[].primary' field to the following commands:
      'scontrol ping --json'
      'scontrol ping --yaml'
 -- slurmrestd - Add '.pings[].responding' field to the following endpoints:
      'GET /slurm/v0.0.42/ping'
 -- scontrol - Add '.pings[].responding' field to the following commands:
      'scontrol ping --json'
      'scontrol ping --yaml'
 -- Prevent jobs without reservations from delaying jobs in reservations with
    flags FLEX or ANY_NODES in the main scheduler.
 -- Fix allowing to ask for multiple different types of TRES when one of
    them has a value of 0.
 -- slurmctld - Add a grace period to ensure the agent retry queue is properly
    flushed during shutdown.
 -- Removed src/slurmrestd/plugins/openapi/slurmdbd/openapi.json from source
    repository. slurmrest should always be used to generate a new OpenAPI
    schema (aka openapi.json or openapi.yaml) after compilation.
 -- mpi/pmix - Fix potential deadlock and races with het jobs, and fix potential
    memory and FDs leaks.
 -- Fix jobs with --gpus being rejected in some edge cases for partitions
    where not all nodes have the same amount of GPUs and CPUs configured.
 -- In an extra constraints expression in a job request, do not allow an empty
    string for a key or value.
 -- In an extra constraints expression in a job request, fix validation that
    requests are separated by boolean operators.
 -- Add TaskPluginParam=OOMKillStep to kill the step as a whole when one task
    OOMs.
 -- Fix scontrol show conf not showing all TaskPluginParam elements.
 -- slurmrestd - Add fields '.job.oom_kill_step' '.jobs[].oom_kill_step' to
    'POST /slurm/v0.0.42/job/submit' and 'POST /slurm/v0.0.42/job/allocate'.
 -- Improve performance for _will_run_test().
 -- Add SchedulerParameters=bf_topopt_enable option to enable experimental hook
    to control backfill.
 -- If a step fails to launch under certain conditions, set the step's state
    to NODE_FAIL.
 -- sched/backfill - Fix certain situations where a job would not get a
    planned time, which could lead to it being delayed by lower priority jobs.
 -- slurmrestd - Dump JSON "null" instead of "{}" (empty object) for
    non-required fields in objects to avoid client compatiblity issues for
    v0.0.42 version tagged endpoints.
 -- sacct,sacctmgr,scontrol,sdiag,sinfo,squeue,sshare - Dump "null" instead
    "{}" (empty object) for non-required fields in objects to avoid client
    compatiblity issues when run with --json or --yaml.

* Changes in Slurm 24.05.5
==========================
 -- Fix issue signaling cron jobs resulting in unintended requeues.
 -- Fix slurmctld memory leak in implementation of HealthCheckNodeState=CYCLE.
 -- job_container/tmpfs - Fix SLURM_CONF env variable not being properly set.
 -- sched/backfill - Fix job's time_limit being overwritten by time_min for job
    arrays in some situations.
 -- RoutePart - fix segfault from incorrect memory allocation when node doesn't
    exist in any partition.
 -- slurmctld - Fix crash when a job is evaluated for a reservation after
    removal of a dynamic node.
 -- gpu/nvml - Attempt loading libnvidia-ml.so.1 as a fallback for failure in
    loading libnvidia-ml.so.
 -- slurmrestd - Fix populating non-required object fields of objects as '{}' in
    JSON/YAML instead of 'null' causing compiled OpenAPI clients to reject
    the response to 'GET /slurm/v0.0.40/jobs' due to validation failure of
    '.jobs[].job_resources'.
 -- Fix sstat/sattach protocol errors for steps on higher version slurmd's
    (regressions since 20.11.0rc1 and 16.05.1rc1 respectively).
 -- slurmd - Avoid a crash when starting slurmd version 24.05 with
    SlurmdSpoolDir files that have been upgraded to a newer major version of
    Slurm. Log warnings instead.
 -- Fix race condition in stepmgr step completion handling.
 -- Fix slurmctld segfault with stepmgr and MpiParams when running a job array.
 -- Fix requeued jobs keeping their priority until the decay thread happens.

* Changes in Slurm 24.05.4
==========================
 -- Fix generic int sort functions.
 -- Fix user look up using possible unrealized uid in the dbd.
 -- Fix FreeBSD compile issue with tls/none plugin.
 -- slurmrestd - Fix regressions that allowed slurmrestd to be run as SlurmUser
    when SlurmUser was not root.
 -- mpi/pmix fix race conditions with het jobs at step start/end which could
    make srun to hang.
 -- Fix not showing some SelectTypeParameters in scontrol show config.
 -- Avoid assert when dumping removed certain fields in JSON/YAML.
 -- Improve how shards are scheduled with affinity in mind.
 -- Fix MaxJobsAccruePU not being respected when MaxJobsAccruePA is set
    in the same QOS.
 -- Prevent backfill from planning jobs that use overlapping resources for the
    same time slot if the job's time limit is less than bf_resolution.
 -- Fix memory leak when requesting typed gres and --[cpus|mem]-per-gpu.
 -- Prevent backfill from breaking out due to "system state changed" every 30
    seconds if reservations use REPLACE or REPLACE_DOWN flags.
 -- slurmrestd - Make sure that scheduler_unset parameter defaults to true even
    when the following flags are also set: show_duplicates, skip_steps,
    disable_truncate_usage_time, run_away_jobs, whole_hetjob,
    disable_whole_hetjob, disable_wait_for_result, usage_time_as_submit_time,
    show_batch_script, and or show_job_environment. Additionaly, always make
    sure show_duplicates and disable_truncate_usage_time default to true when
    the following flags are also set: scheduler_unset, scheduled_on_submit,
    scheduled_by_main, scheduled_by_backfill, and or job_started. This effects
    the following endpoints:
      'GET /slurmdb/v0.0.40/jobs'
      'GET /slurmdb/v0.0.41/jobs'
 -- Ignore --json and --yaml options for scontrol show config to prevent mixing
    output types.
 -- Fix not considering nodes in reservations with Maintenance or Overlap flags
    when creating new reservations with nodecnt or when they replace down nodes.
 -- Fix suspending/resuming steps running under a 23.02 slurmstepd process.
 -- Fix options like sprio --me and squeue --me for users with a uid greater
    than 2147483647.
 -- fatal() if BlockSizes=0. This value is invalid and would otherwise cause the
    slurmctld to crash.
 -- sacctmgr - Fix issue where clearing out a preemption list using
    preempt='' would cause the given qos to no longer be preempt-able until set
    again.
 -- Fix stepmgr creating job steps concurrently.
 -- data_parser/v0.0.40 - Avoid dumping "Infinity" for NO_VAL tagged "number"
    fields.
 -- data_parser/v0.0.41 - Avoid dumping "Infinity" for NO_VAL tagged "number"
    fields.
 -- slurmctld - Fix a potential leak while updating a reservation.
 -- slurmctld - Fix state save with reservation flags when a update fails.
 -- Fix reservation update issues with parameters Accounts and Users, when
    using +/- signs.
 -- slurmrestd - Don't dump warning on empty wckeys in:
      'GET /slurmdb/v0.0.40/config'
      'GET /slurmdb/v0.0.41/config'
 -- Fix slurmd possibly leaving zombie processes on start up in configless when
    the initial attempt to fetch the config fails.
 -- Fix crash when trying to drain a non-existing node (possibly deleted
    before).
 -- slurmctld - fix segfault when calculating limit decay for jobs with an
    invalid association.
 -- Fix IPMI energy gathering with multiple sensors.
 -- data_parser/v0.0.39 - Remove xassert requiring errors and warnings to have a
    source string.
 -- slurmrestd - Prevent potential segfault when there is an error parsing an
    array field which could lead to a double xfree. This applies to several
    endpoints in data_parser v0.0.39, v0.0.40 and v0.0.41.
 -- scancel - Fix a regression from 23.11.6 where using both the --ctld and
    --sibling options would cancel the federated job on all clusters instead of
    only the cluster(s) specified by --sibling.
 -- accounting_storage/mysql - Fix bug when removing an association
    specified with an empty partition.
 -- Fix setting multiple partition state restore on a job correctly.
 -- Fix difference in behavior when swapping partition order in job submission.
 -- Fix security issue in stepmgr that could permit an attacker to execute
    processes under other users' jobs. CVE-2024-48936.

* Changes in Slurm 24.05.3
==========================
 -- data_parser/v0.0.40 - Added field descriptions
 -- slurmrestd - Avoid creating new slurmdbd connection per request to
    '* /slurm/slurmctld/*/*' endpoints.
 -- Fix compilation issue with switch/hpe_slingshot plugin.
 -- Fix gres per task allocation with threads-per-core.
 -- data_parser/v0.0.41 - Added field descriptions
 -- slurmrestd - Change back generated OpenAPI schema for
    `DELETE /slurm/v0.0.40/jobs/` to RequestBody instead of using parameters
    for request. slurmrestd will continue accept endpoint requests via
    RequestBody or HTTP query.
 -- topology/tree - Fix issues with switch distance optimization.
 -- Fix potential segfault of secondary slurmctld when falling back to the
    primary when running with a JobComp plugin.
 -- Enable --json/--yaml=v0.0.39 options on client commands to dump data using
    data_parser/v0.0.39 instead or outputting nothing.
 -- switch/hpe_slingshot - Fix issue that could result in a 0 length state file.
 -- Fix unnecessary message protocol downgrade for unregistered nodes.
 -- Fix unnecessarily packing alias addrs when terminating jobs with a mix of
    non-cloud/dynamic nodes and powered down cloud/dynamic nodes.
 -- accounting_storage/mysql - Fix issue when deleting a qos that could remove
    too many commas from the qos and/or delta_qos fields of the assoc table.
 -- slurmctld - Fix memory leak when using RestrictedCoresPerGPU.
 -- Fix allowing access to reservations without MaxStartDelay set.
 -- Fix regression introduced in 24.05.0rc1 breaking srun --send-libs parsing.
 -- Fix slurmd vsize memory leak when using job submission/allocation commands
    that implicitly or explicitly use --get-user-env.
 -- slurmd - Fix node going into invalid state when using CPUSpecList and
    setting CPUs to the # of cores on a multithreaded node
 -- Fix reboot asap nodes being considered in backfill after a restart.
 -- Fix --clusters/-M queries for clusters outside of a federation when
    fed_display is configured.
 -- Fix scontrol allowing updating job with bad cpus-per-task value.
 -- sattach - Fix regression from 24.05.2 security fix leading to crash.
 -- mpi/pmix - Fix assertion when built under --enable-debug.

* Changes in Slurm 24.05.2
==========================
 -- Fix energy gathering rpc counter underflow in _rpc_acct_gather_energy when
    more than 10 threads try to get energy at the same time. This prevented
    the possibility to get energy from slurmd by any step until slurmd was
    restarted, so losing energy accounting metrics in the node.
 -- accounting_storage/mysql - Fix issue where new user with wckey did not
    have a default wckey sent to the slurmctld.
 -- slurmrestd - Prevent slurmrestd segfault when handling the following
    endpoints when none of the optional parameters are specified:
      'DELETE /slurm/v0.0.40/jobs'
      'DELETE /slurm/v0.0.41/jobs'
      'GET /slurm/v0.0.40/shares'
      'GET /slurm/v0.0.41/shares'
      'GET /slurmdb/v0.0.40/instance'
      'GET /slurmdb/v0.0.41/instance'
      'GET /slurmdb/v0.0.40/instances'
      'GET /slurmdb/v0.0.41/instances'
      'POST /slurm/v0.0.40/job/{job_id}'
      'POST /slurm/v0.0.41/job/{job_id}'
 -- Fix IPMI energy gathering when no IPMIPowerSensors are specified in
    acct_gather.conf. This situation resulted in an accounted energy of 0
    for job steps.
 -- Fix a minor memory leak in slurmctld when updating a job dependency.
 -- scontrol,squeue - Fix regression that caused incorrect values for
    multisocket nodes at '.jobs[].job_resources.nodes.allocation' for
    'scontrol show jobs --(json|yaml)' and 'squeue --(json|yaml)'.
 -- slurmrestd - Fix regression that caused incorrect values for
    multisocket nodes at '.jobs[].job_resources.nodes.allocation' to be dumped
    with endpoints:
      'GET /slurm/v0.0.41/job/{job_id}'
      'GET /slurm/v0.0.41/jobs'
 -- jobcomp/filetxt - Fix truncation of job record lines > 1024 characters.
 -- Fixed regression that prevented compilation on FreeBSD hosts.
 -- switch/hpe_slingshot - Drain node on failure to delete CXI services.
 -- Fix a performance regression from 23.11.0 in cpu frequency handling when no
    CpuFreqDef is defined.
 -- Fix one-task-per-sharing not working across multiple nodes.
 -- Fix inconsistent number of cpus when creating a reservation using the
    TRESPerNode option.
 -- data_parser/v0.0.40+ - Fix job state parsing which could break filtering.
 -- Prevent cpus-per-task to be modified in jobs where a -c value has been
    explicitly specified and the requested memory constraints implicitly
    increase the number of CPUs to allocate.
 -- slurmrestd - Fix regression where args '-s v0.0.39,dbv0.0.39' and
    '-d v0.0.39' would result in 'GET /openapi/v3' not registering as a valid
    possible query resulting in 404 errors.
 -- slurmrestd - Fix memory leak for dbv0.0.39 jobs query which occurred if the
    query parameters specified account, association, cluster, constraints,
    format, groups, job_name, partition, qos, reason, reservation, state, users,
    or wckey. This affects the following endpoints:
      'GET /slurmdb/v0.0.39/jobs'
 -- slurmrestd - In the case the slurmdbd does not respond to a persistent
    connection init message, prevent the closed fd from being used, and instead
    emit an error or warning depending on if the connection was required.
 -- Fix 24.05.0 regression that caused the slurmdbd not to send back an error
    message if there is an error initializing a persistent connection.
 -- Reduce latency of forwarded x11 packets.
 -- Add "curr_dependency" (representing the current dependency of the job)
    and "orig_dependency" (representing the original requested dependency of
    the job) fields to the job record in job_submit.lua (for job update) and
    jobcomp.lua.
 -- Fix potential segfault of slurmctld configured with
    SlurmctldParameters=enable_rpc_queue from happening on reconfigure.
 -- Fix potential segfault of slurmctld on its shutdown when rate limitting
    is enabled.
 -- slurmrestd - Fix missing job environment for SLURM_JOB_NAME,
    SLURM_OPEN_MODE, SLURM_JOB_DEPENDENCY, SLURM_PROFILE, SLURM_ACCTG_FREQ,
    SLURM_NETWORK and SLURM_CPU_FREQ_REQ to match sbatch.
 -- Add missing bash-completions dependency to slurm-smd-client debian package.
 -- Fix bash-completions installation in debian pacakges.
 -- Fix GRES environment variable indices being incorrect when only using a
    subset of all GPUs on a node and the --gres-flags=allow-task-sharing option
 -- Add missing mariadb/mysql client package dependency to debian package.
 -- Fail the debian package build early if mysql cannot be found.
 -- Prevent scontrol from segfaulting when requesting scontrol show reservation
    --json or --yaml if there is an error retrieving reservations from the
    slurmctld.
 -- switch/hpe_slingshot - Fix security issue around managing VNI access.
    CVE-2024-42511.
 -- switch/nvidia_imex - Fix security issue managing IMEX channel access.
    CVE-2024-42511.
 -- switch/nvidia_imex - Allow for compatibility with job_container/tmpfs.

* Changes in Slurm 24.05.1
==========================
 -- Fix slurmctld and slurmdbd potentially stopping instead of performing a
    logrotate when recieving SIGUSR2 when using auth/slurm.
 -- switch/hpe_slingshot - Fix slurmctld crash when upgrading from 23.02.
 -- Fix "Could not find group" errors from validate_group() when using
    AllowGroups with large /etc/group files.
 -- Prevent an assertion in debugging builds when triggering log rotation
    in a backup slurmctld.
 -- Add AccountingStoreFlags=no_stdio which allows to not record the stdio
    paths of the job when set.
 -- slurmrestd - Prevent a slurmrestd segfault when parsing the crontab field,
    which was never usable. Now it explicitly ignores the value and emits a
    warning if it is used for the following endpoints:
      'POST /slurm/v0.0.39/job/{job_id}'
      'POST /slurm/v0.0.39/job/submit'
      'POST /slurm/v0.0.40/job/{job_id}'
      'POST /slurm/v0.0.40/job/submit'
      'POST /slurm/v0.0.41/job/{job_id}'
      'POST /slurm/v0.0.41/job/submit'
      'POST /slurm/v0.0.41/job/allocate'
 -- mpi/pmi2 - Fix communication issue leading to task launch failure with
    "invalid kvs seq from node".
 -- Fix getting user environment when using sbatch with "--get-user-env" or
    "--export=" when there is a user profile script that reads /proc.
 -- Prevent slurmd from crashing if acct_gather_energy/gpu is configured but
    GresTypes is not configured.
 -- Do not log the following errors when AcctGatherEnergyType plugins are used
    but a node does not have or cannot find sensors:
    "error: _get_joules_task: can't get info from slurmd"
    "error: slurm_get_node_energy: Zero Bytes were transmitted or received"
    However, the following error will continue to be logged:
    "error: Can't get energy data. No power sensors are available. Try later"
 -- sbatch, srun - Set SLURM_NETWORK environment variable if --network is set.
 -- Fix cloud nodes not being able to forward to nodes that restarted with new
    IP addresses.
 -- Fix cwd not being set correctly when running a SPANK plugin with a
    spank_user_init() hook and the new "contain_spank" option set.
 -- slurmctld - Avoid deadlock during shutdown when auth/slurm is active.
 -- Fix segfault in slurmctld with topology/block.
 -- sacct - Fix printing of job group for job steps.
 -- scrun - Log when an invalid environment variable causes the job submission
    to be rejected.
 -- accounting_storage/mysql - Fix problem where listing or modifying an
    association when specifying a qos list could hang or take a very long time.
 -- gpu/nvml - Fix gpuutil/gpumem only tracking last GPU in step. Now,
    gpuutil/gpumem will record sums of all GPUS in the step.
 -- Fix error in scrontab jobs when using slurm.conf:PropagatePrioProcess=1.
 -- Fix slurmctld crash on a batch job submission with "--nodes 0,...".
 -- Fix dynamic IP address fanout forwarding when using auth/slurm.
 -- Restrict listening sockets in the mpi/pmix plugin and sattach to the
    SrunPortRange.
 -- slurmrestd - Limit mime types returned from query to 'GET /openapi/v3' to
    only return one mime type per serializer plugin to fix issues with OpenAPI
    client generators that are unable to handle multiple mime type aliases.
 -- Fix many commands possibly reporting an "Unexpected Message Received" when
    in reality the connection timed out.
 -- Prevent slurmctld from starting if there is not a json serializer present
    and the extra_constraints feature is enabled.
 -- Fix heterogeneous job components not being signaled with scancel --ctld and
    'DELETE slurm/v0.0.40/jobs' if the job ids are not explicitly given,
    the heterogeneous job components match the given filters, and the
    heterogeneous job leader does not match the given filters.
 -- Fix regression from 23.02 impeding job licenses from being cleared.
 -- Move error to log_flag which made _get_joules_task error to be logged to the
    user when too many rpcs were queued in slurmd for gathering energy.
 -- For scancel --ctld and the associated rest api endpoints:
      'DELETE /slurm/v0.0.40/jobs'
      'DELETE /slurm/v0.0.41/jobs'
    Fix canceling the final array task in a job array when the task is pending
    and all array tasks have been split into separate job records. Previously
    this task was not canceled.
 -- Fix power_save operation after recovering from a failed reconfigure.
 -- slurmctld - Skip removing the pidfile when running under systemd. In that
    situation it is never created in the first place.
 -- Fix issue where altering the flags on a Slurm account (UsersAreCoords)
    several limits on the account's association would be set to 0 in
    Slurm's internal cache.
 -- Fix memory leak in the controller when relaying stepmgr step accounting to
    the dbd.
 -- Fix segfault when submitting stepmgr jobs within an existing allocation.
 -- Added "disable_slurm_hydra_bootstrap" as a possible MpiParams parameter in
    slurm.conf. Using this will disable env variable injection to allocations
    for the following variables: I_MPI_HYDRA_BOOTSTRAP,
    I_MPI_HYDRA_BOOTSTRAP_EXEC_EXTRA_ARGS, HYDRA_BOOTSTRAP,
    HYDRA_LAUNCHER_EXTRA_ARGS.
 -- scrun - Delay shutdown until after start requested. This caused scrun
    to never start or shutdown and hung forever when using --tty.
 -- Fix backup slurmctld potentially not running the agent when taking over as
    the primary controller.
 -- Fix primary controller not running the agent when a reconfigure of the
    slurmctld fails.
 -- slurmd - fix premature timeout waiting for REQUEST_LAUNCH_PROLOG with large
    array jobs causing node to drain.
 -- jobcomp/{elasticsearch,kafka} - Avoid sending fields with invalid date/time.
 -- jobcomp/elasticsearch - Fix slurmctld memory leak from curl usage
 -- acct_gather_profile/influxdb - Fix slurmstepd memory leak from curl usage
 -- Fix 24.05.0 regression not deleting job hash dirs after MinJobAge.
 -- Fix filtering arguments being ignored when using squeue --json.
 -- switch/nvidia_imex - Move setup call after spank_init() to allow namespace
    manipulation within the SPANK plugin.
 -- switch/nvidia_imex - Skip plugin operation if nvidia-caps-imex-channels
    device is not present rather than preventing slurmd from starting.
 -- switch/nvidia_imex - Skip plugin operation if job_container/tmpfs
    is configured due to incompatibility.
 -- switch/nvidia_imex - Remove any pre-existing channels when slurmd starts.
 -- rpc_queue - Add support for an optional rpc_queue.yaml configuration file.
 -- slurmrestd - Add new +prefer_refs flag to data_parser/v0.0.41 plugin. This
    flag will avoid inlining single referenced schemas in the OpenAPI schema.

* Changes in Slurm 24.05.0
==========================
 -- Fix regresssion in rc1 causing power_save thread to spin continuously.
 -- Improve ctld_relay shutdown sequence.
 -- Fixed 'make distclean' behavior for contribs/perlapi.
 -- slurmrestd - Avoid ignoring numerical only endpoints during startup with
    older libjson-c due to type parsing mismatching.
 -- Reject non-stepmgr job allocations requesting --resv-ports from the ctld.
 -- slurmrestd - Add fields '.job.resv_ports' '.jobs[].resv_ports' to
    'POST /slurm/v0.0.41/job/submit' and 'POST /slurm/v0.0.41/job/allocate'.
 -- slurmstepd - Fix crash when cleaning up on shutdown with
    --enable-memory-leak-debug.
 -- Fix segfault in switch/hpe_slingshot plugin due to initialization squence.
 -- scrun - Fix regression in rc1 that caused scrun to crash.
 -- Prevent unnecessary log statement when free'ing ports.
 -- Fix regression in rc1 causing communication problems when sending large
    responses from slurmctld.
 -- sreport - fix parsing of 'format=Planned' to prevent it from being
    misinterpreted as 'PlannedDown'. 'PlannedDown' is now also known as
    'PLNDDown' to match what is printed as the column title.
 -- topology/block - Always return an error when the segment size does not
    match the system or job specification.
 -- Add previously missing timers for Prolog and Epilog scripts when RunInJob is
    set.
 -- Show an error when PrologFlags RunInJob and Serial are used together.
    PrologFlags=Serial is not compatible with how RunInJob operates.
 -- Fix memory leak on shutdown when using --enable-memory-leak-debug and
    freeing cons_tres node usage.
 -- Rename src/stepmgr/gres_ctld.[ch] to src/stepmgr/gres_stepmgr.[ch].
 -- Fix various cosmetic issues with states in sinfo.
 -- slurmrestd - Avoid crash due to associations query.
 -- Calculate a job's min_cpus with consideration to --cpus-per-gpu.
 -- Fix scancel request when specifying individual array tasks in combination
    with filtering options (in both regular and --interactive mode).
 -- Enable MaxStepCount in stepmgr.
 -- Enable AccountingStorageEnforce=nojobs,nosteps in stepmgr.
 -- Add AccountingStorageParameters=max_step_records to limit how many steps
    are recorded in the database for each job -- excluding batch, extern, and
    interactive steps.
 -- switch/hpe_slingshot - allocate VNIs on the controller for stepmgr jobs and
    pass to the stepmgr for steps to use.
 -- switch/hpe_slingshot - fix assertion when restarting the controller.
 -- switch/hpe_slingshot - fix calcuation of free vnis when restarting the
    controller with running jobs.
 -- Improve default job reserve MPI port allocations that use overcommit or do
    not specify a task count for stepmgr enabled jobs.
 -- Fix a regression in rc1 resulting in scrun occasionally deadlocking when
    the --enable-memory-leak-debug configure option was used.
 -- topology/default - Prevent segfault in slurmctld on 'scontrol show topo'.
 -- slurmrestd - Avoid creating or requring a connection to slurmdbd for the
    'GET /openapi/v3' endpoint, fixing a regression in rc1.
 -- scrun - Fix setting and getting environment via SPANK plugins.
 -- sview - Fix nodes tab if a node has RestrictedCoresPerGPU configured.
 -- slurmrestd - Add --generate-openapi-spec argument.
 -- sview - Prevent segfault when retrieving slurmdbd configuration.
 -- Avoid canceling rejected heterogeneous jobs without job write lock.
 -- Fix slurmctld crash when reconfiguring with a PrologSlurmctld is running.
 -- Fix slurmctld crash after a job has been resized.

* Changes in Slurm 24.05.0rc1
=============================
 -- Make slurmstepd retry REQUEST_COMPLETE_BATCH_SCRIPT indefinitely.
 -- Always load serializer/json when using any data_parser plugins.
 -- slurmrestd - Reject single http query with multiple path requests.
 -- slurmrestd - Add time/planned field to slurmdb/v0.0.41/job/{job_id}.
 -- Improve Power Save's Resume/Suspend rate limiting.
 -- slurmrestd - Improve reliablity under high memory pressure by closing
    connections instead of forcing a fatal exit due to lack of memory.
 -- data_parser/v0.0.41 - Avoid aborting when invoking a not implemented
    parser.
 -- data_parser/v0.0.41 - Fix how nice values are parsed for job submissions.
 -- data_parser/v0.0.41 - Fix regression where parsing error did not result in
    invalid request being rejected.
 -- Print an error message in 'scontrol reboot' when a node reboot request
    is ignored due to the current node state.
 -- squeue - Add "--notme" option.
 -- data_parser/v0.0.41 - change "association.id" to just include the int "id"
    rather than include redundant assoc info (cluster, user, partition, account)
    that's already included in the "association" object.
 -- data_parser/v0.0.41 - Improve parsing of numeric user id.
 -- data_parser/v0.0.41 - Improve parsing of numeric group id.
 -- slurmrestd - Generated openapi.json will only populate "deprecated" fields
    if true. False is the default value and does not require being present.
 -- slurmrestd - Populate missing "deprecated" fields in  openapi.json.
 -- slurmrestd - Corrected deprecated fields in generated openapi.json not
    getting populated.
 -- slurmrestd - Generated openapi.json will have reduced number of "$ref"
    fields. Where there was only 1 reference for the schema, the "$ref" schema
    will be directly populated in place.
 -- slurmrestd - Rename *_NO_VAL schemas in generated openapi.json to have
    _struct and to pass along correct integer sizing when possible.
 -- slurmrestd - Correct description fields in generated openapi.json where
    descriptions were not present or too generic.
 -- Remove support for Cray XC ("cray_aries") systems.
 -- Prevent backup slurmctld from taking over if the heartbeat file is
    still being updated.  Failure to ping may have been due to clock skew.
 -- serializer/yaml - Converted to new parsing interface in libyaml to improve
    parsing compatibility.
 -- Removed TopologyPlugin tree and dragonfly support from select/linear.
    If those topology plugins are desired please switch to select/cons_tres.
 -- Changed slurmrestd.service to only listen on TCP socket by default.
    Environments with existing drop-in units for the service may need
    further adjustments to work after upgrading.
 -- Fix how gres are allocated per job when using multiple gres types.
 -- Log an error when UnkillableStepTimeout is less than five times
    MessageTimeout.
 -- Avoid step gres dealloc count underflow errors after reconfiguring or
    restarting slurmctld.
 -- Fix controller not validating periodic dynamic future registrations.
 -- Fix dynamic future nodes registering as new node when specifying -N<name>.
 -- Fix sbcast (or srun --bcast) --send-libs when it is used multiple times in
    the same job. Previously, subsequent calls to sbcast --send-libs would
    overwrite the libraries for the first executable.
 -- Add support for sbcast --preserve when job_container/tmpfs configured
    (previously documented as unsupported).
 -- Changed the default value for UnkillableStepTimeout to 60 seconds or five
    times the value of MessageTimeout, whichever is greater.
 -- slurmctld - Check if --deadline has been reached and not satisfied on held
    jobs, otherwise they could remain without automatic cancellation until after
    the job is released.
 -- scrun/slurmrestd/sackd - Avoid closing all listening sockets when
    interrupted from signal such as SIGALRM. Normal shutdown remains unaffected.
 -- Remove systemd AbandonScope() logic for scope units as it is not needed.
 -- Fix GresUsed output from `scontrol show nodes --details` showing  GRES types
    that are not configured on a node.
 -- slurmrestd - Fatal during start up when loading content plugin fails.
 -- slurmrestd - Reduce complexity in URL path matching.
 -- data_parser/v0.0.41 - Emit a warning instead of an error if a disabled
    parser is invoked.
 -- Federation - allow client command operation when slurmdbd is unavailable.
 -- Enforce mutual exclusivity of --systemd and -D when launching daemons
 -- slurmctld - remove -d option
 -- burst_buffer/lua - Trigger a burst_buffer event for strigger when the
    real_size function fails.
 -- burst_buffer/lua - Added two new hooks: slurm_bb_test_data_in and
    slurm_bb_test_data_out. The syntax and use of the new hooks are documented
    in etc/burst_buffer.lua.example. These are required to exist. slurmctld now
    checks on startup if the burst_buffer.lua script loads and contains all
    required hooks; slurmctld will exit with a fatal error if this is not
    successful. Added PollInterval to burst_buffer.conf. Removed the arbitrary
    limit of 512 copies of the script running simultaneously.
 -- sackd/slurmrestd/scrun - Avoid using empty string while logging unix socket
    connections from a listening connection.
 -- Fix 20 character username limit from 'sacctmgr show events'
 -- Log an error if UsePss or NoShare are configured with a plugin other than
    jobacct_gather/linux. In such case these parameters are ignored.
 -- helpers.conf - Added Flags=rebootless parameter allowing feature changes
    without rebooting compute nodes.
 -- scontrol - Add new subcommand 'power' for node power control.
 -- data_parser/v0.0.41 - Implement parser of distribution for
    /slurm/v0.0.41/job/submit.
 -- data_parser/v0.0.41 - Change distribution_plane_size field type from UINT16
    to UINT16_NO_VAL for /slurm/v0.0.41/job/submit.
 -- topology/block - Replaced the BlockLevels with BlockSizes in topology.conf.
 -- Fix slurmd cgroup/v2 startup race with systemd and cgroupfs.
 -- Add SystemdTimeout= parameter in cgroup.conf.
 -- Add QOS limit MaxTRESRunMinsPerAccount.
 -- Add QOS limit MaxTRESRunMinsPerUser.
 -- jobcomp/{elasticsearch,kafka} - Send priority alongside the rest of fields.
 -- Add contain_spank option to SlurmdParameters. When set, spank_user_init(),
    spank_task_post_fork(), and spank_task_exit() will execute within the
    job_container/tmpfs plugin namespace.
 -- Update job reason appropriately when bf_licenses is used.
 -- slurmrestd - Tagged `script` field as deprecated in
    'POST /slurm/v0.0.41/job/submit' in anticipation of removal in future
    OpenAPI plugin versions.
 -- Fix salloc/sbatch/srun crashing with certain invalid nodelist requests.
 -- Optimize jobacctgather by not iterating every time over pids that have
    already finished.
 -- Remote SPANK callbacks invoked by srun get called once instead of twice.
 -- auth/slurm - Support multiple keys through slurm.jwks.
 -- sched/backfill - Fix issue with bf_continue where a job partition request
    could be incorrectly reset back to a partition that is no longer specified
    after a job partition update processed during a lock yield time window.
 -- slurmrestd - Explicitly set process as dumpable (and ptrace-able) at
    startup for systems where suid_dumpable is not 2.
 -- slurmrestd - Tag all /slurm/v0.0.39/ and /slurmdb/v0.0.39/ endpoints as
    deprecated in anticipation of removal in Slurm 24.11.
 -- Add ELIGIBLE environment variable to jobcomp/script plugin.
 -- slurmrestd,sackd,scrun - Improve outgoing data efficiency using
    non-contiguous write support in kernel.
 -- sackd - Add support for SACKD_DEBUG, SACKD_STDERR_DEBUG, and
    SACKD_SYSLOG_DEBUG environment variables to control logging.
 -- mpi/pmi2 - PMI_process_mapping values have been adapted for executions
    where arbitrary distribution/SLURM_HOSTFILE is used. Now it can take into
    account multiple instances of the same node inside SLURM_HOSTFILE.
 -- Avoid wrong limit oriented (i.e. QosMaxGresPer*) job pending reason for jobs
    actually pending on Resources when GPUs are requested per job.
 -- Fix --ntasks-per-node not being treated as a max count of tasks per node
    when used in combination with --ntasks. --ntasks option will now take
    precedence as it is documented.
 -- Accept X11 cookies that do not have a display number associated with it.
 -- Always use the QOS name for SLURM_JOB_QOS environment variables.
    Previously the batch environment would use the description field,
    which was usually equivalent to the name.
 -- slurmrestd - Add "CRON_JOBS" as possible flag value to the following:
      'DELETE /slurm/v0.0.40/jobs' flags field.
      'DELETE /slurm/v0.0.41/jobs' flags field.
      'DELETE /slurm/v0.0.40/job/{job_id}?flags=' flags query parameter.
      'DELETE /slurm/v0.0.41/job/{job_id}?flags=' flags query parameter.
 -- Fix ScronParameters=explicit_scancel when using the rest api DELETE jobs
    query: if the CRON_JOBS flag is not used then cron jobs will not be
    cancelled. The NO_CRON_JOBS flag is ignored in v0.0.40 and removed in
    v0.0.41.
 -- Pass multi-partition job priorities to job for squeue to display.
 -- cgroup/v2 - Require dbus-1 version >= 1.11.16.
 -- Add RestrictedCoresPerGPU configuration option.
 -- Fix how ntasks is inferred from --cpus-per-task when using --nodes,
    --threads-per-core, or --hint=nomultithread.
 -- For PreemptMode=CANCEL and PreemptMode=REQUEUE assume that job signalled
    for GraceTime was preempted.
 -- slurmd - Retry fetching configs indefinitely during startup.
 -- Fix SPANK options not bing sent to remote context when --export was used.
 -- slurmrestd - Attempt to automatically convert enumerated string arrays with
    incoming non-string values into strings. Add warning when incoming value for
    enumerated string arrays can not be converted to string and silently ignore
    instead of rejecting entire request.
 -- slurmrestd - Require `user` and `association_condition` fields to be
    populated for requests to 'POST /slurmdb/v0.0.41/users_association'.
 -- Allow NodeSet names to be used in SuspendExcNodes.
 -- SuspendExcNodes=<nodes>:N now counts allocated nodes in N. The first N
    powered up nodes in <nodes> are protected from being suspended.
 -- Add SlurmctldParameters=max_powered_nodes=N, which prevents powering up
    nodes after the max is reached.
 -- Store output, error and input paths in the database and make them available
    in accounting tools.
 -- slurmrestd - Add 'POST /slurm/v0.0.41/job/allocate' endpoint.
 -- Fix issues related to the extern step getting killed before other steps.
    This includes the job_containter/tmpfs plugin not cleaning up.
 -- Add USER_DELETE reservation flag to allow users with access to a reservation
    to delete it.
 -- Add CgroupPlugin=disabled to disable any interaction with Cgroups.
 -- slurmrestd - Add "STEPMGR_ENABLED" as possible flag value to the following:
      'GET /slurm/v0.0.41/jobs' flags field.
      'GET /slurm/v0.0.41/job/{job_id}' flags query parameter.
 -- scontrol,squeue - Added possible flags "STEPMGR_ENABLED" to '.jobs[].flags' for
    'scontrol show jobs --{json|yaml}' and 'squeue --{json|yaml}' responses.
 -- Add SlurmctldParameters=enable_stepmgr to enable step management through
    the slurmstepd instead of the controller.
 -- Avoid slurmstepd infinite loop waiting for tasks termination.
 -- Fix logging of JSON/YAML values in some messages where nothing would be
    printed as the value instead of the actual JSONified version of the parsed
    string.
 -- slurmrestd,sackd,scrun - Improve logic around handling kernel provided
    buffer size of incoming data in files/sockets/pipes to avoid crashes.
 -- Add --segment to job allocation to be used in topology/block.
 -- Add --exclusive=topo for use with topology/block.
 -- Add ExclusiveTopo to a partition definition in slurm.conf.
 -- Add new 'BLOCKED' state to a node.
 -- Account coordinators may not increase association job limits above
    parent ones
 -- Account coordinators can now suspend/resume jobs owned by member users.
 -- Add DisableCoordDBD slurmdbd configuration parameter to disable the
    coordinator status in all slurmdbd interactions.
 -- slurmrestd - Added possible flags "WithAssociations" and "WithCoordinators"
    to `.accounts[].flags` for "GET /slurmdb/v0.0.41/accounts/" and
    "POST /slurmdb/v0.0.41/accounts/" endpoints.
 -- sacctmgr - Added possible flags "WithAssociations" and "WithCoordinators"
    to `.accounts[].flags` for `sacctmgr show accounts --{json|yaml}` response.
 -- slurmrestd - Rename URL query parameter "with_assocs" to "WithAssociations"
    for "GET /slurmdb/v0.0.41/accounts?WithAssociations".
 -- slurmrestd - Rename URL query parameter "with_coords" to "WithCoordinators"
    for "GET /slurmdb/v0.0.41/accounts?WithCoordinators".
 -- slurmrestd - Rename URL query parameter "with_deleted" to "deleted"
    for "GET /slurmdb/v0.0.41/accounts?deleted".
 -- slurmrestd - Added possible flags "RemoveUsersAreCoords" and
    "UsersAreCoords" to `.accounts[].flags` for "GET /slurmdb/v0.0.41/accounts/"
    and "POST /slurmdb/v0.0.41/accounts/" endpoints.
 -- sacctmgr - Added possible flags "RemoveUsersAreCoords" and "UsersAreCoords"
    to `.accounts[].flags` for `sacctmgr show accounts --{json|yaml}` response.
 -- slurmrestd - Add URL query parameter "UsersAreCoords" and
    "RemoveUsersAreCoords" for
    "GET /slurmdb/v0.0.41/accounts?UsersAreCoords&RemoveUsersAreCoords".
 -- sacctmgr - Add new possible new flags "NoUpdate" and "Exact" to
    '.associations[].flags' response from 'sacctmgr show assocs --{json|yaml}'.
 -- slurmrestd - Added possible flags "NoUpdate" and "Exact" to
    `.associations[].flags` for "GET /slurmdb/v0.0.41/associations/"
    and "POST /slurmdb/v0.0.41/associations/" endpoints.
 -- Fix false success of REQUEST_FORWARD_DATA RPC that made pmix to get out
    of sync during initialization.
 -- slurmrestd - Allow startup when slurmdbd is not configured and avoid loading
    slurmdbd specific plugins.
 -- Added PrologFlags=RunInJob to make prolog and epilog run inside the job
    extern step to include it in the job's cgroup.
 -- Return '*' for the password field for nss_slurm instead of "x".
 -- slurmrestd - Add "topo" as possible value to the following:
      'GET /slurm/v0.0.41/jobs' in '.jobs[].shared' field
      'GET /slurm/v0.0.41/job/{job_id}' in '.jobs[].shared' field
      'POST /slurm/v0.0.41/job/submit' in '.job.shared' and '.jobs[].shared'
      'POST /slurm/v0.0.41/job/allocate' in '.job.shared' and '.jobs[].shared'
 -- sacctmgr - Added possible flags "NoUsersAreCoords" and "UsersAreCoords"
    to `.accounts[].flags` for `sacctmgr show accounts --{json|yaml}` response.
 -- sacct - Add "topo" as possible value to output of 'sacct --{json|yaml}' to
    '.jobs[].shared' field.
 -- squeue - Add "topo" as possible value to output of 'squeue --{json|yaml}' to
    '.jobs[].shared' field.
 -- scontrol - Add "topo" as possible value to output of
    'scontrol show jobs --{json|yaml}' to '.jobs[].shared' field.
 -- slurmrestd - Add "topo" as possible value to the following:
      'GET /slurm/v0.0.41/jobs' in '.jobs[].exclusive' field
      'GET /slurm/v0.0.41/job/{job_id}' in '.jobs[].exclusive' field
      'POST /slurm/v0.0.41/job/submit' in '.job.exclusive' and
        '.jobs[].exclusive'
      'POST /slurm/v0.0.41/job/allocate' in '.job.exclusive' and
        '.jobs[].exclusive'
 -- sacctmgr - Added possible flags "RemoveUsersAreCoords" and "UsersAreCoords"
    to `.accounts[].flags` for `sacctmgr show accounts --{json|yaml}` response.
 -- sacct - Add "topo" as possible value to output of 'sacct --{json|yaml}' to
    '.jobs[].exclusive' field.
 -- squeue - Add "topo" as possible value to output of 'squeue --{json|yaml}' to
    '.jobs[].exclusive' field.
 -- scontrol - Add "topo" as possible value to output of
    'scontrol show jobs --{json|yaml}' to '.jobs[].exclusive' field.
 -- slurmrestd - Add fields '.job.segment_size' and '.jobs[].segment_size' to
    'POST /slurm/v0.0.41/job/submit' and 'POST /slurm/v0.0.41/job/allocate'.
 -- sacctmgr - Added possible flags "NoUsersAreCoords" and "UsersAreCoords"
    to `.associations[].flags` for `sacctmgr show assocs --{json|yaml}`
    response.
 -- slurmrestd - Added possible flags "NoUsersAreCoords" and "UsersAreCoords" to
    `.associations[].flags` for "GET /slurmdb/v0.0.41/associations/"
    and "POST /slurmdb/v0.0.41/associations/" endpoints.
 -- Add ability to reserve MPI ports at the job level for stepmgr jobs and
    subdivide them at the step level.
 -- slurmrestd - Fix possible memory leak from failed job submissions to
    'POST /slurm/v0.0.{39,40,41}/job/submit'.
 -- slurmrestd - Fix possible memory leak from failed job allocation requests to
    'POST /slurm/v0.0.{39,40,41}/job/allocate'.

* Changes in Slurm 23.11.11
===========================

* Changes in Slurm 23.11.10
===========================
 -- switch/hpe_slingshot - Fix issue that could result in a 0 length state file.
 -- Fix unnecessary message protocol downgrade for unregistered nodes.
 -- Fix unnecessarily packing alias addrs when terminating jobs with a mix of
    non-cloud/dynamic nodes and powered down cloud/dynamic nodes.
 -- Fix allowing access to reservations without MaxStartDelay set.
 -- Fix scontrol allowing updating job with bad cpus-per-task value.
 -- sattach - Fix regression from 23.11.9 security fix leading to crash.

* Changes in Slurm 23.11.9
==========================
 -- Fix many commands possibly reporting an "Unexpected Message Received" when
    in reality the connection timed out.
 -- Fix heterogeneous job components not being signaled with scancel --ctld and
    'DELETE slurm/v0.0.40/jobs' if the job ids are not explicitly given,
    the heterogeneous job components match the given filters, and the
    heterogeneous job leader does not match the given filters.
 -- Fix regression from 23.02 impeding job licenses from being cleared.
 -- Move error to log_flag which made _get_joules_task error to be logged to the
    user when too many rpcs were queued in slurmd for gathering energy.
 -- slurmrestd - Prevent a slurmrestd segfault when modifying an association
    without specifying max TRES limits in the request if those TRES
    limits are currently defined in the association. This affects the following
    fields of endpoint 'POST /slurmdb/v0.0.38/associations/':
      'associations/max/tres/per/job'
      'associations/max/tres/per/node'
      'associations/max/tres/total'
      'associations/max/tres/minutes/per/job'
      'associations/max/tres/minutes/total'
 -- Fix power_save operation after recovering from a failed reconfigure.
 -- scrun - Delay shutdown until after start requested. This caused scrun
    to never start or shutdown and hung forever when using --tty.
 -- Fix backup slurmctld potentially not running the agent when taking over as
    the primary controller.
 -- Fix primary controller not running the agent when a reconfigure of the
    slurmctld fails.
 -- jobcomp/{elasticsearch,kafka} - Avoid sending fields with invalid date/time.
 -- Fix energy gathering rpc counter underflow in _rpc_acct_gather_energy when
    more than 10 threads try to get energy at the same time. This prevented
    the possibility to get energy from slurmd by any step until slurmd was
    restarted, so losing energy accounting metrics in the node.
 -- slurmrestd - Fix memory leak for dbv0.0.39 jobs query which occurred if the
    query parameters specified account, association, cluster, constraints,
    format, groups, job_name, partition, qos, reason, reservation, state, users,
    or wckey. This affects the following endpoints:
      'GET /slurmdb/v0.0.39/jobs'
 -- switch/hpe_slingshot - Fix security issue around managing VNI access.
    CVE-2024-42511.

* Changes in Slurm 23.11.8
==========================
 -- Fix slurmctld crash when reconfiguring with a PrologSlurmctld is running.
 -- Fix slurmctld crash after a job has been resized.
 -- Fix slurmctld and slurmdbd potentially stopping instead of performing a
    logrotate when recieving SIGUSR2 when using auth/slurm.
 -- Fix not having a disabled value for keepalive CommunicationParameters in
    slurm.conf when these parameters are not set. This can log an error when
    setting a socket, for example during slurmdbd registration with ctld.
 -- switch/hpe_slingshot - Fix slurmctld crash when upgrading from 23.02.
 -- Fix "Could not find group" errors from validate_group() when using
    AllowGroups with large /etc/group files.
 -- slurmrestd - Prevent a slurmrestd segfault when parsing the crontab field,
    which was never usable. Now it explicitly ignores the value and emits a
    warning if it is used for the following endpoints:
      'POST /slurm/v0.0.39/job/{job_id}'
      'POST /slurm/v0.0.39/job/submit'
      'POST /slurm/v0.0.40/job/{job_id}'
      'POST /slurm/v0.0.40/job/submit'
 -- Fix getting user environment when using sbatch with "--get-user-env" or
    "--export=" when there is a user profile script that reads /proc.
 -- Prevent slurmd from crashing if acct_gather_energy/gpu is configured but
    GresTypes is not configured.
 -- Do not log the following errors when AcctGatherEnergyType plugins are used
    but a node does not have or cannot find sensors:
    "error: _get_joules_task: can't get info from slurmd"
    "error: slurm_get_node_energy: Zero Bytes were transmitted or received"
    However, the following error will continue to be logged:
    "error: Can't get energy data. No power sensors are available. Try later"
 -- Fix cloud nodes not being able to forward to nodes that restarted with new
    IP addresses.
 -- sacct - Fix printing of job group for job steps.
 -- Fix error in scrontab jobs when using slurm.conf:PropagatePrioProcess=1.
 -- Fix slurmctld crash on a batch job submission with "--nodes 0,...".
 -- Fix dynamic IP address fanout forwarding when using auth/slurm.

* Changes in Slurm 23.11.7
==========================
 -- slurmrestd - Correct OpenAPI specification for
    'GET /slurm/v0.0.40/jobs/state' having response as null.
 -- Allow running jobs on overlapping partitions if jobs don't specify -s.
 -- Fix segfault when requesting a shared gres along with an exclusive
    allocation.
 -- Fix regression in 23.02 where afternotok and afterok dependencies were
    rejected for federated jobs not running on the origin cluster of the
    submitting job.
 -- slurmctld - Disable job table locking while job state cache is active when
    replying to `squeue --only-job-state` or `GET /slurm/v0.0.40/jobs/state`.
 -- Fix sanity check when setting tres-per-task on the job allocation as well as
    the step.
 -- slurmrestd - Fix compatiblity with auth/slurm.
 -- Fix issue where TRESRunMins gets off correct value if using
    QOS UsageFactor != 1.
 -- slurmrestd - Require `user` and `association_condition` fields to be
    populated for requests to 'POST /slurmdb/v0.0.40/users_association'.
 -- Avoid a slurmctld crash with extra_constraints enabled when a job requests
    certain invalid --extra values.
 -- `scancel --ctld` and `DELETE /slurm/v0.0/40/jobs` - Fix support for job
    array expressions (e.g. 1_[3-5]). Also fix signaling a single pending array
    task (e.g. 1_10), which previously signaled the whole array job instead.
 -- Fix a possible slurmctld segfault when at some point we failed to create an
    external launcher step.
 -- Allow the slurmctld to open a connection to the slurmdbd if the first
    attempt fails due to a protocol error.
 -- mpi/cray_shasta - Fix launch for non-het-steps within a hetjob.
 -- sacct - Fix "gpuutil" TRES usage output being incorrect when using --units.
 -- Fix a rare deadlock on slurmctld shutdown or reconfigure.
 -- Fix issue that only left one thread on each core available when "CPUs=" is
    configured to total thread count on multi-threaded hardware and no other
    topology info ("Sockets=", "CoresPerSocket", etc.) is configured.
 -- Fix the external launcher step not being allocated a VNI when requested.
 -- jobcomp/kafka - Fix payload length when producing and sending a message.
 -- scrun - Avoid a crash if RunTimeDelete is called before the container
    finishes.
 -- Save the slurmd's cred_state while reconfiguring to prevent the loss job
    credentials.

* Changes in Slurm 23.11.6
==========================
 -- Avoid limiting sockets per node to one when using gres enforce-binding.
 -- slurmrestd - Avoid permission denied errors when attempting to listen on
    the same port multiple times.
 -- Fix GRES reservations where the GRES has no topology
    (no cores= in gres.conf).
 -- Ensure that thread_id_rpc is gone before priority_g_fini().
 -- Fix scontrol reboot timeout removing drain state from nodes.
 -- squeue - Print header on empty reponse to `--only-job-state`.
 -- Fix slurmrestd not ending job properly when xauth is not present and a x11
    job is sent.
 -- Add experimental job state caching with
    SchedulerParameters=enable_job_state_cache to speed up querying job states
    with squeue --only-job-state.
 -- slurmrestd - Correct dumping of invalid ArrayJobIds returned from
    'GET /slurm/v0.0.40/jobs/state'.
 -- squeue - Correct dumping of invalid ArrayJobIds returned from
    `squeue --only-job-state --{json|yaml}`.
 -- If scancel --ctld is not used with --interactive, --sibling, or specific
    step ids, then this option issues a single request to the slurmctld to
    signal all jobs matching the specified filters. This greatly improves
    the performance of slurmctld and scancel. The updated --ctld option also
    fixes issues with the --partition or --reservation scancel options for jobs
    that requested multiple partitions or reservations.
 -- slurmrestd - Give EINVAL error when failing to parse signal name to numeric
    signal.
 -- slurmrestd - Allow ContentBody for all methods per RFC7230 even if ignored.
 -- slurmrestd - Add 'DELETE /slurm/v0.0.40/jobs' endpoint to allow bulk job
    signaling via slurmctld.
 -- Fix combination of --nodelist and --exclude not always respecting the
    excluded node list.
 -- Fix jobs incorrectly allocating nodes exclusively when started on a
    partition that doesn't enforce it. This could happen if a multi-partition
    job doesn't specify --exclusive and is evaluated first on a partition
    configured with OverSubscribe=EXCLUSIVE but ends up starting in a partition
    configured with OverSubscribe!=EXCLUSIVE evaluated afterwards.
 -- Setting GLOB_SILENCE flag no longer exposes old bugged behavior.
 -- Fix associations AssocGrpCPURunMinutes being incorrectly computed for
    running jobs after a controller reconfiguration/restart.
 -- Fix scheduling jobs that request --gpus and nodes have different node
    weights and different numbers of gpus.
 -- slurmrestd - Add "NO_CRON_JOBS" as possible flag value to the following:
      'DELETE /slurm/v0.0.40/jobs' flags field.
      'DELETE /slurm/v0.0.40/job/{job_id}?flags=' flags query parameter.
 -- Fix scontrol segfault/assert failure if the TRESPerNode parameter is used
    when creating reservations.
 -- Avoid checking for wsrep_on when restoring streaming replication settings.
 -- Clarify in the logs that error "1193 Unknown system variable 'wsrep_on'" is
    innocuous.
 -- accounting_storage/mysql - Fix problem when loading reservations from an
    archive dump.
 -- slurmdbd - Fix minor race condition when sending updates to a shutdown
    slurmctld.
 -- slurmctld - Fix invalid refusal of a reservation update.
 -- openapi - Fix memory leak of /meta/slurm/cluster response field.
 -- Fix memory leak when using auth/slurm and AuthInfo=use_client_ids.

* Changes in Slurm 23.11.5
==========================
 -- Fix Debian package build on systems that are not able to query the systemd
    package.
 -- data_parser/v0.0.40 - Emit a warning instead of an error if a disabled
    parser is invoked.
 -- slurmrestd - Improve handling when content plugins rely on parsers
    that haven't been loaded.
 -- Fix old pending jobs dying (Slurm version 21.08.x and older) when upgrading
    Slurm due to "Invalid message version" errors.
 -- Have client commands sleep for progressively longer periods when backed off
    by the RPC rate limiting system.
 -- slurmctld - Ensure agent queue is flushed correctly at shutdown time.
 -- slurmdbd - correct lineage construction during assoc table conversion for
    partition based associations.
 -- Add new RPCs and API call for faster querying of job states from slurmctld.
 -- slurmrestd - Add endpoint '/slurm/{data_parser}/jobs/state'.
 -- squeue - Add `--only-job-state` argument to use faster query of job states.
 -- Make a job requesting --no-requeue, or JobRequeue=0 in the slurm.conf,
    supersede RequeueExit[Hold].
 -- Add sackd man page to the Debian package.
 -- Fix issues with tasks when a job was shrinked more than once.
 -- Fix reservation update validation that resulted in reject of correct
    updates of reservation when the reservation was running jobs.
 -- Fix possible segfault when the backup slurmctld is asserting control.
 -- Fix regression introduced in 23.02.4 where slurmctld was not properly
    tracking the total GRES selected for exclusive multi-node jobs, potentially
    and incorrectly bypassing limits.
 -- Fix tracking of jobs typeless GRES count when multiple typed GRES with the
    same name are also present in the job allocation. Otherwise, the job could
    bypass limits configured for the typeless GRES.
 -- Fix tracking of jobs typeless GRES count when request specification has a
    typeless GRES name first and then typed GRES of different names (i.e.
    --gres=gpu:1,tmpfs:foo:2,tmpfs:bar:7). Otherwise, the job could bypass
    limits configured for the generic of the typed one (tmpfs in the example).
 -- Fix batch step not having SLURM_CLUSTER_NAME filled in.
 -- slurmstepd - Avoid error during `--container` job cleanup about
    RunTimeQuery never being configured. Results in cleanup where job steps not
    fully started.
 -- Fix nodes not being rebooted when using salloc/sbatch/srun "--reboot" flag.
 -- Send scrun.lua in configless mode.
 -- Fix rejecting an interactive job whose extra constraint request cannot
    immediately be satisfied.
 -- Fix regression in 23.11.0 when parsing LogTimeFormat=iso8601_ms that
    prevented milliseconds from being printed.
 -- Fix issue where you could have a gpu allocated as well as a shard on that
    gpu allocated at the same time.
 -- Fix slurmctld crashes when using extra constraints with job arrays.
 -- sackd/slurmrestd/scrun - Avoid memory leak on new unix socket connection.
 -- The failed node field is filled when a node fails but does not time out.
 -- topology/block - Implement topology_p_generate_node_ranking().
 -- slurmrestd - Remove requiring job script field and job component script
    fields to both be populated in the `POST /slurm/v0.0.40/job/submit`
    endpoint as there can only be one batch step script for a job.
 -- slurmrestd - When job script is provided in '.jobs[].script' and '.script'
    fields, the '.script' field's value will be used in the
    `POST /slurm/v0.0.40/job/submit` endpoint.
 -- slurmrestd - Reject HetJob submission missing or empty batch script for
    first Het component in the `POST /slurm/v0.0.40/job/submit` endpoint.
 -- slurmrestd - Reject job when empty batch script submitted to the
    POST /slurm/v0.0.40/job/submit` endpoint.
 -- Fix pam_slurm and pam_slurm_adopt when using auth/slurm.
 -- slurmrestd - Add 'cores_per_socket' field to
    `POST /slurm/v0.0.40/job/submit` endpoint.
 -- Fix srun and other Slurm commands running within a "configless" salloc when
    salloc itself fetched the config.
 -- Enforce binding with shared gres selection if requested.
 -- Fix job allocation failures when the requested tres type or name ends in
    "gres" or "license".
 -- accounting_storage/mysql - Fix lineage string construction when adding a
    user association with a partition.
 -- Fix sattach command.
 -- Fix ReconfigFlags. Due how reconfig was changed in 23.11, they will also
    be used to influence the slurmctld startup as well.
 -- Fix starting slurmd in configless mode if MUNGE support was disabled.

* Changes in Slurm 23.11.4
==========================
 -- Fix a memory leak when updating partition nodes.
 -- Don't leave a partition around if it fails to create with scontrol.
 -- Fix segfault when creating partition with bad node list from scontrol.
 -- Fix preserving partition nodes on bad node list update from scontrol.
 -- Fix assertion in developer mode on a failed message unpack.
 -- Fix repeat POWER_DOWN requests making the nodes available for ping.
 -- Fix rebuilding job alias_list on restart when nodes are still powering up.
 -- Fix INVALID nodes running health check.
 -- Fix cloud/future nodes not setting addresses on invalid registration.
 -- scrun - Remove the requirement to set the SCRUN_WORKING_DIR environment
    variable. This was a regression in 23.11.
 -- Add warning for using select/linear with topology/tree.
    This combination will not be supported in the next major version.
 -- Fix health check program not being run after first pass of all nodes when
    using MaxNodeCount.
 -- sacct - Set process exit code to one for all errors.
 -- Add SlurmctldParameters=disable_triggers option.
 -- Fix issue running steps when the allocation requested an exclusive
    allocation shards along with shards.
 -- Fix cleaning up the sleep process and the cgroup of the extern step if
    slurm_spank_task_post_fork returns an error.
 -- slurm_completion - Add missing --gres-flags= options
    multiple-tasks-per-sharing and one-task-per-sharing.
 -- scrun - Avoid race condition that could cause outbound network
    communications to incorrectly rejected with an incomplete packet error.
 -- scrun - Gracefully handle kernel giving invalid expected number of incoming
    bytes for a connection causing incoming packet corruption resulting in
    connection getting closed.
 -- srun - return 1 when a step lauch fails
 -- scrun - Avoid race condition that could cause deadlock during shutdown.
 -- Fix scontrol listpids to work under dynamic node scenarios.
 -- Add --tres-bind to --help and --usage output.
 -- Add --gres-flags=allow-task-sharing to allow GPUs to still be accessible
    among all tasks when binding GPUs to specific tasks.
 -- Fix issue with CUDA_VISIBLE_DEVICES showing the same MIG device for all
    tasks when using MIGs with --tres-per-task or --gpus-per-task.
 -- slurmctld - Prevent a potential hang during shutdown/reconfigure if the
    association cache thread was previously shut down.
 -- scrun - Avoid race condition that could cause scrun to hang during
    shutdown when connections have pending events.
 -- scrun - Avoid excessive polling of connections during shutdown that could
    needlessly cause 100% CPU usage on a thread.
 -- sbcast - Use user identity from broadcast credential instead of looking it
    up locally on the node.
 -- scontrol - Remove "abort" option handling.
 -- Fix an error message referring to the wrong RPC.
 -- Fix memory leak on error when creating dynamic nodes.
 -- Fix a slurmctld segfault when a cloud/dynamic node changes hostname on
    registration.
 -- Prevent a slurmctld deadlock if the gpu plugin fails to load when
    creating a node.
 -- Change a slurmctld fatal() to an error() when attempting to create a
    dynamic node with a global autodetect set in gres.conf.
 -- Fix leaving node records on error when creating nodes with scontrol.
 -- scrun/sackd - Avoid race condition where shutdown could deadlock.
 -- Fix a regression in 23.02.5 that caused pam_slurm_adopt to fail when
    the user has multiple jobs on a node.
 -- Add GLOB_SILENCE flag that silences the error message which will display if
    an include directive attempts to use the "*" wildcard.
 -- Fix jobs getting rejected when submitting with --gpus option from older
    versions of job submission commands (23.02 and older).
 -- cgroup/v2 - Return 0 for VSZ. Kernel cgroups do not provide this metric.
 -- scrun - Avoid race condition where outbound RPCs could be corrupted.
 -- scrun - Avoid race condition that could cause a crash while compiled in
    debug mode.
 -- gpu/rsmi - Disable gpu usage statistics when not using ROCM 6.0.0+
 -- Fix stuck processes and incorrect environment when using --get-user-env.
 -- Avoid segfault in the slurmdbd when TrackWCKey=no but you are still using
    use WCKeys.
 -- Fix ctld segfault with TopologyParam=RoutePart and no partition defined.
 -- slurmctld - Fix missing --deadline handling for jobs not evaluated by the
    schedulers (i.e. non-runnable, skipped for other reasons, etc.).
 -- Demote some eio related logs from error to verbose in user commands.  These
    are not generally actionable by the user and are easilly generated by port
    scanning a machine running srun.
 -- Make sprio correctly print array tasks that have not yet been split out.
 -- topology/block - Restrict the number of last-level blocks in any allocation.
 -- slurmrestd - Treat multiple repeat URL query values as list.
 -- slurmrestd - Treat all URL query values as string by default to avoid
    parser warnings.

* Changes in Slurm 23.11.3
==========================
 -- Fix debian/changelog file to reflect the correct version so the packages
    are generated correctly.

* Changes in Slurm 23.11.2
==========================
 -- slurmrestd - Reject single http query with multiple path requests.
 -- Fix launching Singularity v4.x containers with srun --container by setting
    .process.terminal to true in generated config.json when step has
    pseudoterminal (--pty) requested.
 -- Fix loading in dyanmic/cloud node jobs after net_cred expired.
 -- Fix cgroup null path error on slurmd/slurmstepd tear down.
 -- data_parser/v0.0.40 - Prevent failure if accounting is disabled, instead
    issue a warning if needed data from the database can not be retrieved.
 -- openapi/slurmctld - Prevent failure if accounting is disabled.
 -- Prevent slurmscriptd processing delays from blocking other threads in
    slurmctld while trying to launch various scripts. This is additional work
    for a fix in 23.02.6.
 -- Fix memory leak when receiving alias addrs from controller.
 -- scontrol - Accept `scontrol token lifespan=infinite` to create tokens that
    effectively do not expire.
 -- Avoid errors when Slurmdb accounting disabled when '--json' or '--yaml' is
    invoked with CLI commands and slurmrestd. Add warnings when query would
    have populated data from Slurmdb instead of errors.
 -- Fix slurmctld memory leak when running job with --tres-per-task=gres:shard:#
 -- Fix backfill trying to start jobs outside of backfill window.
 -- Fix oversubscription on partitions with PreemptMode=OFF.
 -- Preserve node reason on power up if the node is downed or drained.
 -- data_parser/v0.0.40 - Avoid aborting when invoking a not implemented
    parser.
 -- data_parser/v0.0.40 - Fix how nice values are parsed for job submissions.
 -- data_parser/v0.0.40 - Fix regression where parsing error did not result in
    invalid request being rejected.
 -- Fix segfault in front-end node registration.
 -- Prevent jobs using none typed gpus from being killed by the controller after
    a reconfig or restart.
 -- Fix deadlock situation in the dbd when adding associations.
 -- Update default values of text/blob columns when updating from old mysql
    versions in more situations.  This improves a previous fix to handle an
    uncommon case when upgrading mysql/mariadb.
 -- Fix rpmbuild in openSUSE/SLES due to incorrect mariadb dependency.
 -- Fix compilation on RHEL 7.
 -- When upgrading the slurmdbd to 23.11, avoid generating a query to update
    the association table that is larger than max_allowed_packet which would
    result in an upgrade failure.
 -- Fix rare deadlock when a dynamic node registers at the same time that a
    once per minute background task occurs.
 -- Fix build issue on 32-bit systems.
 -- data_parser/v0.0.40 - Fix enumerated strings in OpenAPI specification not
    have type field specified.
 -- Improve scontrol show job -d information of used shared gres (shard/mps)
    topology.
 -- Allow Slurm to compile without MUNGE if --without-munge is used as an
    argument to configure.
 -- accounting_storage/mysql - Fix usage query to use new lineage column
    instead of lft/rgt.
 -- slurmrestd - Improve handling of missing parsers when content plugins
    expect parsers not loaded.
 -- slurmrestd - Correct parsing of StepIds when querying jobs.
 -- slurmrestd - Improve error from parsing failures of lists.
 -- slurmrestd - Improve parsing of singular values for lists.
 -- accounting_storage/mysql - Fix PrivateData=User when listing associations.
 -- Disable sorting of dynamic nodes to avoid issues when restarting with
    heterogenous jobs that cause jobs to abort on restart.
 -- Don't allow deletion of non-dynamic nodes.
 -- accounting_storage/mysql - Fix issue adding partition based associations.
 -- Respect non-"slurm" settings for I_MPI_HYDRA_BOOTSTRAP and HYDRA_BOOTSTRAP
    and avoid injecting the --external-launcher option which will cause
    mpirun/mpiexec to fail with an unexpected argument error.
 -- Fix bug where scontrol hold would change node count for jobs with
    implicitly defined node counts.
 -- data_parser/v0.0.40 - Fix regression of support for "hold" in
    job description.
 -- Avoid sending KILL RPCs to unresolvable POWERING_UP and POWERED_DOWN nodes.
 -- data_parser/v0.0.38 - Fix several potential NULL dereferences that could
    cause slurmrestd to crash.
 -- Add --gres-flags=one-task-per-sharing. Do not allow different tasks in to be
    allocated shared gres from the same sharing gres.
 -- Add SelectTypeParameters=ENFORCE_BINDING_GRES and ONE_TASK_PER_SHARING_GRES.
    This gives default behavior for a job's --gres-flags.
 -- Alter the networking code to try connecting to the backup controllers
    if the DNS lookup for the primary SlurmctldHost fails.
 -- Alter the name resolution to only log at verbose() in client commands
    on failures. This allows for HA setups where the DNS entries are withdrawn
    for some SlurmctldHost entries without flooding the user with errors.
 -- Prevent slurmscriptd PID leaks when running slurmctld in foreground mode.
 -- Open all slurmctld listening ports at startup, and persist throughout.
    This also changes the backup slurmctld process to open the SlurmctldPort
    range, instead of only the first.
 -- Fix backup slurmctld shutting down instead of resuming standby duty if it
    took control.
 -- Fix race condition that delayed the primary slurmctld resuming when taking
    control from a backup controller.
 -- srun - Ensure processed messages are meant for this job in case of a
    rapidly-reused TCP port.
 -- srun - Prevent step launch failure while waiting for step allocation if
    a stray message is received.
 -- Fix backup slurmctld to be able to respond to configless config file
    requests correctly.
 -- Fix slurmctld crashing when recovering from a failed reconfigure.
 -- Fix slurmscriptd operation after recovering from a failed reconfigure.

* Changes in Slurm 23.11.1
==========================
 -- Fix scontrol update job=... TimeLimit+=/-= when used with a raw JobId of job
    array element.
 -- Reject TimeLimit increment/decrement when called on job with
    TimeLimit=UNLIMITED.
 -- Fix slurmctld segfault when reconfiguring after a job resize.
 -- Fix compilation on FreeBSD.
 -- Fix issue with requesting a job with --licenses as well as
    --tres-per-task=license.
 -- slurmctld - Prevent segfault in getopt_long() with an invalid long option.
 -- Switch to man2html-base in Build-Depends for Debian package.
 -- slurmrestd - Added /meta/slurm/cluster field to responses.
 -- Adjust systemd service files to start daemons after remote-fs.target.
 -- Add "--with selinux" option to slurm.spec.
 -- Fix task/cgroup indexing tasks in cgroup plugins, which caused
    jobacct/gather to match the gathered stats with the wrong task id.
 -- select/linear - Fix regression in 23.11 in which jobs that requested
    --cpus-per-task were rejected.
 -- Fix crash in slurmstepd that can occur when launching tasks via mpi using
    the pmi2 plugin and using the route/topology plugin.
 -- Fix sgather not gathering from all nodes when using CR_PACK_NODES/--m pack.
 -- Fix mysql query syntax error when getting jobs with private data.
 -- Fix sanity check to prevent deleting default account of users.
 -- data_parser/v0.0.40 - Fix the parsing for /slurmdb/v0.0.40/jobs exit_code
    query parameter.
 -- Fix issue where TRES for energy wasn't always set before sending it to the
    jobcomp plugin.
 -- jobcomp/[kafka|elastisearch] Print raw TRES values along with the
    formatted versions as tres_[req|alloc]_raw.
 -- Fix inconsistencies with --cpu-bind/SLURM_CPU_BIND and --hint/SLURM_HINT.
 -- Fix ignoring invalid json in various subsystems.
 -- Remove shebang from bash completion script.
 -- Fix elapsed time in JobComp being set from invalid start and end times.
 -- Update service files to start slurmd, slurmctld, and slurmdbd after sssd.
 -- data_parser/v0.0.40 - Fix output of DefMemPerCpu, MaxMemPerCpu, and
    max_shares.
 -- When determining a jobs index in the database don't wait if there are more
    jobs waiting.
 -- If a job requests more shards which would allocate more than one sharing
    GRES (gpu) per node refuse it unless SelectTypeparameters has
    MULTIPLE_SHARING_GRES_PJ.
 -- Avoid refreshing the hwloc xml file when slurmd is reconfigured. This fixes
    an issue seen with CoreSpecCount used on nodes with Intel E-cores.
 -- Trigger fatal exit when Slurm API function is called before slurm_init() is
    called.
 -- slurmd - Fix issue with 'scontrol reconfigure' when started with '-c'.
 -- data_parser/v0.0.40 - Fix handling of negative job nice values.
 -- data_parser/v0.0.40 - Fill the "id" object for associations with the
    cluster, account, partition, and user in addition to the assoc id.
 -- data_parser/v0.0.40 - Remove unusable cpu_binding_flags enums from
    v00.0.40_job_desc_msg.
 -- Improve performance and resiliency of slurmscriptd shutdown on
    'scontrol reconfigure'.
 -- slurmrestd - Job submissions that result in the following error codes
    will be considered as successfully submitted (with a warning), instead
    of returning an HTTP 500 error back:
    ESLURM_NODES_BUSY, ESLURM_RESERVATION_BUSY, ESLURM_JOB_HELD,
    ESLURM_NODE_NOT_AVAIL, ESLURM_QOS_THRES, ESLURM_ACCOUNTING_POLICY,
    ESLURM_RESERVATION_NOT_USABLE, ESLURM_REQUESTED_PART_CONFIG_UNAVAILABLE,
    ESLURM_BURST_BUFFER_WAIT, ESLURM_PARTITION_DOWN,
    ESLURM_LICENSES_UNAVAILABLE.
 -- Fix issue with node appearing to reboot on every "scontrol reconfigure"
    when slurmd was started with the '-b' flag.
 -- Fix a slurmctld fatal error when upgrading to 23.11 and changing from
    select/cons_res to select/cons_tres at the same time.
 -- slurmctld - Fix subsequent reconfigure hanging after a failed reconfigure.
 -- slurmctld - Reject arbitrary distribution jobs that have a minimum node
    count that differs from the number of unique nodes in the hostlist.
 -- Prevent slurmdbd errors when updating reservations with names containing
    apostrophes.
 -- Prevent message extension attacks that could bypass the message hash.
    CVE-2023-49933.
 -- Prevent SQL injection attacks in slurmdbd. CVE-2023-49934.
 -- Prevent message hash bypass in slurmd which can allow an attacker to reuse
    root-level MUNGE tokens and escalate permissions. CVE-2023-49935.
 -- Prevent NULL pointer dereference on size_valp overflow. CVE-2023-49936.
 -- Prevent double-xfree() on error in _unpack_node_reg_resp().
    CVE-2023-49937.

* Changes in Slurm 23.11.0
==========================
 -- For jobs that request --cpus-per-gpu, ensure that the --cpus-per-gpu request
    is honored on every node in the and not just for the job as a whole.
 -- Fix "srun -Z" for cred/munge and cred/none.
 -- Fix listing available data_parser plugins for json and yaml when giving no
    commands to scontrol or sacctmgr.
 -- data_parser/v0.0.40 - Fixed how deleted QOS and associations for jobs are
    dumped.
 -- data_parser/v0.0.40 - Fix how errors and warnings are dumped.
 -- Print consistent errors when serializer plugin fails to load.
 -- data_parser/v0.0.40 - Fix parsing of flag arrays to allow muliple flags to
    be set.
 -- slurmctld - Rework 'scontrol reconfigure' to avoid race conditions that
    can result in stray jobs.
 -- slurmctld - Shave ~1 second off average reconfigure time by terminating
    internal processing threads faster.
 -- Skip running slurmdbd -R if the connected cluster is 23.11 or newer.
    This operation is nolonger relevant for 23.11.
 -- Fix segfault when updating node instance id/type without accounting enabled.
 -- Ensure slurmscriptd shuts down before slurmctld is stopped / reconfigured.
 -- Improve error handling and error messages in slurmctld to slurmscriptd
    communications. This includes avoiding potential deadlock in slurmctld if
    slurmscript dies unexpectedly.
 -- Do not hold batch jobs whose extra constraints cannot be immediately
    satisfied, and set the state reason to "Constraints" instead of
    "BadConstraints".
 -- Fix verbose log message printing a hex number instead of a job id.
 -- Upgrade rate limit parameters message from debug to info.
 -- Fix missing symbols for those linking to libslurm.
 -- Fix memory leak when getting and forwarding addrs from client.
 -- Fix xassert when forwarding to non-addressable nodes.
 -- Fix regression in 23.11.0rc1 where assocs were created with an incorrect
    hierarchy for non-23.11 clusters.
 -- For SchedulerParameters=extra_constraints, prevent slurmctld segfault when
    starting a slurmd with --extra for a node that did not previously set this.
    This also ensures the extra constraints model works off the current node
    state, not the prior state.
 -- Fix regression in 23.11.0rc1 where data_t would not decode negative float
    values correctly, instead the absolute value was always returned.
 -- Fix issue where 'scontrol reconfigure' right as the controller was started
    or reconfigured could lead to it shutting down completely.
 -- Fix --tres-per-task assertion.
 -- Fix a few issues when creating reservations.
 -- Fix slurmctld segfault when packing a job step loaded from a < 23.11 state.
 -- Fix a 32-bit compile issue.
 -- Add SchedulerParameters=time_min_as_soft_limit option.

* Changes in Slurm 23.11.0rc1
=============================
 -- task/affinity - remove Power7 cpu-specific workarounds.
 -- Remove SLURM_WORKING_CLUSTER env from batch and srun environments.
 -- cli_filter/lua - return nil for unset time options rather than the string
    "2982616-04:14:00" (which is the internal macro "NO_VAL" represented as
    time string).
 -- Remove 'none' plugins for all but auth and cred. scontrol show config
    will report (null) now.
 -- Removed select/cons_res. Please update your configuration to
    select/cons_tres.
 -- mpi/pmix - When aborted with status 0, avoid marking job/step as failed.
 -- Fixed typo on "initialized" for the description of ESLURM_PLUGIN_NOT_LOADED.
 -- Added max_submit_line_size to SchedulerParameters.
 -- Change TreeWidth default from 50 to 16.
 -- cgroup.conf - Removed deprecated parameters AllowedKmemSpace,
    ConstrainKmemSpace, MaxKmemPercent, and MinKmemSpace.
 -- proctrack/cgroup - Add "SignalChildrenProcesses=<yes|no>" option to
    cgroup.conf. This allows signals for cancelling, suspending, resuming, etc.
    to be sent to children processes in a step/job rather than just the parent.
 -- Add PreemptParameters=suspend_grace_time parameter to control amount of
    time between SIGTSTP and SIGSTOP signals when suspending jobs.
 -- job_submit/throttle - improve reset of submitted job counts per user in
    order to better honor SchedulerParameters=jobs_per_user_per_hour=#.
 -- Load the user environment into a private pid namespace to avoid user scripts
    leaving background processes on a node.
 -- scontrol show assoc_mgr will display Lineage instead of Lft for
    associations.
 -- Add SlurmctldParameters=no_quick_restart to avoid a new slurmctld taking
    over the old slurmctld on accedent.
 -- Fix --cpus-per-gpu for step allocations, which was previously ignored for
    job steps. --cpus-per-gpu implies --exact.
 -- Fix mutual exclusivity of --cpus-per-gpu and --cpus-per-task: fatal if both
    options are requested in the commandline or both are requested in the
    environment. If one option is requested in the command line, it will
    override the other option in the environment.
 -- slurmrestd - openapi/dbv0.0.37 and openapi/v0.0.37 plugins have been
    removed.
 -- slurmrestd - openapi/dbv0.0.38 and openapi/v0.0.38 plugins have been tagged
    as deprecated.
 -- openapi/slurmctld - forked from openapi/v0.0.38.
 -- openapi/slurmdbd - forked from openapi/dbv0.0.38.
 -- data_parser/v0.0.40 - forked from data_parser/v0.0.39 plugin.
 -- data_parser/v0.0.40 - added OpenAPI schema generation of path parameters
    and OperationIds.
 -- slurmrestd - added auto population of info/version field.
 -- openapi/slurmctld - convert to using data_parser plugins for all input and
    output formatting.
 -- openapi/slurmdbd - convert to using data_parser plugins for all input and
    output formatting.
 -- data_parser/v0.0.39 - skip empty string when parsing QOS ids.
 -- data_parser/v0.0.40 - skip empty string when parsing QOS ids.
 -- data_parser/v0.0.40 - log errors on every level of parsing on failure.
 -- sdiag - add --yaml and --json arg support to specify data_parser plugin.
 -- sacct - add --yaml and --json arg support to specify data_parser plugin.
 -- scontrol - add --yaml and --json arg support to specify data_parser plugin.
 -- sinfo - add --yaml and --json arg support to specify data_parser plugin.
 -- squeue - add --yaml and --json arg support to specify data_parser plugin.
 -- data_parser/v0.0.40 - add warnings for unknown fields during parsing.
 -- data_parser/v0.0.40 - add FAST parameter to allow requestor to skip more
    time intensive warning checks.
 -- Changed the default SelectType to select/cons_tres (from select/linear).
 -- Allow SlurmUser/root to use reservations without specific permissions.
 -- Fix sending step signals to nodes not allocated by the step.
 -- Remove CgroupAutomount= option from cgroup.conf.
 -- Add TopologyRoute=RoutePart to route communications based on partition node
    lists.
 -- SPANK - added new spank_prepend_task_argv() function.
 -- slurmd - improve error logging at job startup during transition from slurmd
    to slurmstepd.
 -- Added ability for configless to push Prolog and Epilog scripts to slurmds.
 -- Prolog and Epilog do not have to be fully qualified pathnames.
 -- Changed default value of PriorityType from priority/basic to
    priority/multifactor.
 -- torque/mpiexec - Propogate exit code from launched process.
 -- slurmrestd - Add new rlimits fields for job submission.
 -- data_parser/v0.0.40 - convert job state field to flag array to provide
    enumeration of values.
 -- sbatch - removed --export-file option (used with defunct Moab integration).
 -- Define SPANK options environment variables when --export=[NIL|NONE] is
    specified.
 -- slurmrestd - Numeric input fields provided with a null formatted value will
    now convert to zero (0) where it can be a valid value. This is expected to
    be only be notable with job submission against v0.0.38 versioned endpoints
    with job requests with fields provided with null values. These fields were
    already rejected by v0.0.39+ endpoints, unless +complex parser value is
    provided to v0.0.40+ endpoints.
 -- slurmrestd - Improve parsing of integers and floating point numbers when
    handling incoming user provided numeric fields. Fields that would have not
    rejected a number for a numeric field followed by other non-numeric
    characters will now get rejected. This is expected to be only be notable
    with job submission against v0.0.38 versioned endpoints with malformed job
    requests.
 -- Reject reservation update if it will result in previously submitted
    jobs losing access to the reservation.
 -- data_parser/v0.0.40 - output partition state when dumping partitions.
 -- Allow for a shared suffix to be used with the hostlist format. E.g.,
    "node[0001-0010]-int".
 -- Fix perlapi build when using non-default libdir.
 -- Replace SRUN_CPUS_PER_TASK with SLURM_CPUS_PER_TASK and get back the
    previous behavior before Slurm 22.05 since now we have the new external
    launcher step.
 -- data_parser/v0.0.40 - Change v0.0.40_job_info response to tag exit_code
    field as verbose job exit code object.
 -- data_parser/v0.0.40 - Change v0.0.40_job_info response to tag
    derived_exit_code field as verbose job exit code object.
 -- Avoid database upgrade failures with galera by enabling streaming
    replication for Galera 4 clusters during the upgrade process.
 -- job_container/tmpfs - disable plugin for nodes that are not listed in
    job_container.conf when there is no global BasePath set.
 -- job_container/tmpfs - Add "BasePath=none" option to disable plugin on node
    subsets when there is a global setting.
 -- Remove cloud_reg_addrs and make it default behavior.
 -- Remove NoAddrCache CommunicationParameter.
 -- Add QOS flag 'Relative'. If set the QOS limits will be treated as
    percentages of a cluster/partition instead of absolutes.
 -- Remove FIRST_CORES flag from reservations.
 -- scontrol/sview - Remove comma separated CoreCnt option from reservations.
 -- scontrol/sview - Remove comma separated NodeCnt option from reservations.
 -- Add cloud instance id and instance type to node records. Can be viewed/
    updated with scontrol.
 -- slurmd - add "instance-id", "instance-type", and "extra" options to allow
    them to be set on startup.
 -- Add cloud instance accounting to database that can be viewed with 'sacctmgr
    show instance'.
 -- openapi/v0.0.40 - add /instance and /instances endpoints.
 -- SelectTypeParameters=cr_cpu - Fix a log error "CPU underflow" at step
    completion for steps that request --threads-per-core or
    --hint=nomultithread.
 -- select/linear - fix task launch failure that sometimes occurred when
    requesting --threads-per-core or --hint=nomultithread. This also fixes
    memory calculation with one of these options and --mem-per-cpu:
    Previously, memory = mem-per-cpu * all cpus including unusable threads.
    Now, memory = mem-per-cpu * only usuable threads. This behavior matches
    the documentation and select/cons_tres.
 -- gpu/nvml - Reduce chances of NVML_ERROR_INSUFFICIENT_SIZE error when getting
    gpu memory information.
 -- slurmrestd - Convert to generating OperationIDs based on path for all
    v0.0.40 tagged paths.
 -- slurmrestd - Reduce memory used while dumping a job's stdio paths.
 -- slurmrestd - Jobs queried from data_parser/v0.0.40 from slurmdb will have
    'step/id' field given as a string to match CLI formatting instead of an
    object.
 -- sacct - Output in JSON or YAML output will will have the 'step/id' field
    given as a string instead of an object.
 -- scontrol/squeue - Step output in JSON or YAML output will will have the
    'id' field given as a string instead of an object.
 -- slurmrestd - For 'GET /slurmdb/v0.0.40/jobs' mimick default behavior for
    handling of job start and end times as sacct when one or both fields are
    not provided as a query parameter.
 -- openapi/slurmctld - Add 'GET /slurm/v0.0.40/shares' endpoint to dump same
    output as sshare.
 -- sshare - add JSON/YAML support.
 -- data_parser/v0.0.40 - Remove "required/memory" output in json. It is
    replaced by "required/memory_per_cpu" and "required/memory_per_node".
 -- slurmrestd - Add numeric id to all association identifiers to allow unique
    identification where association has been deleted but is still referenced by
    accounting record.
 -- slurmrestd - Add accounting, id, and comment fields to association dumps.
 -- slurmrestd - Removed usage field from association dumps which was never
    populated. See accounting field for accounting usage records.
 -- slurmrestd - Default to not query assocations or coordinators with
    'GET /slurmdb/v0.0.40/accounts'.
 -- slurmrestd - Default to not query assocations, wckeys or coordinators with
    'GET /slurmdb/v0.0.40/user'.
 -- slurmrestd - Enforce user's default wckey on supplied list of user wckeys in
    'POST /slurmdb/v0.0.40/user' queries to avoid conflicting or changed default
    wckey from being ignored.
 -- slurmrestd - Enforce user's default wckey on supplied list of user wckeys in
    'POST /slurmdb/v0.0.40/user' queries to avoid conflicting or changed default
    wckey from being ignored.
 -- slurmrestd - 'POST /slurm/v0.0.40/job/submit' will return "step_id" as
    string to provide descriptive step names (batch, extern, interactive, TBD)
    for non-numeric steps.
 -- slurmrestd - Tagged "result" field from 'POST /slurm/v0.0.40/job/submit'
    as deprecated.
 -- slurmrestd - Warning will be added for rejected job submissions with
    submissions to 'POST /slurm/v0.0.40/job/submit'.
 -- slurmrestd - Tagged "job_id", "step_id", and "job_submit_user_msg" fields
    from 'POST /slurm/v0.0.40/job/{job_id}' response as deprecated due their
    only being valid for the first entry in the "result" field array.
 -- slurmrestd - Warning will be added for rejected job updates with
    queries to 'POST /slurm/v0.0.40/job/{job_id}'.
 -- slurmrestd - Add SLURMRESTD_JSON and SLURMRESTD_YAML input environment
    variables.
 -- slurmrestd - Correct issue where field and $ref description fields were not
    getting populated for OpenAPI specification generation for queries to
    'GET /openapi/v3' for v0.0.40 endpoints.
 -- slurmdbd - Check for innodb_redo_log_capacity instead of
    innodb_log_file_size in MySQL 8.0.30+.
 -- slurmrestd - Fix log level requests SLURMRESTD_DEBUG and -v applying on top
    of each other and the default logging level (info). -v now applies on top
    of the default log level, and SLURMRESTD_DEBUG sets the log level if -v is
    not given.
 -- slurmrestd - Allow SLURMRESTD_DEBUG=quiet or 0, which was previously denied.
    Also deny negative values for SLURMRESTD_DEBUG, which previously set the
    debug level to debug5.
 -- The backup slurmctld now checks that the heartbeat file exists in
    StateSaveLocation before starting and attempting to assert control.
    This avoids issues with misconfiguration, or the shared filesystem being
    unavailable, that could previously have lead to all jobs being cancelled.
 -- The warning printed when using configure --without-PACKAGE has been changed
    to a notice.
 -- Fix --cpu-freq with userspace governor and frequency ranges behavior.
 -- Fix --cpu-freq parsing with incorrect frequencies.
 -- PMIx support is nolonger built by default.  Passing --with-pmix option is
    now required to build with PMIx.
 -- Use memory.current in cgroup/v2 instead of manually calculating RSS. This
    makes accounting consistent with OOM Killer.
 -- Update slurmstepd processes with current SlurmctldHost settings, allowing
    for controller changes without draining all compute jobs.
 -- Add format_stderr to LogTimeFormat of slurm.conf and slurmdbd.conf.
 -- slurmrestd - add `GET /slurm/v0.0.40/reconfigure` endpoint to allow
    equivalent requests of `scontrol reconfigure`.
 -- sreport - cluster Utilization PlannedDown field now includes the time that
    all nodes were in the POWERED_DOWN state instead of just cloud nodes.
 -- scontrol update partition now allows Nodes+=<node-list> and
    Nodes-=<node-list> to add/delete nodes from the existing partition node
    list. Nodes=+host1,-host2 is also allowed.
 -- sacctmgr - add --yaml and --json arg support to specify data_parser plugin.
 -- slurmrestd - Add last_update and last_backfill fields to response to
    `GET /slurm/v0.0.40/job` and `GET /slurm/v0.0.40/jobs` queries.
 -- slurmrestd - Add last_update fields to response to
    `GET /slurm/v0.0.40/node` and `GET /slurm/v0.0.40/nodes` queries.
 -- slurmrestd - Add last_update fields to response to
    `GET /slurm/v0.0.40/partition` and `GET /slurm/v0.0.40/partitions` queries.
 -- slurmrestd - Add last_update fields to response to
    `GET /slurm/v0.0.40/licenses` query.
 -- auth/jwt - fatal when jwt or jwks key files are writable by other.
 -- sacctmgr can now modify QOS's RawUsage to zero or a positive value.
 -- sdiag - Added statistics on why the main and backfill schedulers have
    stopped evaluation on each scheduling cycle.
 -- openapi/v0.0.40 - add /{accounts,users}_association endpoints.
 -- slurm.spec - Add `--with yaml` argument to require YAML support.
 -- Add new rl_log_freq option to SlurmctldParameters to allow sites to limit
    the number of 'RPC limit exceeded...' messages that are logged.
 -- Rename sbcast --fanout to --treewidth.
 -- Remove SLURM_NODE_ALIASES env variable.
 -- Enable fanout for dynamic and unaddresable cloud nodes.
 -- Fix how steps are dealloced in an allocation if the last step of an srun
    never completes due to a node failure.
 -- Remove redundant database indexes.
 -- Add database index to suspend table to speed up archive/purges.
 -- When requesting --tres-per-task alter incorrect request for TRES,
    it should be TRESType/TRESName not TRESType:TRESName.
 -- Make it so reservations can reserve GRES.
 -- switch/hpe_slingshot - Add disable_rdzv_get flag to disable rendezvous gets.
 -- slurmrestd - Avoid matching query URLs based on partial matches to an
    existing endpoint, e.g. POST request to /slurm/v0.0.40/job was routed
    to the handler of POST /slurm/v0.0.40/job/submit.
 -- Don't display old job_arrays/het_jobs in sacct if Job ID was reused.
 -- sbcast - use the specified --fanout value on all hops in message
    forwarding; previously the specified fanout was only used on the first hop,
    and additional hops used TreeWidth in slurm.conf.
 -- slurmrestd - remove logger prefix from '-s/-a list' options outputs.
 -- Fix fd socket name resolution which could flood log files at debug level.
 -- The rpmbuild "--with mysql" option has been removed. The rpm has long
    required sql development libraries to build and the existence of this option
    was confusing. The default behavior now is to always require one of the sql
    development libraries.
 -- Add support for Debian packaging.
 -- switch/hpe_slingshot - Add support for collectives.
 -- Nodes with suspended jobs can now be displayed as MIXED.
 -- sview - Fix search by node state returning incorrect node list.
 -- Fix inconsistent handling of using cli and/or environment options for
    tres_per_task=cpu:# and cpus_per_gpu.
 -- Requesting --cpus-per-task will now set SLURM_TRES_PER_TASK=cpu:# in the
    environment.
 -- For some tres related environment variables such as SLURM_TRES_PER_TASK,
    when srun requests a different value for that option, set these environment
    variables to the value requested by srun. Previously these environment
    variables were unchanged from the job allocation. This bug only affected the
    output environment variables, not the actual step resource allocation.
 -- RoutePlugin=route/topology has been replaced with TopologyParam=RouteTree.
 -- If ThreadsPerCore in slurm.conf is configured with less
    than the number of hardware threads, fix a bug where the task plugins used
    fewer cores instead of using fewer threads per core.
 -- Fix arbitrary distribution allowing it to be used with salloc and sbatch and
    fix how cpus are allocated to nodes.
 -- Allow nodes to reboot while node is drained or in a maintenance state.
 -- Allow scontrol reboot to use nodesets to filter nodes to reboot.
 -- Fix how the topology of typed gres gets updated.
 -- Changes to the Type option in gres.conf now can be applied with scontrol
    reconfig.
 -- Allow for jobs that request a newly configured gres type to be queued
    even when the needed slurmds have not yet registered.
 -- Kill recovered jobs that require unconfigured gres types.
 -- If keepalives are configured, enable them on all persistent connections.
 -- data_parser/v0.0.40 - add parsers for main/backfill cycle exit reasons.
 -- Configless - Also send Includes from configuration files not parsed by the
    controller (i.e. from plugstack.conf).
 -- Add gpu/nrt plugin for nodes using Trainium/Inferentia devices.
 -- data_parser/v0.0.40 - Add START_RECEIVED to job flags in dumped output.
 -- SPANK - Failures from most spank functions (not epilog or exit) will now
    cause the step to be marked as failed and the command (srun, salloc,
    sbatch --wait) to return 1.
 -- data_parser/v0.0.40 - Fix how the "INVALID" nodes state is dumped.
 -- Add SchedulerParameters=extra_constraints. This enables various node
    filtering options in the --extra flag of salloc, sbatch, and srun.
 -- Improve scontrol show node -d information of used shared gres (shard/mps)
    topology.

* Changes in Slurm 23.02.9
==========================
 -- sattach - Fix regression from 23.02.8 security fix leading to crash.

* Changes in Slurm 23.02.8
==========================
 -- Fix rare deadlock when a dynamic node registers at the same time that a
    once per minute background task occurs.
 -- Fix assertion in developer mode on a failed message unpack.
 -- switch/hpe_slingshot - Fix security issue around managing VNI access.
    CVE-2024-42511.

* Changes in Slurm 23.02.7
==========================
 -- libslurm_nss - Avoid causing glibc to assert due to an unexpected return
    from slurm_nss due to an error during lookup.
 -- Fix job requests with --tres-per-task sometimes resulting in bad allocations
    that cannot run subsequent job steps.
 -- Fix issue with slurmd where srun fails to be warned when a node prolog
    script runs beyond MsgTimeout set in slurm.conf.
 -- gres/shard - Fix plugin functions to have matching parameter orders.
 -- gpu/nvml - Fix issue that resulted in the wrong MIG devices being
    constrained to a job
 -- gpu/nvml - Fix linking issue with MIGs that prevented multiple MIGs being
    used in a single job for certain MIG configurations
 -- Add JobAcctGatherParams=DisableGPUAcct to disable gpu accounting.
 -- Fix file descriptor leak in slurmd when using acct_gather_energy/ipmi with
    DCMI devices.
 -- sview - avoid crash when job has a node list string > 49 characters.
 -- Prevent slurmctld crash during reconfigure when packing job start messages.
 -- Preserve reason uid on reconfig.
 -- Update node reason with updated INVAL state reason if different from last
    registration.
 -- acct_gather_energy/ipmi - Improve logging of DCMI issues.
 -- conmgr - Avoid NULL dereference when using auth/none.
 -- data_parser/v0.0.39 - Fixed how deleted QOS and associations for jobs are
    dumped.
 -- burst_buffer/lua - fix stage in counter not decrementing when a job is
    cancelled during stage in. This counter is used to enforce the limit of 128
    scripts per stage.
 -- gpu/oneapi - Add support for new env vars ZE_FLAT_DEVICE_HIERARCHY and
    ZE_ENABLE_PCI_ID_DEVICE_ORDER.
 -- data_parser/v0.0.39 - Fix how the "INVALID" nodes state is dumped.
 -- data_parser/v0.0.39 - Fix parsing of flag arrays to allow muliple flags to
    be set.
 -- Avoid leaking sockets when an x11 application is closed in an allocation.
 -- Fix missing mutex unlock in group cache code which could cause slurmctld to
    freeze.
 -- Fix scrontab monthly jobs possibly skipping a month if added near the end of
    the month.
 -- Fix loading of the gpu account gather energy plugin.
 -- Fix slurmctld segfault when reconfiguring after a job resize.
 -- Fix crash in slurmstepd that can occur when launching tasks via mpi using
    the pmi2 plugin and using the route/topology plugin.
 -- data_parser/v0.0.39 - skip empty string when parsing QOS ids.
 -- Fix "qos <id> doesn't exist" error message in assoc_mgr_update_assocs to
    print the attempted new default qos, rather than the current default qos.
 -- Remove error message from assoc_mgr_update_assocs when purposefully
    resetting the default qos.
 -- data_parser/v0.0.39 - Fix segfault when POSTing data with association usage.
 -- Prevent message extension attacks that could bypass the message hash.
    CVE-2023-49933.
 -- Prevent message hash bypass in slurmd which can allow an attacker to reuse
    root-level MUNGE tokens and escalate permissions. CVE-2023-49935.
 -- Prevent NULL pointer dereference on size_valp overflow. CVE-2023-49936.
 -- Prevent double-xfree() on error in _unpack_node_reg_resp(). CVE-2023-49937.
 -- Prevent modified sbcast RPCs from opening a file with the wrong group
    permissions. CVE-2023-49938.

* Changes in Slurm 23.02.6
==========================
 -- Fix CpusPerTres= not upgreadable with scontrol update
 -- Fix unintentional gres removal when validating the gres job state.
 -- Fix --without-hpe-slingshot configure option.
 -- Fix cgroup v2 memory calculations when transparent huge pages are used.
 -- Fix parsing of sgather --timeout option.
 -- Fix regression from 22.05.0 that caused srun --cpu-bind "=verbose" and "=v"
    options give different CPU bind masks.
 -- Fix "_find_node_record: lookup failure for node" error message appearing
    for all dynamic nodes during reconfigure.
 -- Avoid segfault if loading serializer plugin fails.
 -- slurmrestd - Correct OpenAPI format for 'GET /slurm/v0.0.39/licenses'.
 -- slurmrestd - Correct OpenAPI format for 'GET /slurm/v0.0.39/job/{job_id}'.
 -- slurmrestd - Change format to multiple fields in 'GET
    /slurmdb/v0.0.39/assocations' and 'GET /slurmdb/v0.0.39/qos' to handle
    infinite and unset states.
 -- When a node fails in a job with --no-kill, preserve the extern step on the
    remaining nodes to avoid breaking features that rely on the extern step
    such as pam_slurm_adopt, x11, and job_container/tmpfs.
 -- auth/jwt - Ignore 'x5c' field in JWKS files.
 -- auth/jwt - Treat 'alg' field as optional in JWKS files.
 -- Allow job_desc.selinux_context to be read from the job_submit.lua script.
 -- Skip check in slurmstepd that causes a large number of errors in the munge
    log: "Unauthorized credential for client UID=0 GID=0".  This error will
    still appear on slurmd/slurmctld/slurmdbd start up and is not a cause for
    concern.
 -- slurmctld - Allow startup with zero partitions.
 -- Fix some mig profile names in slurm not matching nvidia mig profiles.
 -- Prevent slurmscriptd processing delays from blocking other threads in
    slurmctld while trying to launch {Prolog|Epilog}Slurmctld.
 -- Fix sacct printing ReqMem field when memory doesn't exist in requested TRES.
 -- Fix how heterogenous steps in an allocation with CR_PACK_NODE or -mpack are
    created.
 -- Fix slurmctld crash from race condition within job_submit_throttle plugin.
 -- Fix --with-systemdsystemunitdir when requesting a default location.
 -- Fix not being able to cancel an array task by the jobid (i.e. not
    <jobid>_<taskid>) through scancel, job launch failure or prolog failure.
 -- Fix cancelling the whole array job when the array task is the meta job and
    it fails job or prolog launch and is not requeable. Cancel only the
    specific task instead.
 -- Fix regression in 21.08.2 where MailProg did not run for mail-type=end for
    jobs with non-zero exit codes.
 -- Fix incorrect setting of memory.swap.max in cgroup/v2.
 -- Fix jobacctgather/cgroup collection of disk/io, gpumem, gpuutil TRES values.
 -- Fix -d singleton for heterogeneous jobs.
 -- Downgrade info logs about a job meeting a "maximum node limit" in the
    select plugin to DebugFlags=SelectType. These info logs could spam the
    slurmctld log file under certain circumstances.
 -- prep/script - Fix [Srun|Task]<Prolog|Epilog> missing SLURM_JOB_NODELIST.
 -- gres - Rebuild GRES core bitmap for nodes at startup. This fixes error:
    "Core bitmaps size mismatch on node [HOSTNAME]", which causes jobs to enter
    state "Requested node configuration is not available".
 -- slurmctd - Allow startup with zero nodes.
 -- Fix filesystem handling race conditions that could lead to an attacker
    taking control of an arbitrary file, or removing entire directories'
    contents. CVE-2023-41914.
 -- Return error when updating ArrayTaskThrottle on a non-ArrayJobId.

* Changes in Slurm 23.02.5
==========================
 -- Add the JobId to debug() messages indicating when cpus_per_task/mem_per_cpu
    or pn_min_cpus are being automatically adjusted.
 -- Fix regression in 23.02.2 that caused slurmctld -R to crash on startup if
    a node features plugin is configured.
 -- Fix and prevent reoccurring reservations from overlapping.
 -- job_container/tmpfs - Avoid attempts to share BasePath between nodes.
 -- Change the log message warning for rate limited users from verbose to info.
 -- With CR_Cpu_Memory, fix node selection for jobs that request gres and
    --mem-per-cpu.
 -- Fix a regression from 22.05.7 in which some jobs were allocated too few
    nodes, thus overcommitting cpus to some tasks.
 -- Fix a job being stuck in the completing state if the job ends while the
    primary controller is down or unresponsive and the backup controller has
    not yet taken over.
 -- Fix slurmctld segfault when a node registers with a configured CpuSpecList
    while slurmctld configuration has the node without CpuSpecList.
 -- Fix cloud nodes getting stuck in POWERED_DOWN+NO_RESPOND state after not
    registering by ResumeTimeout.
 -- slurmstepd - Avoid cleanup of config.json-less containers spooldir getting
    skipped.
 -- slurmstepd - Cleanup per task generated environment for containers in
    spooldir.
 -- Fix scontrol segfault when 'completing' command requested repeatedly in
    interactive mode.
 -- Properly handle a race condition between bind() and listen() calls in the
    network stack when running with SrunPortRange set.
 -- Federation - Fix revoked jobs being returned regardless of the -a/--all
    option for privileged users.
 -- Federation - Fix canceling pending federated jobs from non-origin clusters
    which could leave federated jobs orphaned from the origin cluster.
 -- Fix sinfo segfault when printing multiple clusters with --noheader option.
 -- Federation - fix clusters not syncing if clusters are added to a federation
    before they have registered with the dbd.
 -- Change pmi2 plugin to honor the SrunPortRange option. This matches the new
    behavior of the pmix plugin in 23.02.0. Note that neither of these plugins
    makes use of the "MpiParams=ports=" option, and previously were only limited
    by the systems ephemeral port range.
 -- node_features/helpers - Fix node selection for jobs requesting changeable
    features with the '|' operator, which could prevent jobs from running on
    some valid nodes.
 -- node_features/helpers - Fix inconsistent handling of '&' and '|', where an
    AND'd feature was sometimes AND'd to all sets of features instead of just
    the current set. E.g. "foo|bar&baz" was interpreted as {foo,baz} or
    {bar,baz} instead of how it is documented: "{foo} or {bar,baz}".
 -- Fix job accounting so that when a job is requeued its allocated node count
    is cleared. After the requeue, sacct will correctly show that the job has
    0 AllocNodes while it is pending or if it is canceled before restarting.
 -- sacct - AllocCPUS now correctly shows 0 if a job has not yet received an
    allocation or if the job was canceled before getting one.
 -- Fix intel oneapi autodetect: detect the /dev/dri/renderD[0-9]+ gpus, and do
    not detect /dev/dri/card[0-9]+.
 -- Format batch, extern, interactive, and pending step ids into strings that
    are human readable.
 -- Fix node selection for jobs that request --gpus and a number of tasks fewer
    than gpus, which resulted in incorrectly rejecting these jobs.
 -- Remove MYSQL_OPT_RECONNECT completely.
 -- Fix cloud nodes in POWERING_UP state disappearing (getting set to FUTURE)
    when an `scontrol reconfigure` happens.
 -- openapi/dbv0.0.39 - Avoid assert / segfault on missing coordinators list.
 -- slurmrestd - Correct memory leak while parsing OpenAPI specification
    templates with server overrides.
 -- slurmrestd - Reduce memory usage when printing out job CPU frequency.
 -- Fix overwriting user node reason with system message.
 -- Remove --uid / --gid options from salloc and srun commands.
 -- Prevent deadlock when rpc_queue is enabled.
 -- slurmrestd - Correct OpenAPI specification generation bug where fields with
    overlapping parent paths would not get generated.
 -- Fix memory leak as a result of a partition info query.
 -- Fix memory leak as a result of a job info query.
 -- slurmrestd - For 'GET /slurm/v0.0.39/node[s]', change format of node's
    energy field "current_watts" to a dictionary to account for unset value
    instead of dumping 4294967294.
 -- slurmrestd - For 'GET /slurm/v0.0.39/qos', change format of QOS's
    field "priority" to a dictionary to account for unset value instead of
    dumping 4294967294.
 -- slurmrestd - For 'GET /slurm/v0.0.39/job[s]', the 'return code' code field
    in v0.0.39_job_exit_code will be set to -127 instead of being left unset
    where job does not have a relevant return code.
 -- data_parser/v0.0.39 - Add required/memory_per_cpu and
    required/memory_per_node to `sacct --json` and `sacct --yaml` and
    'GET /slurmdb/v0.0.39/jobs' from slurmrestd.
 -- For step allocations, fix --gres=none sometimes not ignoring gres from the
    job.
 -- Fix --exclusive jobs incorrectly gang-scheduling where they shouldn't.
 -- Fix allocations with CR_SOCKET, gres not assigned to a specific socket, and
    block core distribion potentially allocating more sockets than required.
 -- gpu/oneapi - Store cores correctly so CPU affinity is tracked.
 -- Revert a change in 23.02.3 where Slurm would kill a script's process group
    as soon as the script ended instead of waiting as long as any process in
    that process group held the stdout/stderr file descriptors open. That change
    broke some scripts that relied on the previous behavior. Setting time limits
    for scripts (such as PrologEpilogTimeout) is strongly encouraged to avoid
    Slurm waiting indefinitely for scripts to finish.
 -- Allow slurmdbd -R to work if the root assoc id is not 1.
 -- Fix slurmdbd -R not returning an error under certain conditions.
 -- slurmdbd - Avoid potential NULL pointer dereference in the mysql plugin.
 -- Revert a change in 23.02 where SLURM_NTASKS was no longer set in the job's
    environment when --ntasks-per-node was requested.
 -- Limit periodic node registrations to 50 instead of the full TreeWidth.
    Since unresolvable cloud/dynamic nodes must disable fanout by setting
    TreeWidth to a large number, this would cause all nodes to register at
    once.
 -- Fix regression in 23.02.3 which broken x11 forwarding for hosts when
    MUNGE sends a localhost address in the encode host field. This is caused
    when the node hostname is mapped to 127.0.0.1 (or similar) in /etc/hosts.
 -- openapi/[db]v0.0.39 - fix memory leak on parsing error.
 -- data_parser/v0.0.39 - fix updating qos for associations.
 -- openapi/dbv0.0.39 - fix updating values for associations with null users.
 -- Fix minor memory leak with --tres-per-task and licenses.
 -- Fix cyclic socket cpu distribution for tasks in a step where
    --cpus-per-task < usable threads per core.

* Changes in Slurm 23.02.4
==========================
 -- Fix sbatch return code when --wait is requested on a job array.
 -- switch/hpe_slingshot - avoid segfault when running with old libcxi.
 -- Avoid slurmctld segfault when specifying AccountingStorageExternalHost.
 -- Fix collected GPUUtilization values for acct_gather_profile plugins.
 -- Fix slurmrestd handling of job hold/release operations.
 -- Make spank S_JOB_ARGV item value hold the requested command argv instead of
    the srun --bcast value when --bcast requested (only in local context).
 -- Fix step running indefinitely when slurmctld takes more than MessageTimeout
    to respond. Now, slurmctld will cancel the step when detected, preventing
    following steps from getting stuck waiting for resources to be released.
 -- Fix regression to make job_desc.min_cpus accurate again in job_submit when
    requesting a job with --ntasks-per-node.
 -- scontrol - Permit changes to StdErr and StdIn for pending jobs.
 -- scontrol - Reset std{err,in,out} when set to empty string.
 -- slurmrestd - mark environment as a required field for job submission
    descriptions.
 -- slurmrestd - avoid dumping null in OpenAPI schema required fields.
 -- data_parser/v0.0.39 - avoid rejecting valid memory_per_node formatted as
    dictionary provided with a job description.
 -- data_parser/v0.0.39 - avoid rejecting valid memory_per_cpu formatted as
    dictionary provided with a job description.
 -- slurmrestd - Return HTTP error code 404 when job query fails.
 -- slurmrestd - Add return schema to error response to job and license query.
 -- Fix handling of ArrayTaskThrottle in backfill.
 -- Fix regression in 23.02.2 when checking gres state on slurmctld startup or
    reconfigure. Gres changes in the configuration were not updated on slurmctld
    startup. On startup or reconfigure, these messages were present in the log:
    "error: Attempt to change gres/gpu Count".
 -- Fix potential double count of gres when dealing with limits.
 -- switch/hpe_slingshot - support alternate traffic class names with "TC_"
    prefix.
 -- scrontab - Fix cutting off the final character of quoted variables.
 -- Fix slurmstepd segfault when ContainerPath is not set in oci.conf
 -- Change the log message warning for rate limited users from debug to verbose.
 -- Fixed an issue where jobs requesting licenses were incorrectly rejected.
 -- smail - Fix issues where e-mails at job completion were not being sent.
 -- scontrol/slurmctld - fix comma parsing when updating a reservation's nodes.
 -- cgroup/v2 - Avoid capturing log output for ebpf when constraining devices,
    as this can lead to inadvertent failure if the log buffer is too small.
 -- Fix --gpu-bind=single binding tasks to wrong gpus, leading to some gpus
    having more tasks than they should and other gpus being unused.
 -- Fix main scheduler loop not starting after failover to backup controller.
 -- Added error message when attempting to use sattach on batch or extern steps.
 -- Fix regression in 23.02 that causes slurmstepd to crash when srun requests
    more than TreeWidth nodes in a step and uses the pmi2 or pmix plugin.
 -- Reject job ArrayTaskThrottle update requests from unprivileged users.
 -- data_parser/v0.0.39 - populate description fields of property objects in
    generated OpenAPI specifications where defined.
 -- slurmstepd - Avoid segfault caused by ContainerPath not being terminated by
    '/' in oci.conf.
 -- data_parser/v0.0.39 - Change v0.0.39_job_info response to tag exit_code
    field as being complex instead of only an unsigned integer.
 -- job_container/tmpfs - Fix %h and %n substitution in BasePath where %h was
    substituted as the NodeName instead of the hostname, and %n was substituted
    as an empty string.
 -- Fix regression where --cpu-bind=verbose would override TaskPluginParam.
 -- scancel - Fix --clusters/-M for federations. Only filtered jobs (e.g. -A,
    -u, -p, etc.) from the specified clusters will be canceled, rather than all
    jobs in the federation. Specific jobids will still be routed to the origin
    cluster for cancellation.
 -- Add SelectTypeParameters=LL_SHARED_GRES.

* Changes in Slurm 23.02.3
==========================
 -- Fix regression in 23.02.2 that ignored the partition DefCpuPerGPU setting
    on the first pass of scheduling a job requesting --gpus --ntasks.
 -- openapi/dbv0.0.39/users - If a default account update failed, resulting in a
    no-op, the query returned success without any warning. Now a warning is sent
    back to the client that the default account wasn't modified.
 -- srun - fix issue creating regular and interactive steps because
    *_PACK_GROUP* environment variables were incorrectly set on non-HetSteps.
 -- Fix dynamic nodes getting stuck in allocated states when reconfiguring.
 -- Avoid job write lock when nodes are dynamically added/removed.
 -- burst_buffer/lua - allow jobs to get scheduled sooner after
    slurm_bb_data_in completes.
 -- mpi/pmix - fix regression introduced in 23.02.2 which caused PMIx shmem
    backed files permissions to be incorrect.
 -- api/submit - fix memory leaks when submission of batch regular jobs or batch
    HetJobs fails (response data is a return code).
 -- openapi/v0.0.39 - fix memory leak in _job_post_het_submit().
 -- Fix regression in 23.02.2 that set the SLURM_NTASKS environment variable
    in sbatch jobs from --ntasks-per-node when --ntasks was not requested.
 -- Fix regression in 23.02 that caused sbatch jobs to set the wrong number
    of tasks when requesting --ntasks-per-node without --ntasks, and also
    requesting one of the following options: --sockets-per-node,
    --cores-per-socket, --threads-per-core (or --hint=nomultithread), or
    -B,--extra-node-info.
 -- Fix double counting suspended job counts on nodes when reconfiguring, which
    prevented nodes with suspended jobs from being powered down or rebooted
    once the jobs completed.
 -- Fix backfill not scheduling jobs submitted with --prefer and --constraint
    properly.
 -- Avoid possible slurmctld segfault caused by race condition with already
    completed slurmdbd_conn connections.
 -- Slurmdbd.conf checks included conf files for 0600 permissions
 -- slurmrestd - fix regression "oversubscribe" fields were removed from job
    descriptions and submissions from v0.0.39 end points.
 -- accounting_storage/mysql - Query for indiviual QOS correctly when you have
    more than 10.
 -- Add warning message about ignoring --tres-per-tasks=license when used
    on a step.
 -- sshare - Fix command to work when using priority/basic.
 -- Avoid loading cli_filter plugins outside of salloc/sbatch/scron/srun. This
    fixes a number of missing symbol problems that can manifest for executables
    linked against libslurm (and not libslurmfull).
 -- Allow cloud_reg_addrs to update dynamically registered node's addrs on
    subsequent registrations.
 -- switch/hpe_slingshot - Fix hetjob components being assigned different vnis.
 -- Revert a change in 22.05.5 that prevented tasks from sharing a core if
    --cpus-per-task > threads per core, but caused incorrect accounting and cpu
    binding. Instead, --ntasks-per-core=1 may be requested to prevent tasks from
    sharing a core.
 -- Correctly send assoc_mgr lock to mcs plugin.
 -- Fix regression in 23.02 leading to error() messages being sent at INFO
    instead of ERR in syslog.
 -- switch/hpe_slingshot - Fix bad instant-on data due to incorrect parsing of
    data from jackaloped.
 -- Fix TresUsageIn[Tot|Ave] calculation for gres/gpumem and gres/gpuutil.
 -- Avoid unnecessary gres/gpumem and gres/gpuutil TRES position lookups.
 -- Fix issue in the gpu plugins where gpu frequencies would only be set if both
    gpu memory and gpu frequencies were set, while one or the other suffices.
 -- Fix reservations group ACL's not working with the root group.
 -- slurmctld - Fix backup slurmctld crash when it takes control multiple times.
 -- Fix updating a job with a ReqNodeList greater than the job's node count.
 -- Fix inadvertent permission denied error for --task-prolog and --task-epilog
    with filesystems mounted with root_squash.
 -- switch/hpe_slingshot - remove the unused vni_pids option.
 -- Fix missing detailed cpu and gres information in json/yaml output from
    scontrol, squeue and sinfo.
 -- Fix regression in 23.02 that causes a failure to allocate job steps that
    request --cpus-per-gpu and gpus with types.
 -- sacct - when printing PLANNED time, use end time instead of start time for
    jobs cancelled before they started.
 -- Fix potentially waiting indefinitely for a defunct process to finish,
    which affects various scripts including Prolog and Epilog. This could have
    various symptoms, such as jobs getting stuck in a completing state.
 -- Hold the job with "(Reservation ... invalid)" state reason if the
    reservation is not usable by the job.
 -- Fix losing list of reservations on job when updating job with list of
    reservations and restarting the controller.
 -- Fix nodes resuming after down and drain state update requests from
    clients older than 23.02.
 -- Fix advanced reservation creation/update when an association that should
    have access to it is composed with partition(s).
 -- auth/jwt - Fix memory leak.
 -- sbatch - Added new --export=NIL option.
 -- Fix job layout calculations with --ntasks-per-gpu, especially when --nodes
    has not been explicitly provided.
 -- Fix X11 forwarding for jobs submitted from the slurmctld host.
 -- When a job requests --no-kill and one or more nodes fail during the job,
    fix subsequent job steps unable to use some of the remaining resources
    allocated to the job.
 -- Fix shared gres allocation when using --tres-per-task with tasks that span
    multiple sockets.

* Changes in Slurm 23.02.2
==========================
 -- Fix regression introduced with the migration to interfaces which caused
    sshare to core dump. Sshare now initialized the priority context correctly
    when calculating with PriorityFlags=NO_FAIR_TREE.
 -- Fix IPMI DCMI sensor initialization.
 -- For the select/cons_tres plugin, improve the best effort GPU to core
    binding, for requests with per job task count (-n) and GPU (--gpus)
    specification.
 -- scrontab - don't update the cron job tasks if the whole crontab file is
    left untouched after opening it with "scrontab -e".
 -- mpi/pmix - avoid crashing when running PMIx v5.0 branch with shmem support.
 -- Fix building switch topology after a reconfig with the correct nodes.
 -- Allow a dynamic node to register with a reason, using --conf, when the
    state is DOWN or DRAIN.
 -- Fix slurmd running tasks before RPC Prolog is run.
 -- Fix slurmd deadlock iff the controller were to give a bad alias_list.
 -- slurmrestd - correctly process job submission field "exclusive" with boolean
    True or False.
 -- slurmrestd - correctly process job submission field "exclusive" with strings
    "true" or "false".
 -- slurmctld/step_mgr - prevent non-allocatable steps from decrementing values
    that weren't previously incremented when trying to allocate them.
 -- auth/jwt - Fix memory leak in slurmctld with 'scontrol token'.
 -- Fix shared gres (shard/mps) leak when using --tres-per-task
 -- Fix sacctmgr segfault when listing accounts with coordinators.
 -- slurmrestd - improve error logging when client connections experience
    polling errors.
 -- slurmrestd - improve handling of sockets in different states of shutdown to
    avoid infinite poll() loop causing a thread to max CPU usage until process
    is killed.
 -- slurmrestd - avoid possible segfault caused by race condition of already
    completed connections.
 -- mpi/cray_shasta - Fix PMI shared secret for hetjobs.
 -- gpu/oneapi - Fix CPU affinity handling.
 -- Fix dynamic nodes powering up when already up after adding/deleting nodes
    when using power_save logic.
 -- slurmrestd - Add support for setting max connections.
 -- data_parser/v0.0.39 - fix sacct --json matching associations from a
    different cluster.
 -- Fix segfault when clearing reqnodelist of a pending job.
 -- Fix memory leak of argv when submitting jobs via slurmrestd or CLI commands.
 -- slurmrestd - correct miscalculation of job argument count that could cause
    memory leak when job submission fails.
 -- slurmdbd - add warning on startup if max_allowed_packet is too small.
 -- gpu/nvml - Remove E-cores from NVML's cpu affinity bitmap when
    "allow_ecores" is not set in SlurmdParameters.
 -- Fix regression from 23.02.0rc1 causing a FrontEnd slurmd to assert fail on
    startup and don't be configured with the appropriate port.
 -- Fix dynamic nodes not being sorted and not being included in topology,
    which resulted in suboptimal dynamic node selection for jobs.
 -- Fix slurmstepd crash due to potential division by zero (SIGFPE) in certain
    edge-cases using the PMIx plugin.
 -- Fix issue with PMIx HetJob requests where certain use-cases would end up
    with communication errors due to incorrect PMIx hostname info setup.
 -- openapi/v0.0.39 - revert regression in job update requests to accept job
    description for changes instead of requiring job description in "job" field.
 -- Fix regression in 23.02.0rc1 that caused a step to crash with a bad
    --gpu-bind=single request.
 -- job_container/tmpfs - skip more in-depth attempt to clean up the base path
    when not required.  This prevents unhelpful, and possibly misleading, debug2
    messages when not using the new "shared" mode.
 -- gpu/nvml - Fix gpu usage when graphics processes are running on the gpu.
 -- slurmrestd - fix regression where "exclusive" field was removed from job
    descriptions and submissions.
 -- Fix issue where requeued jobs had bad gres allocations leading to gres not
    being deallocated at the end of the job, preventing other jobs from using
    those resources.
 -- Fix regression in 23.02.0rc1 which caused incorrect values for
    SLURM_TASKS_PER_NODE when the job requests --ntasks-per-node and --exclusive
    or --ntasks-per-core=1 (or CR_ONE_TASK_PER_CORE) and without requesting
    --ntasks. SLURM_TASKS_PER_NODE is used by mpirun, so this regression
    caused mpirun to launch the wrong number of tasks and to sometimes fail to
    launch tasks.
 -- Prevent jobs running on shards from being canceled on slurmctld restart.
 -- Fix SPANK prolog and epilog hooks that rely on slurm_init() for access to
    internal Slurm API calls.
 -- oci.conf - Populate %m pattern with ContainerPath or SlurmdSpoolDir if
    ContainerPath is not configured.
 -- Removed zero padding for numeric values in container spool directory names.
 -- Avoid creating an unused task-4294967295 directory in container spooldir.
 -- Cleanup container step directories at step completion.
 -- sacctmgr - Fix segfault when printing empty tres.
 -- srun - fix communication issue that prevented slurmctld from connecting to
    an srun running outside of a compute node.

* Changes in Slurm 23.02.1
==========================
 -- job_container/tmpfs - cleanup job container even if namespace mount is
    already unmounted.
 -- When cluster specific tables are be removed also remove the job_env_table
    and job_script_table.
 -- Fix the way bf_max_job_test is applied to job arrays in backfill.
 -- data_parser/v0.0.39 - Avoid dumping -1 value or NULL when step's
    consumed_energy is unset.
 -- scontrol - Fix showing Array Job Steps.
 -- scontrol - Fix showing Job HetStep.
 -- openapi/dbv0.0.38 - Fix not displaying an error when updating QOS or
    associations fails.
 -- data_parser/v0.0.39 - Avoid crash while parsing composite structures.
 -- sched/backfill - fix deleted planned node staying in planned node bitmap.
 -- Fix nodes remaining as PLANNED after slurmctld save state recovery.
 -- Fix parsing of cgroup.controllers file with a blank line at the end.
 -- Add cgroup.conf EnableControllers option for cgroup/v2.
 -- Get correct cgroup root to allow slurmd to run in containers like Docker.
 -- Fix "(null)" cluster name in SLURM_WORKING_CLUSTER env.
 -- slurmctld - add missing PrivateData=jobs check to step ContainerID lookup
    requests originated from 'scontrol show step container-id=<id>' or certain
    scrun operations when container state can't be directly queried.
 -- Automatically sort the TaskPlugin list reverse-alphabetically. This
    addresses an issue where cpu masks were reset if task/affinity was listed
    before task/cgroup on cgroup/v2 systems with Linux kernel < 6.2.
 -- Fix some failed terminate job requests from a 23.02 slurmctld to a 22.05 or
    21.08 slurmd.
 -- Fix compile issues on 32-bit systems.
 -- Fix nodes un-draining after being drained due to unkillable step.
 -- Fix remote licenses allowed percentages reset to 0 during upgrade.
 -- sacct - Avoid truncating time strings when using SLURM_TIME_FORMAT with
    the --parsable option.
 -- data_parser/v0.0.39 - fix segfault when default qos is not set.
 -- Fix regression in 22.05.0rc1 that broke Nodes=ALL in a NodeSet.
 -- openapi/v0.0.39 - fix jobs submitted via slurmrestd being allocated fewer
    CPUs than tasks when requesting multiple tasks.
 -- Fix job not being scheduled on valid nodes and potentially being rejected
    when using parentheses at the beginning of square brackets in a feature
    request, for example: "feat1&[(feat2|feat3)]".
 -- Fix a job being scheduled on nodes that do not match a feature request that
    uses parentheses inside of brackets and requests additional features outside
    of brackets, for example: "feat1&[feat2|(feat3|feat4)]".
 -- Fix regression in 23.02.0rc1 which made --gres-flags=enforce-binding no
    longer enforce optimal core-gpu job placement.
 -- switch/hpe_slingshot - add option to disable VNI allocation per-job.
 -- switch/hpe_slingshot - restrict CXI services to the requesting user.
 -- switch/hpe_slingshot - Only output tcs once in SLINGSHOT_TCS env.
 -- switch/hpe_slingshot - Fix updating LEs and ACs limits.
 -- switch/hpe_slingshot - Use correct Max for EQs and CTs.
 -- switch/hpe_slingshot - support configuring network options per-job.
 -- switch/hpe_slingshot - retry destroying CXI service if necessary.
 -- Fix memory leak caused by job preemption when licenses are configured.
 -- mpi/pmix - Fix v5 to load correctly when libpmix.so isn't in the normal
    lib path.
 -- data_parser/v0.0.39 - fix regression where "memory_per_node" would be
    rejected for job submission.
 -- data_parser/v0.0.39 - fix regression where "memory_per_cpu" would be
    rejected for job submission.
 -- slurmctld - add an assert to check for magic number presence before deleting
    a partition record and clear the magic afterwards to better diagnose
    potential memory problems.
 -- Clean up OCI containers task directories correctly.
 -- slurm.spec - add "--with jwt" option.
 -- scrun - Run under existing job when SLURM_JOB_ID is present.
 -- Prevent a slurmstepd crash when the I/O subsystem has hung.
 -- common/conmgr - fix memory leak of complete connection list.
 -- data_parser/v0.0.39 - fix memory leak when parsing every field in a struct.
 -- job_container/tmpfs - avoid printing extraneous error messages when running
    a spank plugin that implements slurm_spank_job_prolog() or
    slurm_spank_job_epilog().
 -- Fix srun < 23.02 always getting an "exact" core allocation.
 -- Prevent scontrol < 23.02 from setting MaxCPUsPerSocket to 0.
 -- Add ScronParameters=explicit_scancel and corresponding scancel --cron
    option.

* Changes in Slurm 23.02.0
==========================
 -- scrun - Install into /bin instead of /sbin, which also ensures it is
    included in the RPM packages.
 -- data_parser/v0.0.39 - avoid erroring on unknown association id.
 -- data_parser/v0.0.39 - avoid fatal while dumping TRES values.
 -- Improve error message for using --cpus-per-gpus without any GPUs.
 -- switch/hpe_slingshot - fix rolling upgrades from 22.05 to 23.02
 -- Change cgroup/v1 behavior when waiting for a pid to be moved by waiting some
    time between retries. This helps with stray cgroup dirs on slow kernels.
 -- Workaround a bug in kernels < 3.18 with cpuset which randomly leaves stray
    cgroups after jobs have ended.
 -- Rebuild the prepacked buf going to the slurmstepd if TRES changed.
 -- Add new 'make clean-contrib' target to build system to clean contribs dir.
 -- Treat newlines as delimeters for hostlist_create(). (This is used internally
    by "scontrol show hostlist" and for handling SLURM_JOB_NODELIST.)
 -- scontrol - Print "Invalid job id specified" for 'scontrol show step ...'
    when the job does not exist, rather than "Unexpected error".
 -- Handle mismatched TRES count from the slurmstepd's instead of fatal()'ing.
 -- Fix GPU setup on CRAY systems when using the CRAY_CUDA_MPS environment
    variable. GPUs are now correctly detected in such scenarios.
 -- data_parser/v0.0.39 - improve flag handling to avoid flags having bits left
    unset after parsing.
 -- topology/tree - Add new TopologyParam=SwitchAsNodeRank option to reorder
    nodes based on switch layout. This can be useful if the naming convention
    for the nodes does not natually map to the network topology.
 -- openapi/v0.0.38 - avoid signed math errors while dumping node resources.
 -- openapi/dbv0.0.39 - avoid error while dumping account coordinators.
 -- data_parser/v0.0.39 - correct dump of stats backfill mean table size.
 -- openapi/dbv0.0.39 - avoid error while adding account coordinators.
 -- scrun - catch invalid values of environment SCRUN_FILE_DEBUG.
 -- scrun - avoid memory leak due to invalid annotation.
 -- scrun - avoid false error when pidfile not requested.
 -- Do not constrain memory in task/cgroup unless CR_Memory is set.
 -- Fix the job prolog not running for jobs with the interactive step
    (salloc jobs with LaunchParameters=use_interactive_step set in slurm.conf)
    that were scheduled on powered down nodes. The prolog not running also
    broke job_container/tmpfs, pam_slurm_adopt, and x11 forwarding.
 -- swich/hpe_slingshot - fix issues using 22.05 commands with 23.02 slurmd.
 -- swith/hpe_slingshot - avoid slurmd segfault if there is a protocol error.
 -- task/affinity - fix slurmd segfault when request launch task requests of
    type "--cpu-bind=[map,mask]_cpu:<list>" have no <list> provided.
 -- salloc/sbatch/srun - error out if "--cpu-bind=[map,mask]_cpu:<list>" fails
    to extract a list of cpus.
 -- job_container/tmpfs - cleanup job_mount when container creation fails.
 -- job_container/tmpfs - don't attempt to remove job_mount directory when it is
    still mounted.
 -- Fix regression in rc1 causing sacctmgr to segfault when printing unrelated
    fields.
 -- jobcomp/kafka - don't use the purge API if librdkafka < v1.0.0.
 -- Change shown start time of pending array job to be start time of earliest
    pending array task.
 -- job_container/tmpfs - ensure that step_ns_fd is closed before cleaning up
    the namespace.
 -- Fix assert when suspending or requeueing array tasks with scontrol.
 -- Fix federated job submissions.
 -- Fix sinfo returning non-zero exit code when querying specific clusters.
 -- openapi/v0.0.39 - correct OpenAPI schema for job update requests.
 -- openapi/v0.0.39 - prevent assertion on jobs endpoint by altering how the
    "memory_per_cpu" and "memory_per_node" fields are managed.
 -- Fix regression in 23.02.0rc1 which caused slurmctld to segfault when
    gres is added or removed in the configuration.
 -- Removed the default setting for GpuFreqDef. If unset, no attempt to change
    the GPU frequency will be made if --gpu-freq is not set for the step.
 -- Fixed GpuFreqDef option. When set in slurm.conf, it will be used if
    --gpu-freq was not explicitly set by the job step.
 -- Update database index for usage tables used for archive and purge.
 -- Fix configure script on FreeBSD.

* Changes in Slurm 23.02.0rc1
=============================
 -- Make scontrol reconfigure and sending a SIGHUP to the slurmctld behave the
    same. If you were using SIGHUP as a 'lighter' scontrol reconfigure to rotate
    logs please update your scripts to use SIGUSR2 instead.
 -- Add Account and QOS name type specifications for sprio output formatting.
 -- openapi/[db]v0.0.36 - plugins have been removed.
 -- openapi/[db]v0.0.37 - tagged as deprecated.
 -- openapi/[db]v0.0.39 - forked plugin openapi/[db]v0.0.38.
 -- Add SRUN_{ERROR,INPUT,OUTPUT} input environment variables for --error,
    --input and --output options respectively.
 -- Add MaxCPUsPerSocket to partition configuration, similar to MaxCPUsPerNode.
 -- openapi/v0.0.39 - change nice request field from string to integer.
 -- sacctmgr - no longer force updates to the AdminComment, Comment, or
    SystemComment to lower-case.
 -- openapi/dbv0.0.39 - more graceful handling of POSTs when expected field
    lists are missing or unparsable.
 -- burst_buffer/lua - pass the job's UID and GID to slurm_bb_pre_run,
    slurm_bb_data_in, slurm_bb_post_run, and slurm_bb_data_out in
    burst_buffer.lua.
 -- openapi/v0.0.39 - add new field default_memory_per_node for partitions.
 -- Change cloud nodes to show by default. PrivateData=cloud is no longer
    needed.
 -- Add -F/--future option to sinfo to display future nodes.
 -- openapi/dbv0.0.39 - resolve job user from uid when user is not provided.
 -- sacct/sinfo/squeue - use openapi/[db]v0.0.39 for --json and --yaml modes.
 -- sdiag - Add --json and --yaml arguments.
 -- Cgroupv2 plugin will not show "Controller is not enabled" error when started
    from cmd.
 -- sreport - Count planned (FKA reserved) time for jobs running in IGNORE_JOBS
    reservations. Previously was lumped into IDLE time.
 -- job_container/tmpfs - support running with an arbitrary list of private
    mount points (/tmp and /dev/shm are nolonger required, but are the default).
 -- sacct - Rename 'Reserved' field to 'Planned' to match sreport and the
    nomenclature of the 'Planned' node.
 -- oci.conf: Add %U as OCI pattern replacement to numeric user id.
 -- cli_filter/lua, jobcomp/lua, job_submit/lua - expose all Slurm error codes.
 -- jobcomp/elasticsearch - expose features field.
 -- jobcomp/elasticsearch - post non-NULL but empty string fields.
 -- Make advanced reservation flag MAINT not replace nodes, similar to
    STATIC_ALLOC
 -- NVML - Add usage gathering for Nvidia gpus.
 -- node_features plugins - invalid users specified for AllowUserBoot will now
    result in fatal() rather than just an error.
 -- job_container/tmpfs - Set more environment variables in InitScript.
 -- Make all cgroup directories created by Slurm owned by root.
 -- sbatch - add parsing of #PBS -d and #PBS -w.
 -- Avoid network receive error on heavily loaded machines where the network
    operation can be restarted.
 -- Deprecate AllowedKmemSpace, ConstrainKmemSpace, MaxKmemPercent, and
    MinKmemSpace.
 -- accounting_storage/mysql - change purge/archive to calculate record ages
    based on end time, rather than start or submission times.
 -- Add strigger --draining and -R/--resume options.
 -- Allow updating SLURM_NTASKS environment variable (from scontrol update job).
 -- Limit het job license requests to the leader job only.
 -- Change --oversubscribe and --exclusive to be mutually exclusive for job
    submission. Job submission commands will now fatal if both are set.
    Previously, these options would override each other, with the last one in
    the job submission command taking effect.
 -- job_submit/lua - add support for log_user() from slurm_job_modify().
 -- openapi/v0.0.39 - add submission of job->prefer value.
 -- Fix tasks binding to GPUs when using --ntasks-per-gpu and GPUs have
    different core/socket affinity.
 -- Add support for padding StdOut/StdErr/StdIn format specifiers to scontrol
    show job.
--  Fix sacctmgr qos filter to properly select assocs by qos inheritance rules.
 -- Prevent slurmctld from starting with invalid jobcomp plugin.
 -- Fix `sinfo -i` and interactive `scontrol> show node` replies for nodes
    going from powering down to powered down state.
 -- auth/jwt - support Azure (among other) JWKS files by preferring x5c field
    over locally reconstructing an RSA256 key file.
 -- auth/jwt - add optional AuthAltParameters field "userclaimfield=" to allow
    overriding "sun" claim to site specific field.
 -- scontrol - Requested TRES and allocated TRES will now always be printed when
    showing jobs, instead of one TRES output that was either the requested or
    allocated.
 -- Improve scheduling performance for dynamic nodes and nodes with features by
    consolidating like config records.
 -- Expose argc and entire argv to job_submit and cli_filter plugins for jobs
    submitted via salloc/srun or sbatch <script> (not via --wrap).
 -- Job command/script name is now packed with no arguments, thus clients
    displaying job information will only show the command/script name.
 -- Make acct_gather_energy plugins handle slurmd reconfiguration and support
    restart for gpu and xcc implementations.
 -- Fix --slurmd-debug to treat its argument as log level (as documented)
    instead of previous approach with it being an offset to configured log
    level.
 -- srun --slurmd-debug option is now only allowed for root and SlurmUser
 -- Change 'scontrol requeue' behavior for scron jobs to use cronspec to
    determine the next start time.
 -- serializer/url-encoded - interpet query keys without a value (flags) to be
    true instead of NULL.
 -- Add --autocomplete= option to all client commands.
 -- Allow for concurrent processing of job_submit_g_submit() and
    job_submit_g_modify() calls.
 -- Allow jobs to queue even if the user is not in AllowGroups when
    EnforcePartLimits=no is set. This ensures consistency for all the Partition
    access controls, and matches the documented behavior for EnforcePartLimits.
 -- Fix srun tasks binding/allocation when using --ntasks-per-core option. Now,
    --ntasks-per-core=1 implies --cpu-bind=cores and --ntasks-per-core>1 implies
    --cpu-bind=threads.
 -- salloc/sbatch/srun check and abort if ntasks-per-core > threads-per-core.
 -- burst_buffer/lua - fix building heterogeneous job scripts where the
    directive is not the default "BB_LUA".
 -- If a node is in a reservation add the reservation name to it for
    scontrol/sinfo/sview.
 -- common/cgroup - improve possible TOCTOU situation when reading cgroup files.
 -- slurmctld will fatal() when reconfiguring the job_submit plugin fails.
 -- Add ResumeAfter=<secs> option to "scontrol update nodename=".
 -- slurmrestd - switch to returning UNPROCESSABLE_CONTENT when parsing
    succeeds but an error about the actual contents causes a request to fail.
 -- slurmrestd - queries that result in empty contents will now be treated as
    SUCCESS. While the query worked, nothing was returned, which allows callers
    to determine how to then proceed.
 -- Add PowerDownOnIdle partition option.
 -- Make it so the [Allow|Deny]Accounts parameter for a partition is
    hierarchical.
 -- Add the ability for a add (+=) or remove (-=) nodes from a reservation
 -- Fix several problems when creating/editing partitions in sview.
 -- Enhanced burst_buffer.lua - pass UID and GID to most hooks; pass a table
    containing detailed job information to many hooks. See
    etc/burst_buffer.lua.example for a complete list of changes.
 -- Add a new "nodes=" argument to scontrol setdebug to allow the debug level
    on the slurmd processes to be temporarily altered.
 -- Add InfluxDBTimeout parameter to acct_gather.conf.
 -- job_container/tmpfs - add support for expanding %h and %n in BasePath.
 -- Prevent job submission/update with afterok/afternotok dependency set to
    an unknown jobid.
 -- Change to a new FAIL_SIGNAL job state reason (instead of FAIL_LAUNCH) for
    jobs that have raised a signal on setup.
 -- Add "[jobid.stepid]" prefix from slurmstepd and "slurmscriptd" prefix from
    slurmcriptd to Syslog logging. Previously was only happening when logging
    to a file.
 -- Make it so scrontab prints client-side the job_submit() err_msg (which can
    be set i.e. by using the log_user() function for the lua plugin).
 -- Remove ability for reservation to have STATIC_ALLOC or MAINT flags and
    REPLACE[_DOWN] flags simultaneously.
 -- Accept only one reoccurring flag when creating/updating any reservation.
 -- Remove ability to update a reservation to have a reoccurring flag if it
    is a floating reservation.
 -- squeue - removed unused '%s' and 'SelectJobInfo' formats.
 -- Add purge and archive functionality for job environment and job batch script
    records.
 -- srun - return an error if step suffers a node failure.
 -- squeue - align print format for exit and derived codes with that of other
    components (<exit_status>:<signal_number>).
 -- Add new SlurmctldParameters=validate_nodeaddr_threads=<number> option to
    allow concurrent hostname resolution at slurmctld startup.
 -- Have 'scontrol show hostlist -' read from stdin.
 -- Extend support for Include files to all "configless" client commands.
 -- Make node weight usable for powered down and rebooting nodes.
 -- node_features plugins - node_features_p_reboot_weight() function removed.
 -- Removed 'launch' plugin.
 -- Add "Extra" field to job to store extra information other than a comment.
 -- Add new AccountingStoreFlags=job_extra option to store a job's extra field
    in the database.
 -- slurmrestd - add option to allow rest_auth/local to switch user id on first
    user connection.
 -- oci.conf - add DisableHooks option.
 -- oci.conf - add SrunPath and SrunArgs options.
 -- oci.conf - add StdIODebug, SyslogDebug, FileDebug and DebugFlags options to
    allow controlling container specific logging.
 -- oci.conf - remove requirement of RunTimeQuery when RunTimeRun is set.
 -- slurmstepd - cleanup generated environment file for containers when step
    completes instead of deferring cleanup to OCI runtime.
 -- oci.conf - add configuration option "IgnoreFileConfigJson=" to allow a site
    to choose to ignore config.json.
 -- oci.conf - Add PID (%p) pattern replacement.
 -- slurmrestd - correct ordering issue of saving changes to a container's
    modified config.json where config changes by job modifing plugins would be
    silently lost.
 -- slurmstepd - merge container config.json environment into job environment
    and then overwrite config.json environment. Avoids instance where processes in
    container will not have access to job environment variables.
 -- slurmstepd - defer creating container environment file until after all
    plugin based modifications to the job environment are complete.
 -- oci.conf - modify configuration option "CreateEnvFile=" to support creating
 -- oci.conf - add RunTimeEnvExclude and EnvExclude.
 -- slurmstepd - fix container pattern bundle path replacement (%b) with
    bundle path instead of spool dir path.
 -- oci.conf - add MountSpoolDir.
 -- slurmstepd - create per task spool directory per container to avoid
    conflicts when there are more than 1 container tasks on any given node.
 -- mpi/pmix - set PMIX_SERVER_TMPDIR to container spool directory instead of
    slurmd spool directory which caused PMIx to fail to load in containers.
 -- Add new "defer_batch" option to SchedulerParameters to only defer
    scheduling for batch jobs.
 -- Reject jobs submitted with impossible --time, --deadline, and --begin
    combinations at submission time
 -- Add new DebugFlags option 'JobComp' to replace 'Elasticsearch'.
 -- sacct - Add --array option to expand job arrays and display array tasks on
    separate lines.
 -- Fix jobs submitted with a deadline never being cleared after the
    reservation is done.
 -- Change srun/salloc to wait indefinitely for their allocations to be ready.
 -- Do not attempt to "fix" malformed input to 'scontrol show hostlist'.
 -- RSMI - Add usage gathering for AMD gpus (requires ROCM 5.5+).
 -- Add job's allocated nodes, features, oversubscribe, partition, and
    reservation to SLURM_RESUME_FILE output for power saving.
 -- Automatically create directories for stdout/stderr output files. Paths may
    use %j and related substitution characters as well.
 -- Add --tres-per-task to salloc/sbatch/srun.
 -- Add configurable job requeue limit parameter - MaxBatchRequeue - in
    slurm.conf to permit changes from the old hard-coded value of 5.
 -- Add a new "nodes=" argument to "scontrol setdebugflags" as well.
 -- slurmd - add --authinfo option to allow AuthInfo options to be changed
    during the configless startup.
 -- helpers.conf - Allow specification of node specific features.
 -- helpers.conf - Allow many features to one helper script.
 -- Allow nodefeatures plugin features to work with cloud nodes.
 -- squeue - removed --array-unique option.
 -- openapi/v0.0.39 - expand job stderr, stdin, and stdout path replacement
    symbols when dumping job information via dump_job_info().
 -- Make slurmstepd cgroups constrained by total configured memory from
    slurm.conf (NodeName=<> RealMemory=#) instead of total physical memory.
 -- node_features/helpers - add support for the OR and parentheses operators
    in a --constraint expression.
 -- Fix race condition between PMIx authentication and slurmstepd task launches
    that can lead to job launch failures.
 -- fatal() when [Prolog|Epilog]Slurmctld are defined but not executable.
 -- slurmctld - Add new RPC rate limiting feature. This is enabled through
    SlurmctldParameters=rl_enable, otherwise disabled by default.
 -- Validate node registered active features are a super set of node's
    currently active changeable features.
 -- On clusters without any PrologFlags options, batch jobs with failed prologs
    nolonger generate an output file.
 -- sreport - print "Top ALL Users" for Top User report when topcount = -1.
 -- Add SLURM_JOB_START_TIME and SLURM_JOB_END_TIME environment variables.
 -- Add SuspendExcStates option to slurm.conf to avoid suspending/powering down
    specific node states.
 -- job_container/tmpfs - Add "Shared" option to support shared namespaces.
    This allows autofs to work with the job_container/tmpfs plugin when enabled.
 -- Fix incorrect min node estimation for pending jobs as displayed by client
    commands (e.g. squeue, scontrol show job).
 -- Add support for DCMI power readings in IPMI plugin.
 -- Prevent the backfill counter of tested jobs being reset by sdiag -r.
 -- sacctmgr - Add --json and --yaml arguments.
 -- openapi/v0.0.39 - Conversion of parsing and dumping of data to
    data_parser/v0.0.39 plugins. Significant restructuring of OpenAPI
    specification compared to previous plugin version.
 -- openapi/dbv0.0.39 - Conversion of parsing and dumping of data to
    data_parser/v0.0.39 plugins. Significant restructuring of OpenAPI
    specification compared to previous plugin version.
 -- Validate --gpu-bind options more strictly.
 -- Fix slurmd segfault on bad EnergyIPMIPowerSensors= parameter.
 -- Allow for --nodelist to contain more nodes than required by --nodes.
 -- Add missing logic for JobCompParams configuration key pair to be available
    for consumers of the get/print/write configuration API functions.
 -- mpi/cray_shasta - Add new PALS/PMI environment variables.
 -- Add cache around calls to getnameinfo().
 -- Add CommunicationParameters=getnameinfo_cache_timeout to tune or disable the
    getnameinfo cache.
 -- Limit the number of successive times a batch job may be requeued due to a
    prolog failure. This limit is defined by the value of the max_batch_requeue
    parameter (default 5). Jobs over this limit will be put on admin hold.
 -- Rename "nodes" to "nodes_resume" in SLURM_RESUME_FILE job output.
 -- Rename "all_nodes" to "all_nodes_resume" in SLURM_RESUME_FILE output.
 -- Add new PrologFlags=ForceRequeueOnFail option to automatically requeue
    batch jobs on Prolog failures regardless of the job --requeue setting.
 -- Add HealthCheckNodeState=NONDRAINED_IDLE option.
 -- Add 'explicit' to Flags in gres.conf
 -- Improve validation of --constraint expression syntax.
 -- srun - support job array ids as an argument to --jobid.
 -- Add jobcomp/kafka plugin.
 -- Automatically filter out E-Cores on Intel processors to avoid issues from
    differing threads-per-core values within a single socket.
 -- Add LaunchParameters=ulimit_pam_adopt, which enables setting RLIMIT_RSS in
    adopted processes.
 -- Add new PreemptParameters=reclaim_licenses option which will allow higher
    priority jobs to preempt jobs to free up used licenses. (This is only
    enabled for with PreemptModes of CANCEL and REQUEUE, as Slurm cannot
    guarantee suspended jobs will release licenses correctly.)
 -- Make it so that the REQUEST_STEP_STAT handler only polls jobacct_gather
    information once per RPC. This improves sstat results performance time.
 -- Fix sbcast --force option to work with --send-libs option. Now when --force
    is set, library directores transmitted will overwrite pre-existing libraries
    that were previously transmitted.
 -- hpe/slingshot - Add support for user requestible job VNIs.
 -- hpe/slingshot - Add support for user requestible single node vnis.
 -- hpe/slingshot - Add support for the instant-on feature.
 -- Add ability to update SuspendExc* parameters with scontrol.
 -- Add ability to preserve SuspendExc* parameters on reconfig with
    ReconfigFlags=KeepPowerSaveSettings.
 -- Add ability to restore SuspendExc* parameters on restart with slurmctld -R
    option.
 -- Fix leaving allocated gres on a non-cloud node after being allocated
    from a powered down state after a slurmctld restart.
 -- 'scontrol update job' can now set a GRES specification to "0" to effectively
    clear a GRES speficiation from a job.
 -- Jobs with old GRES that are no longer configured in any configuration files
    can now be succesfully updated to use currently configured GRES.
 -- Add tres_per_node to resource_allocation_response_msg to fix srun jobs
    running with outdated GRES. This is necessary for srun jobs whose GRES are
    updated while they are pending. By having tres_per_node in the
    resourece_allocation_response_msg, slurmctld can send back the correct and
    updated GRES, whereas without it, the srun job would use the old GRES.
 -- Cleaned up various "warning", "Warning", and "WARNING" messages with a new
    warning() logging call. All will now print as "warning: ...".
 -- Add SLURM_JOB_OVERSUBSCRIBE environment variable for Epilog, Prolog,
    EpilogSlurmctld, PrologSlurmctld, and mail ouput.
 -- Fix node reason time skew when setting a reboot message.
 -- Append ResumeTimeout message to an existing node reason instead of always
    clearing it first.
 -- slurmrestd - added support for Bearer Authentication using auth/jwt.
 -- Add check to detect invalid HetJob component and abort job if identified.
 -- sched/backfill - fix job test against advanced reservations if job uses a
    preemptable QOS with Flags=NoReserve.
 -- New command scrun has been added. scrun acts as an Open Container Initiative
    (OCI) runtime proxy to run containers seamlessly via Slurm.
 -- Added support for Linux kernel user namespaces. Process user and group ids
    are no longer used unless explicitly requested as an argument. They are
    left as SLURM_AUTH_NOBODY (99) by default.

* Changes in Slurm 22.05.12
===========================

* Changes in Slurm 22.05.11
===========================
 -- Prevent message extension attacks that could bypass the message hash.
    CVE-2023-49933.
 -- Prevent NULL pointer dereference on size_valp overflow. CVE-2023-49936.
 -- Prevent double-xfree() on error in _unpack_node_reg_resp().
    CVE-2023-49937.
 -- Prevent modified sbcast RPCs from opening a file with the wrong group
    permissions. CVE-2023-49938.

* Changes in Slurm 22.05.10
===========================
 -- Fix filesystem handling race conditions that could lead to an attacker
    taking control of an arbitrary file, or removing entire directories'
    contents. CVE-2023-41914.

* Changes in Slurm 22.05.9
==========================
 -- Allocate correct number of sockets when requesting gres and running with
    CR_SOCKET*.
 -- Fix handling of --prefer for job arrays.
 -- Fix regression in 22.05.5 that causes some jobs that request
    --ntasks-per-node to be incorrectly rejected.
 -- Fix slurmctld crash when a step requests fewer tasks than nodes.
 -- Fix incorrect task count in steps that request --ntasks-per-node and a node
    count with a range (e.g. -N1-2).
 -- Fix some valid step requests hanging instead of running.
 -- slurmrestd - avoid possible race condition which would cause slurmrestd to
    silently no longer accept new client connections.
 -- Fix GPU setup on CRAY systems when using the CRAY_CUDA_MPS environment
    variable. GPUs are now correctly detected in such scenarios.
 -- Fix the job prolog not running for jobs with the interactive step
    (salloc jobs with LaunchParameters=use_interactive_step set in slurm.conf)
    that were scheduled on powered down nodes. The prolog not running also
    broke job_container/tmpfs, pam_slurm_adopt, and x11 forwarding.
 -- task/affinity - fix slurmd segfault when request launch task requests of
    type "--cpu-bind=[map,mask]_cpu:<list>" have no <list> provided.
 -- sched/backfill - fix segfault when removing a PLANNED node from system.
 -- sched/backfill - fix deleted planned node staying in planned node bitmap.
 -- Fix nodes remaining as PLANNED after slurmctld save state recovery.
 -- Fix regression in 22.05.0rc1 that broke Nodes=ALL in a NodeSet.
 -- Fix incorrect memory constraint when receiving a job from 20.11 that uses
    cpu count for memory calculation.
 -- openapi/v0.0.[36-38] - avoid possible crash from jobs submitted with argv.
 -- openapi/v0.0.[36-38] - avoid possible crash from rejected jobs submitted
    with batch_features.
 -- srun - fix regression in 22.05.7 that prevented slurmctld from connecting
    to an srun running outside of a compute node.

* Changes in Slurm 22.05.8
==========================
 -- Fix potential deadlock at slurmctld startup when job has invalid qos.
 -- Avoid unnecessary call to clusteracct_storage_g_cluster_tres() when pinging
    dynamic nodes. This avoids significant slowdowns for slurmctld when
    ping_nodes() calls all nodes to re-register.
 -- openapi/dbv0.0.3[6-8] - fix segfault that could arrise from Slurm database
    connnection failing.
 -- Fix regression introduced in 22.05.0rc1 when updating a NodeName=<nodelist>
    with NodeAddr and/or NodeHostname if the specified nodelist wasn't sorted.
 -- openapi/v0.0.38 - change type of nice field for job submissions to integer
    from string.
 -- openapi/v0.0.38 - add oversubscribe option to job submission properties.
 -- openapi/v0.0.38 - fix incorrect data used to populate "time/start" field
    for jobs.
 -- openapi/dbv0.0.38 - avoid dumping failure if preempt qos with level 0 is
    provided by slurmdbd query.
 -- Avoid an fd leak when lib dir for sbcast fails to be created.
 -- common/slurmdbd_pack - fix env and script hash when unpacking a 21.08
    dbd_job_start_msg_t.
 -- Fix a race between job_container/tmpfs, cncu, x11 setup and adoption of pids
    in cray with pam_slurm_adopt.

* Changes in Slurm 22.05.7
==========================
 -- Fix slurmctlds in a federation not recovering a lost connection until a
    slurmctld restart or a federation update.
 -- Fix incorrectly rejecting jobs that request GRES on multiple sockets and
    --gres-flags=enforce-binding.
 -- Fix job core selection with --gres-flags=enforce-binding: this fixes cases
    where enforce-binding was not respected.
 -- openapi/v0.0.38 - set assoc_id resolution failure as a debug log instead of
    an error log.
 -- Fix issues when running in FrontEnd mode.
 -- Fix srun and salloc I/O code to set keepaliveinterval/keepalivetime on
    connections.
 -- Fix overwrite race of cont_id in cgroup/v2 when using task/cgroup with
    proctrack/cray_aries.
 -- Fix node remaining allocated after a reconfig with a completing job that
    has an EpilogSlurmctld instance still running.
 -- openapi/dbv0.0.38 - fix a cast to a wrong type
 -- openapi/dbv0.0.38 - correct issues where modifying association fields were
    ignored.
 -- openapi/dbv0.0.38 - correct issue where 16 bit integers were not able to be
    unset.
 -- openapi/dbv0.0.38 - correct issue where 16 & 32 bit integers were not able
    to be unset.
 -- Fix 'scontrol show hostlist' to read off a pipe correctly.
 -- Fix 'scontrol reconfigure' with configless enabled to send updated configs
    to 21.08 nodes correctly. (22.05 nodes are unaffected.)
 -- Fix assertion and locks for dynamic node registrations with rpc queueing.
 -- rest_auth/local - avoid logging root access as an error but instead as a
    normal info log.
 -- slurmrestd - switch users earlier on startup to avoid sockets being made as
    root.
 -- slurmrestd - disable umask during socket creation as the authentication is
    handled by Slurm instead of file ACLs.
 -- Fix sbcast, srun --bcast, sstat not working with cloud/dynamic nodes.
 -- sacctmgr - Allow removal of user's default account when AllowNoDefAcct=yes.
 -- Fix segfault caused by race condition when a reconfiguration is requested
    while slurmd initializes.
 -- openapi/v0.0.38 - avoid divison by zero causing slurmrestd to crash during
    diag queries.
 -- Update default values for text/blob columns in the database if upgrading
    to MariaDB >= 10.2.1 from a pre-10.2.1 version or from MySQL to avoid
    sacctmgr failures.
 -- Fix several minor memory leaks in the cgroup/v2 plugin.
 -- Fix possible issue when enabling controllers with long names in cgroup/v2.
 -- Fix potential segfault in slurmd when using acct_gather_energy/ipmi.
 -- Fix controller being able to contact non-addressable step hosts.
 -- Allow setting SuspendTime to -1 when used on a partition.
 -- openapi/v0.0.38 - fix maximum_memory_per_node description typo.
 -- openapi/v0.0.38 - add maximum_memory_per_cpu to GET /partitions
 -- openapi/v0.0.38 - add default_memory_per_node to GET /partitions
 -- Fix dynamic node losing dynamic node status when changing state to FUTURE.
 -- Fix adoption into most recent job in pam_slurm_adopt and cgroup/v2.
 -- gres/shard - Fix plugin_name definition to print correctly in debug lines.

* Changes in Slurm 22.05.6
==========================
 -- Fix a partition's DisableRootJobs=no from preventing root jobs from working.
 -- Fix the number of allocated cpus for an auto-adjustment case in which the
    job requests --ntasks-per-node and --mem (per-node) but the limit is
    MaxMemPerCPU.
 -- Fix POWER_DOWN_FORCE request leaving node in completing state.
 -- Do not count magnetic reservation queue records towards backfill limits.
 -- Clarify error message when --send-libs=yes or BcastParameters=send_libs
    fails to identify shared library files, and avoid creating an empty
    "<filename>_libs" directory on the target filesystem.
 -- Fix missing CoreSpec on dynamic nodes upon slurmctld restart.
 -- Fix node state reporting when using specialized cores.
 -- Fix number of CPUs allocated if --cpus-per-gpu used.
 -- Add flag ignore_prefer_validation to not validate --prefer on a job.
 -- Fix salloc/sbatch SLURM_TASKS_PER_NODE output environment variable when the
    number of tasks is not requested.
 -- Permit using wildcard magic cookies with X11 forwarding.
 -- cgroup/v2 - Add check for swap when running OOM check after task
    termination.
 -- Fix deadlock caused by race condition when disabling power save with a
    reconfigure.
 -- Fix memory leak in the dbd when container is sent to the database.
 -- openapi/dbv0.0.38 - correct dbv0.0.38_tres_info.
 -- Fix node SuspendTime, SuspendTimeout, ResumeTimeout being updated after
    altering partition node lists with scontrol.
 -- jobcomp/elasticsearch - fix data_t memory leak after serialization.
 -- Fix issue where '*' wasn't accepted in gpu/cpu bind.
 -- Fix SLURM_GPUS_ON_NODE for shared GPU gres (MPS, shards).
 -- Add SLURM_SHARDS_ON_NODE environment variable for shards.
 -- Fix srun error with overcommit.
 -- Fix bug in core selection for the default cyclic distribution of tasks
    across sockets, that resulted in random task launch failures.
 -- Fix core selection for steps requesting multiple tasks per core when
    allocation contains more cores than required for step.
 -- gpu/nvml - Fix MIG minor number generation when GPU minor number
    (/dev/nvidia[minor_number]) and index (as seen in nvidia-smi) do not match.
 -- Fix accrue time underflow errors after slurmctld reconfig or restart.
 -- Surpress errant errors from prolog_complete about being unable to locate
    "node:(null)".
 -- Fix issue where shards were selected from multiple gpus and failed to
    allocate.
 -- Fix step cpu count calculation when using --ntasks-per-gpu=.
 -- Fix overflow problems when validating array index parameters in slurmctld
    and prevent a potential condition causing slurmctld to crash.
 -- Remove dependency on json-c in slurmctld when running with power saving.
    Only the new "SLURM_RESUME_FILE" support relies on this, and it will be
    disabled if json-c support is unavailable instead.

* Changes in Slurm 22.05.5
==========================
 -- Fix node becoming IDLE while in an invalid registration state.
 -- When a job is completing avoid potential dereference.
 -- Avoid setting preempt_time for a job erroneously.
 -- Fix situation where we don't requeue correctly when a job is finishing.
 -- job_container/tmpfs - Avoid leaking namespace file descriptor.
 -- common/slurm_opt - fix memory leak in client commands or slurmrestd when the
    --chdir option is set after option reset.
 -- openapi/dbv0.0.38 - gracefully handle unknown associations assigned to jobs.
 -- openapi/dbv0.0.38 - query all associations to avoid errors while dumping
    jobs.
 -- Load hash plugin at slurmstepd launch time to prevent issues loading the
    plugin at step completion if the Slurm installation is upgraded.
 -- Fix gcc 12.2.1 compile errors.
 -- Fix future magnetic reservations preventing heterogeneous jobs from
    starting.
 -- Prevent incorrect error message from being generated for operator/admins
    using the 'scontrol top' command.
 -- slurmrestd - correct issue where larger requests could result in a single
    byte getting removed from inside of the POST request.
 -- Fix regression in task count calculation for --ntasks-per-gpu with multiple
    nodes.
 -- Update nvml plugin to match the unique id format for MIG devices in new
    Nvidia drivers.
 -- Fix segfault on backup slurmdbd if no QoS is present in DB.
 -- Fix clang 11 compile errors.
 -- Fix task distribution calculations across sockets with
    --distribution=cyclic.
 -- Fix task distribution calculations with --ntasks-per-gpu specified without
    an explicit --ntasks value.
 -- Fix job arrays not showing correct features.
 -- Fix job having wrong features used when using preferred features.
 -- Fix task/cray_aries error finishing an interactive step, avoiding correct
    cleanup.
 -- Correctly set max_nodes when --ntasks=1.
 -- Fix configure script on FreeBSD.

* Changes in Slurm 22.05.4
==========================
 -- Fix return code from salloc when the job is revoked prior to executing user
    command.
 -- Fix minor memory leak when dealing with gres with multiple files.
 -- Fix printing for no_consume gres in scontrol show job.
 -- sinfo - Fix truncation of very large values when outputting memory.
 -- Fix multi-node step launch failure when nodes in the controller aren't in
    natural order. This can happen with inconsistent node naming (such as
    node15 and node052) or with dynamic nodes which can register in any order.
 -- job_container/tmpfs - Prevent reading the plugin config multiple times per
    step.
 -- Fix wrong attempt of gres binding for gres w/out cores defined.
 -- Fix build to work with '--without-shared-libslurm' configure flag.
 -- Fix power_save mode when repeatedly configuring too fast.
 -- Fix sacct -I option.
 -- Prevent jobs from being scheduled on future nodes.
 -- Fix memory leak in slurmd happening on reconfigure when CPUSpecList used.
 -- Fix sacctmgr show event [min|max]cpus.
 -- Fix regression in 22.05.0rc1 where a prolog or epilog that redirected stdout
    to a file could get erroneously killed, resulting in job launch failure
    (for the prolog) and the node being drained.
 -- cgroup/v1 - Make a static variable to remove potential redundant checking
    for if the system has swap or not.
 -- cgroup/v1 - Add check for swap when running OOM check after task
    termination.
 -- job_submit/lua - add --prefer support
 -- cgroup/v1 - fix issue where sibling steps could incorrectly be accounted as
    OOM when step memory limit was the same as the job allocation. Detect OOM
    events via memory.oom_control oom_kill when exposed by the kernel instead of
    subscribing notifications with eventfd.
 -- Fix accounting of oom_kill events in cgroup/v2 and task/cgroup.
 -- Fix segfault when slurmd reports less than configured gres with links after
    a slurmctld restart.
 -- Fix TRES counts after node is deleted using scontrol.
 -- sched/backfill - properly handle multi-reservation HetJobs.
 -- sched/backfill - don't try to start HetJobs after system state change.
 -- openapi/v0.0.38 - add submission of job->prefer value.
 -- slurmdbd - become SlurmUser at the same point in logic as slurmctld to match
    plugins initialization behavior. This avoids a fatal error when starting
    slurmdbd as root and root cannot start the auth or accounting_storage
    plugins (for example, if root cannot read the jwt key).
 -- Fix memory leak when attempting to update a job's features with invalid
    features.
 -- Fix occasional slurmctld crash or hang in backfill due to invalid pointers.
 -- Fix segfault on Cray machines if cgroup cpuset is used in cgroup/v1.

* Changes in Slurm 22.05.3
==========================
 -- job_container/tmpfs - cleanup containers even when the .ns file isn't
    mounted anymore.
 -- Ignore the bf_licenses option if using sched/builtin.
 -- Do not clear the job's requested QOS (qos_id) when ineligible due to QOS.
 -- Emit error and add fail-safe when job's qos_id changes unexpectedly.
 -- Fix timeout value in log.
 -- openapi/v0.0.38 - fix setting of DefaultTime when dumping a partition.
 -- openapi/dbv0.0.38 - correct parsing association QOS field.
 -- Fix LaunchParameters=mpir_use_nodeaddr.
 -- Fix various edge cases where accrue limits could be exceeded or cause
    underflow error messages.
 -- Fix issue where a job requesting --ntasks and --nodes could be wrongly
    rejected when spanning heterogeneous nodes.
 -- openapi/v0.0.38 - detect when partition PreemptMode is disabled
 -- openapi/v0.0.38 - add QOS flag to handle partition PreemptMode=within
 -- Add total_cpus and total_nodes values to the partition list in
    the job_submit/lua plugin.
 -- openapi/dbv0.0.38 - reject and error on invalid flag values in well defined
    flag fields.
 -- openapi/dbv0.0.38 - correct QOS preempt_mode flag requests being silently
    ignored.
 -- accounting_storage/mysql - allow QOS preempt_mode flag updates when GANG
    mode is requested.
 -- openapi/dbv0.0.38 - correct QOS flag modifications request being silently
    ignored.
 -- sacct/sinfo/squeue - use openapi/[db]v0.0.38 for --json and --yaml modes.
 -- Improve error messages when using configless and fetching the config fails.
 -- Fix segfault when reboot_from_controller is configured and scontrol reboot
    is used.
 -- Fix regression which prevented a cons_tres gpu job to be submitted to a
    cons_tres cluster from a non-con_tres cluster.
 -- openapi/dbv0.0.38 - correct association QOS list parsing for updates.
 -- Fix rollup incorrectly divying up unused reservation time between
    associations.
 -- slurmrestd - add SLURMRESTD_SECURITY=disable_unshare_files environment
    variable.
 -- Update rsmi detection to handle new default library location.
 -- Fix header inclusion from slurmstepd manager code leading to multiple
    definition errors when linking --without-shared-libslurm.
 -- slurm.spec - explicitly disable Link Time Optimization (LTO) to avoid
    linking errors on systems where LTO-related RPM macros are enabled by
    default and the binutils version has a bug.
 -- Fix issue in the api/step_io message writing logic leading to incorrect
    behavior in API consuming clients like srun or sattach, including a segfault
    when freeing IO buffers holding traffic from the tasks to the client.
 -- openapi/dbv0.0.38 - avoid job queries getting rejected when cluster is not
    provided by client.
 -- openapi/dbv0.0.38 - accept job state filter as verbose names instead of
    only numeric state ids.
 -- Fix regression in 22.05.0rc1: if slurmd shuts down while a prolog is
    running, the job is cancelled and the node is drained.
 -- Wait up to PrologEpilogTimeout before shutting down slurmd to allow prolog
    and epilog scripts to complete or timeout. Previously, slurmd waited 120
    seconds before timing out and killing prolog and epilog scripts.
 -- GPU - Fix checking frequencies to check them all and not skip the last one.
 -- GPU - Fix logic to set frequencies properly when handling multiple GPUs.
 -- cgroup/v2 - Fix typo in error message.
 -- cgroup/v2 - More robust pattern search for events.
 -- Fix slurm_spank_job_[prolog|epilog] failures being masked if a Prolog or
    Epilog script is defined (regression in 22.05.0rc1).
 -- When a job requested nodes and can't immediately start, only report to
    the user (squeue/scontrol et al) if nodes are down in the requested list.
 -- openapi/dbv0.0.38 - Fix qos list/preempt not being parsed correctly.
 -- Fix dynamic nodes registrations mapping previously assigned nodes.
 -- Remove unnecessarily limit on count of 'shared' gres.
 -- Fix shared gres on CLOUD nodes not properly initializing.

* Changes in Slurm 22.05.2
==========================
 -- Fix a segfault in slurmctld when requesting gres in job arrays.
 -- Prevent jobs from launching on newly powered up nodes that register with
    invalid config.
 -- Fix a segfault when there's no memory.swap.current interface in cgroup/v2.
 -- Fix memleak in cgroup/v2.

* Changes in Slurm 22.05.1
==========================
 -- Flush the list of Include config files on SIGHUP.
 -- Fix and update Slurm completion script.
 -- jobacct_gather/cgroup - Add VMem support both for cgroup v1 and v2.
 -- Allow subset of node state transitions when node is in INVAL state.
 -- Remove INVAL state from cloud node after being powered down.
 -- When showing reason UID in scontrol show node, use the authenticated UID
    instead of the login UID.
 -- Fix calculation of reservation's NodeCnt when using dynamic nodes.
 -- Add SBATCH_{ERROR,INPUT,OUTPUT} input environment variables for --error,
    --input and --output options respectively.
 -- Prevent oversubscription of licenses by the backfill scheduler when not
    using the new "bf_licenses" option.
 -- Jobs with multiple nodes in a heterogeneous cluster now have access to all
    the memory on each node by using --mem=0. Previously the memory limit was
    set by the node with the least amount of memory.
 -- Don't limit the size of TaskProlog output (previously TaskProlog output was
    limited to 4094 characters per line, which limited the size of exported
    environment variables or logging to the task).
 -- Fix usage of possibly uninitialized buffer in proctrack/cgroup.
 -- Fix memleak in proctrack/cgroup proctrack_p_wait.
 -- Fix cloud/remote het srun jobs.
 -- Fix a segfault that may happen on gpu configured as no_consume.

* Changes in Slurm 22.05.0
==========================
 -- openapi/v0.0.38 - add group name to job info
 -- openapi/v0.0.38 - add container field to job description.
 -- openapi/v0.0.38 - add container to job submission.
 -- openapi/[db]v0.0.38 - add container field to job description.
 -- openapi/dbv0.0.38 - fix bug where QOS update set various limits to 0.
 -- openapi/dbv0.0.38 - properly initialize wckey record.
 -- openapi/dbv0.0.38 - properly initialize cluster record.
 -- openapi/dbv0.0.38 - gracefully update existing QOSs.
 -- Fix x11 forwarding with job_container/tmpfs and without home_xauthority.
 -- Fix reconfig of dynamic nodes with gres.
 -- Fix corner case issues when removing assocs/qos' while jobs are completing
    and a reconfigure happens.
 -- Add SlurmdParameters=numa_node_as_socket to use the numa node as a socket.
 -- Avoid creating and referencing NULL script/env hash entries when not storing
    the job script or job environment.
 -- slurmd - If a het component job fails to launch due to a node prolog or
    other failure, properly handle the whole het job.
 -- Fix possible race condition while handling forwarded messages.
 -- Add new SchedulerParameters option "bf_licenses" to track licenses as
    within the backfill scheduler.
 -- Fix resuming nodes not part of an allocation.
 -- Minor memory leak fixes.
 -- Use accept4() and pipe2() to ensure new file descriptors are always set
    with close-on-exec flag.
 -- slurmctld - allow users to request tokens for themselves by name.
 -- srun - adjust output of "--mpi=list".
 -- Fix "--gpu-bind=single:" having wrong env variables.
 -- Sync missing pieces in slurmctld SIGHUP handler with respect to
    REQUEST_RECONFIGURE RPC handler.
 -- Fixed the behavior of the --states=all option in squeue to actually show
    all of the states.
 -- job_container - Don't constrain a job using --no-allocate.
 -- Fix slurmctld segfault when a step requests a gres without a file.
 -- Fix slurmctld segfault when cleaning up an overlapping step.
 -- Dynamic node fixes and updates.
 -- Added error logging when a node goes into an invalid state so that the user
    can still see the reason even if the user set a custom reason beforehand.
 -- Remove redundant message when libdbus is found during configure.
 -- Fix pmix to honor SrunPortRange.
 -- Fix issue with ntasks_per_socket and ntasks_per_core with --exclusive
 -- openapi/v0.0.38 - change job parsing error message to reflect reality.
 -- Avoid segfault/assert when --thread-spec used with config_overrides
 -- Don't send SIGTERM to prematurely in run_command.
 -- Add logging to inform where networking errors are occurring on slurmd end.
 -- openapi/dbv0.0.38 - Enforce GET /association/ to dump only a single
    association.
 -- openapi/dbv0.0.38 - Enforce DELETE /association/ to delete only a single
    association.
 -- openapi/dbv0.0.38 - Add parameters to filter to GET /associations/.
 -- openapi/dbv0.0.38 - Add DELETE /associations using parameters to set filters.
 -- openapi/dbv0.0.38 - Fix plural form of delete association response schema.

* Changes in Slurm 22.05.0rc1
=============================
 -- gres/gpu - Avoid stripping GRES type field during normalization if any
    other GRES have a defined type field.
 -- burst_buffer/datawarp - free bb_job after stage-out or teardown are done.
 -- acct_gather_energy_rsmi has been renamed acct_gather_energy_gpu.
 -- Remove support for (non-functional) --cpu-bind=boards.
 -- accounting_storage/mysql - ensure new non-HetJobs have het_job_offset NO_VAL
    in the database and fix the same field when retrieving older bad records.
 -- PreemptMode now works as a condition for qos in sacctmgr.
 -- scancel - add "--me" option.
 -- gres/gpu - Fix configured/system-detected GRES match for some combinations
    for which the sorting affected the expected selection result.
 -- openapi/v0.0.38 - Fork existing openapi/v0.0.37 plugin.
 -- openapi/dbv0.0.38 - Fork existing openapi/dbv0.0.37 plugin.
 -- openapi/v0.0.35 - Plugin has been removed.
 -- scrontab - Don't accept extra letters after a '@' repeating pattern.
 -- openapi/dbv0.0.38 - Add missing method POST for /associations/.
 -- Make DefMemPerCPU/MaxMemPerCPU and DefMemPerNode/MaxMemPerNode precedence
    at the global level the same as in partition level, and print an error
    if both of a pair are set.
 -- openapi/v0.0.38 - Allow strings for JobIds instead of only numerical JobIds
    for GET, DELETE, and POST job methods.
 -- openapi/v0.0.38 - enable job priority field for job submissions and updates.
 -- openapi/v0.0.38 - request node states query includes MIXED state instead of
    only allocated.
 -- openapi/dbv0.0.38 - Correct tree position of dbv0.0.38_job_step.
 -- Enforce all Slurm plugin requirements for plugins specified with absolute
    path.
 -- Added --prefer option at job submission to allow for 'soft' constraints.
 -- Remove support for PMIx 1.x
 -- slurmrestd - Unlink unix sockets before binding to avoid errors where
    previous run of slurmrestd did not properly cleanup the sockets.
 -- Add extra 'EnvironmentFile=-/etc/default/$service' setting to service files.
 -- slurmctld/agent - spawn more agent threads in a single _agent_retry().
 -- openapi/v0.0.38 - change job response types to more specific types than
    generic string.
 -- srun - refuse to run on malformed SPANK environment variable.
 -- Allow jobs to pack onto nodes already rebooting with the desired features.
 -- Reset job start time after nodes are rebooted.
 -- Node features (if any) are passed to RebootProgram if run from slurmctld.
 -- Fix sending multiple features to RebootProgram.
 -- If a task/srun prolog fails don't allow the step to continue running.
 -- Fail srun when using invalid --cpu-bind options.
 -- cgroup/v1 - Set swappiness at job level instead of at root level.
 -- Fix issues where a step's GRES request could never be satisfied but the step
    remained pending forever instead of being rejected.
 -- openapi/v0.0.38 - Remove errant extra space after JOB_CPUS_SET flag.
 -- slurmrestd - refuse to run with gid 0, or under SlurmUser's gid.
 -- Storing batch scripts and env vars are now in indexed tables using
    substantially less disk space.  Those storing scripts in 21.08 will all
    be moved and indexed automatically.
 -- Run MailProg through slurmscriptd instead of directly fork+exec()'ing
    from slurmctld.
 -- Add acct_gather_interconnect/sysfs plugin.
 -- Fix gpus spanning more resources than needed when usng --cpus-per-gpu.
 -- burst_buffer plugins - err_msg added to bb_p_job_validate().
 -- burst_buffer plugins - Send user specific error message if permission
    denied due to AllowUsers or DenyUsers in burst_buffer.conf.
 -- Fatal if the mutually-exclusive JobAcctGatherParams options of UsePss and
    NoShared are both defined.
 -- Future and Cloud nodes are treated as "Planned Down" in usage reports.
 -- Add "condflags=open" to sacctmgr show events to return open/currently down
    events.
 -- Skip --mem-per-gpu impact on GRES availability when CR_MEMORY not set.
 -- Add reservation start time as a new schedulers sorting factor for magnetic
    or multi-reservation job queue records.
 -- Improve Dynamic Future node startup to load in config with mapped nodename.
 -- Add new shard plugin for sharing gpus but not with mps.
 -- acct_gather_energy/xcc - add support for Lenovo SD650 V2.
 -- Remove cgroup_allowed_devices_file.conf support.
 -- sacct -f flag implies -c flag.
 -- Node state flags (DRAIN, FAILED, POWERING UP, etc.) will be cleared now if
    node state is updated to FUTURE.
 -- Clear GRES environment variables for jobs or steps that request --gres=none.
 -- slurmctld - Avoid requiring environment to be set when container job is
    specified.
 -- Move the KeepAliveTime option into CommunicationParameters.
 -- slurm.spec - stop explicitly packaging pkgconfig directory to avoid a
    conflict with the pkgconfig package.
 -- Fix sacctmgr load dump printing incorrect default QOS when no value is set.
 -- Fix very early logging in the controller when daemonized
 -- Fix possibility of primary group going missing when running jobs submitted
    after a user has switched primary groups (eg: with sg).
 -- Make it so srun no longer inherits SLURM_CPUS_PER_TASK. It now will only
    inherit SRUN_CPUS_PER_TASK.
 -- Make HetJob signaling requests using the HetJobId+HetJobOffset format behave
    the same as with direct JobId requests with regards to job state and
    whole_hetjob considerations.
 -- scancel - avoid issuing a RPC for each HetJob non-leader components hit by
    using filters (not using jobids) when a RPC is issued for their leader.
 -- Make slurmctld call the JobCompPlugin set location operation on SIGUSR2. As
    a relevant consequence, the filetxt plugin reopens the file for potential
    logrotation.
 -- openapi/v0.0.38 - added fields bf_table_size and bf_table_size_mean to
    diag query.
 -- Handle scontrol setdebug[flags] and scontrol reconfigure in slurmscriptd.
 -- openapi/v0.0.38 - add /licenses endpoint.
 -- slurmrestd - only compile JWT authentication plugin if libjwt is present.
 -- Remove connect_timeout and timeout options from JobCompParams as there's no
    longer a connectivity check happening in the jobcomp/elasticsearch plugin
    when setting the location off of JobCompLoc.
 -- Add %n for NodeName substitution in SlurmdSpoolDir in nss_slurm.conf.
 -- job_container/tmpfs - add basic environment variables to InitScript.
 -- openapi/dbv0.0.38 - split security entries in openapi.json.
 -- openapi/v0.0.38 - Add schema for Slurm meta in responses.
 -- openapi/dbv0.0.38 - Add schema for Slurm meta in responses.
 -- openapi/v0.0.38 - Correct field "errno" to "error_number" in schema for
    errors.
 -- openapi/dbv0.0.38 - add failure response contents in openapi.json.
 -- openapi/v0.0.38 - add failure response contents in openapi.json.
 -- openapi/dbv0.0.38 - add requestBody for /users/ in openapi.json.
 -- openapi/dbv0.0.38 - add requestBody for /accounts/ in openapi.json.
 -- openapi/dbv0.0.38 - add missing response field "removed_associations"
    in openapi.json
 -- openapi/dbv0.0.38 - Correct type from object to array for user assocations
    list in openapi.json.
 -- openapi/dbv0.0.38 - Add missing field for tres minutes per qos in qos list
    in openapi.json.
 -- openapi/dbv0.0.38 - Add missing field for name in qos list in openapi.json.
 -- openapi/dbv0.0.38 - Correct tres field in qos list in openapi.json.
 -- openapi/dbv0.0.38 - Correct het job details types in jobs in openapi.json
 -- openapi/dbv0.0.38 - Correct task type for job steps in openapi.json.
 -- openapi/dbv0.0.38 - Sync fields for errors to source in openapi.json.
 -- openapi/dbv0.0.38 - Add missing field for adding clusters in clusters list
    in openapi.json.
 -- openapi/v0.0.38 - correct parameter styles from "simple" to "form".
 -- openapi/dbv0.0.38 - correct parameter styles from "simple" to "form".
 -- openapi - add flags to slurm_openapi_p_get_specification().
 -- openapi/v0.0.38 - use new operationId generation to ensure uniqueness.
 -- openapi/dbv0.0.38 - use new operationId generation to ensure uniqueness.
 -- slurmstepd - avoid possible race condition while updating step return code
    during job startup.
 -- slurmstepd - report and log I/O setup failure using corresponding error
    code during job start.
 -- Do not run the job if PrologSlurmctld times out.
 -- Fix SPANK plugin calls slurm_spank_job_prolog and slurm_spank_job_epilog
    not properly respecting PrologEpilogTimeout.
 -- Add support for 'scontrol delete <ENTITY> <ID>' format alongside the already
    expected 'scontrol delete <ENTITY>=<ID>'.
 -- Fix task/cgroup plugin which was not adding stepd to memory cgroup.
 -- preempt/qos - add support for WITHIN mode to allow for preemption between
    jobs within the same qos.
 -- Fix sattach for interactive step.
 -- Fix srun -Z when using nss_slurm.
 -- Avoid memory leak in srun -Z.
 -- openapi/dbv0.0.38 - disable automatic lookup of all HetJob components on
    specific job lookups.
 -- Add support for hourly reoccurring reservations.
 -- openapi/v0.0.38 - Fix misspelling of job parameter time_minimum.
 -- openapi/v0.0.38 - Fix misspelling of job parameter cpu_binding_hint.
 -- openapi/v0.0.38 - Fix misspelling of job parameter mcs_label
 -- openapi/dbv0.0.38 - Fix issue where association's QOS list consisted of IDs
    instead of names.
 -- Allow nodes to be dynamically added and removed from the system.
 -- srun --overlap now allows the step to share all resources (CPUs, memory, and
    GRES), where previously --overlap only allowed the step to share CPUs with
    other steps.
 -- openapi/v0.0.38 - new format for how core and socket allocations are dumped
    for jobs.
 -- openapi/v0.0.38 - add RPC call statistics to diag endpoint.
 -- openapi/[db]v0.0.36 - plugins have been marked as deprecated.
 -- sacct - allocations made by srun will now always display the allocation and
    step(s). Previously, the allocation and step were combined when possible.
 -- Steps now allocate gres according to topo data.
 -- Add validation of numbers provided to --gpu-bind=map_gpu and
    --gpu-bind=mask_gpu=.
 -- Fatal error if CgroupReleaseAgentDir is configured in cgroup.conf. The
    option has long been obsolete.
 -- cons_tres - change definition of the "least loaded node" (LLN) to the
    node with the greatest ratio of available cpus to total cpus.
 -- Fatal if more than one burst buffer plugin is configured.
 -- Added keepaliveinterval and keepaliveprobes options to
    CommunicationParameters.
 -- Correctly failover to backup slurmdbd if the primary slurmdbd node crashes.
 -- Add support to ship Include configuration files with configless.
 -- Fix issues with track_script cleanup.
 -- Add new max_token_lifespan limit to AuthAltParameters.
 -- sacctmgr - allow Admins to update AdminComment and SystemComment fields.
 -- slurmd - Cache node features at startup and scontrol reconfig. It avoids
    executing node_features/helpers scripts in the middle of a job. This clould
    potentially affect job performance.
 -- Pass and use alias_list through credential instead of environment variable.
 -- Add ability to get host addresses from nss_slurm.
 -- Enable reverse fanout for cloud+alias_list jobs.
 -- Disallow slurm.conf node configurations with NodeName=ALL.
 -- Add support to delete/update nodes by specifying nodesets or the 'ALL'
    keyword alongside the delete/update node message nodelist expression (i.e.
    'scontrol delete/update NodeName=ALL' or 'scontrol delete/update
    NodeName=ns1,nodes[1-3]').
 -- Add support for PMIx v4
 -- Add support for PMIx v5
 -- Correctly load potentially NULL values from slurmdbd archive files.
 -- Add slurmdbd.conf option AllowNoDefAcct to remove requirement for users to
    have a default account.
 -- Fix issues related to users with very large uids.
 -- common/openapi - fix bug populating methods for parameter-less endpoint.
 -- slurmrestd/operations - fix memory leak when resolving bad path.
 -- sacctmgr - improve performance of query generation for archive load.
 -- sattach - allow connecting to interactive steps with JOBID.interactive
 -- Fix for --gpus-per-task parsing when using --cpus-per-gpu and multiple gpu
    types in the same request.
 -- rest_auth/local - always log when new slurmdbd connection fails.
 -- openapi/dbv0.0.38 - gracefully update existing associations.
 -- Improve auto-detection of pmix
 -- openapi/dbv0.0.38 - Add missing method POST for /qos/.
 -- scrontab - On errors, print 1-index line numbers instead of 0-indexing them.
 -- openapi/dbv0.0.38 - Correct OpenAPI specification for diag request.
 -- openapi/dbv0.0.38 - reject requests with incorrect TRES specification.
 -- sacctmgr - reject requests with incorrect TRES specification.
 -- Correct issue where conversion to/from JSON/YAML may have resulted in empty
    strings being replaced with strings containing "null" instead.
 -- Attempt to requeue jobs terminated by slurm.conf changes (node vanish, node
    socket/core change, etc). Processes may still be running on excised nodes.
    Admin should take precautions when removing nodes that have jobs on running
    on them.
 -- Fix race with task/cgroup memory and jobacctgather/cgroup, the first was
    removing the pid from the task_X cgroup directory.
 -- openapi/dbv0.0.38 - set default account org and desc to be account name.
 -- openapi/dbv0.0.38 - Allow strings for JobId instead of only numerical JobId
    for GET job methods.
 -- Add switch/hpe_slingshot plugin.
 -- cloud_reg_addrs - use hostname from slurmd rather than from munge
    credential for NodeHostName.
 -- Store assoc usage in parent assoc when deleted to preserve account
    fairshare.
 -- CVE-2022-29500 - Prevent credential abuse.
 -- CVE-2022-29501 - Prevent abuse of REQUEST_FORWARD_DATA.
 -- CVE-2022-29502 - Correctly validate io keys.
 -- openapi/dbv0.0.38 - set with_deleted to false by default for /user[s].
 -- openapi/dbv0.0.38 - add with_deleted input parameter to GET /user[s].
 -- openapi/dbv0.0.38 - add deleted flag to /user[s] output.
 -- openapi/dbv0.0.38 - set with_deleted to false by default for GET /qos.
 -- openapi/dbv0.0.38 - add with_deleted input to GET /qos.
 -- openapi/dbv0.0.38 - set with_deleted to false by default for GET /account[s]
 -- openapi/dbv0.0.38 - add with_deleted input to GET /account[s].
 -- Include k12 hash of the RPC message body in the auth/munge tokens to
    provide for additional communication resiliency.
 -- Allow job steps to continue to launch during OverTimeLimit.
 -- slurmctld - avoid crash when attempting to load job without a script.
 -- Fix exclusive jobs breaking MaxCPUsPerNode limit
 -- Error if ConstrainSwapSpace is set and system doesn't have the kernel with
    CONFIG_MEMCG_SWAP set. This will avoid bad configurations.
 -- Add SlurmdParameters=numa_node_as_socket.
 -- Fix incorrect node allocation when using multiple counts with --constraint
    and --ntasks-per-node.

* Changes in Slurm 21.08.9
==========================
 -- Fix cross-endian communication.
 -- Fix slurmd segfault when seeing authentication issues alongside a failed
    message forward.
 -- Fix resuming nodes not part of an allocation.
 -- Fix "--gpu-bind=single:" having wrong env variables.
 -- Fix logic estimating when a job can start based on ANY_NODES / LICENSE_ONLY
    reservations that could lead to an infinite loop in backfill.
 -- Fix a segfault that may happen on gpu configured as no_consume.
 -- Fix regression which prevented a cons_tres gpu job to be submitted to a
    cons_tres cluster from a non-con_tres cluster.
 -- select/linear - fix regression introduced in 21.08.6 which prevented step
    requests with --threads-per-core or --hint=nomultithread from being created.
 -- Fix gcc 12.2.1 compile errors.

* Changes in Slurm 21.08.8-2
============================
 -- Fix communication forwarding when running with a mix of patch and unpatched
    slurmd processes.

* Changes in Slurm 21.08.8
==========================
 -- openapi/dbv0.0.37 - fix slurmrestd fatal() when deleting an association.
 -- Allow scontrol update <job> Gres=... to not require "gres:".
 -- Fix inconsistent reboot message appending behavior.
 -- Fix incorrect reason_time and reason_uid on reboot message.
 -- Fix "scontrol reboot" clearing node reason on ResumeTimeout.
 -- Fix ResumeTimeout error message missing when node already has reason set.
 -- Avoid "running with local config" error when conf server is provided by DNS.
 -- openapi/v0.0.37 - resolve job user name when not sent by slurmctld.
 -- openapi/dbv0.0.37 - Correct OpenAPI specification for diag request.
 -- Ignore power_down request when node is already powering down.
 -- CVE-2022-29500 - Prevent credential abuse.
 -- CVE-2022-29501 - Prevent abuse of REQUEST_FORWARD_DATA.
 -- CVE-2022-29502 - Correctly validate io keys.

* Changes in Slurm 21.08.7
==========================
 -- openapi/v0.0.37 - correct calculation for bf_queue_len_mean in /diag.
 -- Optimize sending down nodes in maintenance mode to the database when
    removing reservations.
 -- Avoid shrinking a reservation when overlapping with downed nodes.
 -- Fix 'planned time' in rollups for jobs that were still pending when the
    rollup happened.
 -- Prevent new elements from a job array from causing rerollups.
 -- Only check TRES limits against current usage for TRES requested by the job.
 -- Do not allocate shared gres (MPS) in whole-node allocations
 -- Fix minor memory leak when dealing with configless setups.
 -- Constrain slurmstepd to job/step cgroup like in previous versions of Slurm.
 -- Fix warnings on 32-bit compilers related to printf() formats.
 -- Fix memory leak when freeing kill_job_msg_t.
 -- Fix memory leak when using data_t.
 -- Fix reconfigure issues after disabling/reenabling the GANG PreemptMode.
 -- Fix race condition where a cgroup was being deleted while another step
    was creating it.
 -- Set the slurmd port correctly if multi-slurmd
 -- openapi/v0.0.37 - Fix misspelling of account_gather_frequency in spec.
 -- openapi/v0.0.37 - Fix misspelling of cluster_constraint in spec.
 -- Fix FAIL mail not being sent if a job was cancelled due to preemption.
 -- slurmrestd - move debug logs for HTTP handling to be gated by debugflag
    NETWORK to avoid unnecessary logging of communication contents.
 -- Fix issue with bad memory access when shrinking running steps.
 -- Fix various issues with internal job accounting with GRES when jobs are
    shrunk.
 -- Fix ipmi polling on slurmd reconfig or restart.
 -- Fix srun crash when reserved ports are being used and het step fails
    to launch.
 -- openapi/dbv0.0.37 - fix DELETE execution path on /user/{user_name}.
 -- slurmctld - Properly requeue all components of a het job if PrologSlurmctld
    fails.
 -- rlimits - remove final calls to limit nofiles to 4096 but to instead use
    the max possible nofiles in slurmd and slurmdbd.
 -- Fix slurmctld memory leak after a reconfigure with configless.
 -- Fix slurmd memory leak when fetching configless files.
 -- Allow the DBD agent to load large messages (up to MAX_BUF_SIZE) from state.
 -- Fix minor memory leak with cleaning up the extern step.
 -- Fix potential deadlock during slurmctld restart when there is a completing
    job.
 -- slurmstepd - reduce user requested soft rlimits when they are above max
    hard rlimits to avoid rlimit request being completely ignored and
    processes using default limits.
 -- Fix memory leaks when job/step specifies a container.
 -- Fix Slurm user commands displaying available features as active features
    when no features were active.
 -- Don't power down nodes that are rebooting.
 -- Clear pending node reboot on power down request.
 -- Ignore node registrations while node is powering down.
 -- Don't reboot any node that is power<ing|ed> down.
 -- Don't allow a node to reboot if it's marked for power down.
 -- Fix issuing reboot and downing when rebooting a powering up node.
 -- Clear DRAIN on node after failing to resume before ResumeTimeout.
 -- Prevent repeating power down if node fails to resume before ResumeTimeout.
 -- Fix federated cloud node communication with srun and cloud_dns.
 -- Fix jobs being scheduled on nodes marked to be powered_down when idle.
 -- Fix problem where a privileged user could not view array tasks specified by
    <array_job_id>_<task_id> when PrivateData had the jobs value set.

* Changes in Slurm 21.08.6
==========================
 -- Handle typed shared GRES better in accounting.
 -- Fix plugin_name definitions in a number of plugins to improve logging.
 -- Close sbcast file transfers when job is cancelled.
 -- job_submit/lua - allow mail_type and mail_user fields to be modified.
 -- scrontab - fix handling of --gpus and --ntasks-per-gpu options.
 -- sched/backfill - fix job_queue_rec_t memory leak.
 -- Fix magnetic reservation logic in both main and backfill schedulers.
 -- job_container/tmpfs - fix memory leak when using InitScript.
 -- slurmrestd / openapi - fix memory leaks.
 -- Fix slurmctld segfault due to job array resv_list double free.
 -- Fix multi-reservation job testing logic.
 -- Fix slurmctld segfault due to insufficient job reservation parse validation.
 -- Fix main and backfill schedulers handling for already rejected job array.
 -- sched/backfill - restore resv_ptr after yielding locks.
 -- acct_gather_energy/xcc - appropriately close and destroy the IPMI context.
 -- Protect slurmstepd from making multiple calls to the cleanup logic.
 -- Prevent slurmstepd segfault at cleanup time in mpi_fini().
 -- Fix slurmctld sometimes hanging if shutdown while PrologSlurmctld or
    EpilogSlurmctld were running and PrologEpilogTimeout is set in slurm.conf.
 -- Fix affinity of the batch step if batch host is different than the first
    node in the allocation.
 -- slurmdbd - fix segfault after multiple failover/failback operations.
 -- Fix jobcomp filetxt job selection condition.
 -- Fix -f flag of sacct not being used.
 -- Select cores for job steps according to the socket distribution. Previously,
    sockets were always filled before selecting cores from the next socket.
 -- Keep node in Future state if epilog completes while in Future state.
 -- Fix erroneous --constraint behavior by preventing multiple sets of brackets.
 -- Make ResetAccrueTime update the job's accrue_time to now.
 -- Fix sattach initialization with configless mode.
 -- Revert packing limit checks affecting pmi2.
 -- sacct - fixed assertion failure when using -c option and a federation
    display
 -- Fix issue that allowed steps to overallocate the job's memory.
 -- Fix the sanity check mode of AutoDetect so that it actually works.
 -- Fix deallocated nodes that didn't actually launch a job from waiting for
    Epilogslurmctld to complete before clearing completing node's state.
 -- Job should be in a completing state if EpilogSlurmctld when being requeued.
 -- Fix job not being requeued properly if all node epilog's completed before
    EpilogSlurmctld finished.
 -- Keep job completing until EpilogSlurmctld is completed even when "downing"
    a node.
 -- Fix handling reboot with multiple job features.
 -- Fix nodes getting powered down when creating new partitions.
 -- Fix bad bit_realloc which potentially could lead to bad memory access.
 -- slurmctld - remove limit on the number of open files.
 -- Fix bug where job_state file of size above 2GB wasn't saved without any
    error message.
 -- Fix various issues with no_consume gres.
 -- Fix regression in 21.08.0rc1 where job steps failed to launch on systems
    that reserved a CPU in a cgroup outside of Slurm (for example, on systems
    with WekaIO).
 -- Fix OverTimeLimit not being reset on scontrol reconfigure when it is
    removed from slurm.conf.
 -- serializer/yaml - use dynamic buffer to allow creation of YAML outputs
    larger than 1MiB.
 -- Fix minor memory leak affecting openapi users at process termination.
 -- Fix batch jobs not resolving the username when nss_slurm is enabled.
 -- slurmrestd - Avoid slurmrestd ignoring invalid HTTP method if the response
    serialized without error.
 -- openapi/dbv0.0.37 - Correct conditional that caused the diag output to
    give an internal server error status on success.
 -- Make --mem-bind=sort work with task_affinity
 -- Fix sacctmgr to set MaxJobsAccruePer{User|Account} and MinPrioThres in
    sacctmgr add qos, modify already worked correctly.
 -- job_container/tmpfs - avoid printing extraneous error messages in Prolog
    and Epilog, and when the job completes.
 -- Fix step CPU memory allocation with --threads-per-core without --exact.
 -- Remove implicit --exact when --threads-per-core or --hint=nomultithread
    is used.
 -- Do not allow a step to request more threads per core than the
    allocation did.
 -- Remove implicit --exact when --cpus-per-task is used.

* Changes in Slurm 21.08.5
==========================
 -- Fix issue where typeless GRES node updates were not immediately reflected.
 -- Fix setting the default scrontab job working directory so that it's the home
    of the different user (-u <user>) and not that of root or SlurmUser editor.
 -- Fix stepd not respecting SlurmdSyslogDebug.
 -- Fix concurrency issue with squeue.
 -- Fix job start time not being reset after launch when job is packed onto
    already booting node.
 -- Fix updating SLURM_NODE_ALIASES for jobs packed onto powering up nodes.
 -- Cray - Fix issues with starting hetjobs.
 -- auth/jwks - Print fatal() message when jwks is configured but file could
    not be opened.
 -- If sacctmgr has an association with an unknown qos as the default qos
    print 'UNKN-###' instead of leaving a blank name.
 -- Correctly determine task count when giving --cpus-per-gpu, --gpus and
    --ntasks-per-node without task count.
 -- slurmctld - Fix places where the global last_job_update was not being set
    to the time of update when a job's reason and description were updated.
 -- slurmctld - Fix case where a job submitted with more than one partition
    would not have its reason updated while waiting to start.
 -- Fix memory leak in node feature rebooting.
 -- Fix time limit permanetly set to 1 minute by backfill for job array tasks
    higher than the first with QOS NoReserve flag and PreemptMode configured.
 -- Fix sacct -N to show jobs that started in the current second
 -- Fix issue on running steps where both SLURM_NTASKS_PER_TRES and
    SLURM_NTASKS_PER_GPU are set.
 -- Handle oversubscription request correctly when also requesting
    --ntasks-per-tres.
 -- Correctly detect when a step requests bad gres inside an allocation.
 -- slurmstepd - Correct possible deadlock when UnkillableStepTimeout triggers.
 -- srun - use maximum number of open files while handling job I/O.
 -- Fix writing to Xauthority files on root_squash NFS exports, which was
    preventing X11 forwarding from completing setup.
 -- Fix regression in 21.08.0rc1 that broke --gres=none.
 -- Fix srun --cpus-per-task and --threads-per-core not implicitly setting
    --exact. It was meant to work this way in 21.08.
 -- Fix regression in 21.08.0 that broke dynamic future nodes.
 -- Fix dynamic future nodes remembering active state on restart.
 -- Fix powered down nodes getting stuck in COMPLETING+POWERED_DOWN when job is
    cancelled before nodes are powering up.

* Changes in Slurm 21.08.4
==========================
 -- Fix potential deadlock when using PMI v1.
 -- Fix tight loop sending DBD_SEND_MULT_JOB_START when the slurmctld has an
    issue talking correctly to the DBD.
 -- Fix memory leak in step creation.
 -- Fix potential deadlock when shutting down slurmctld.
 -- Fix regression in 21.08 where multi-node steps that requested MemPerCPU
    were not counted against the job's memory allocation on some nodes.
 -- Fix issue with select/cons_tres and the partition limit MaxCpusPerNode where
    the limit was enforced for one less CPU than the configured value.
 -- jobacct_gather/common - compare Pss to Rss after scaling Pss to Rss units.
 -- Fix SLURM_NODE_ALIASES in RPC Prolog for batch jobs.
 -- Fix regression in 21.08 where slurmd and slurmstepd were not constrained
    with CpuSpecList or CoreSpecCount.
 -- Fix cloud jobs running without powering up nodes after a reconfig/restart.
 -- CVE-2021-43337 - Fix security issue with new AccountingStoreFlags=job_script
    and job_env options where users could request scripts and environments they
    should not have been permitted to access.

* Changes in Slurm 21.08.3
==========================
 -- Return error to sacctmgr when running 'sacctmgr archive load' and the load
    fails due to an invalid or corrupted file.
 -- slurmctld/gres_ctld - fix deallocation of typed GRES without device.
 -- scrontab - fix capturing the cronspec request in the job script.
 -- openapi/dbv0.0.37 - Add missing method POST for /associations/.
 -- If ALTER TABLE was already run, continue with database upgrade.
 -- slurmstepd - Gracefully handle RunTimeQuery returning no output.
 -- srun - automatically handle issues with races to listen() on an ephemeral
    socket, and suppress otherwise needless error messages.
 -- Schedule sooner after Epilog completion with SchedulerParameters=defer.
 -- Improve performance for AccountingStoreFlags=job_env.
 -- Expose missing SLURMD_NODENAME and SLURM_NODEID to TaskEpilog environment.
 -- Bring slurm_completion.sh up to date with changes to commands.
 -- Fix issue where burst buffer stage-in could only start for one job in a job
    array per scheduling cycle instead of bb_array_stage_cnt jobs per scheduling
    cycle.
 -- Fix checking if the dependency is the same job for array jobs.
 -- Fix checking for circular dependencies with job arrays.
 -- Restore dependent job pointers on slurmctld startup to avoid race.
 -- openapi/v0.0.37 - Allow strings for JobIds instead of only numerical JobIds
    for GET, DELETE, and POST job methods.
 -- openapi/dbv0.0.36 - Gracefully handle missing associations.
 -- openapi/dbv0.0.36 - Avoid restricting job association lookups to only
    default associations.
 -- openapi/dbv0.0.37 - Gracefully handle missing associations.
 -- openapi/dbv0.0.37 - Avoid restricting job association lookups to only
    default associations.
 -- Fix error in GPU frequency validation logic.
 -- Fix regression in 21.08.1 that broke federated jobs.
 -- Correctly handle requested GRES when used in job arrays.
 -- Fix error in pmix logic dealing with the incorrect size of buffer.
 -- Fix handling of no_consume GRES, add it to allocated job allocated TRES.
 -- Fix issue with typed GRES without Files= (bitmap).
 -- Fix job_submit/lua support for 'gres' which is now stored as a 'tres'
    when requesting jobs so needs a 'gres' prefix.
 -- Fix regression where MPS would not deallocate from the node properly.
 -- Fix --gpu-bind=verbose to work correctly.
 -- Do not deny --constraint with special operators "[]()|*" when no changeable
    features are requested, but continue to deny --constraint with special
    operators when changeable features are requested.
 -- openapi/v0.0.{35,36,37} - prevent merging the slurmrestd environment
    alongside a new job submission.
 -- openapi/dbv0.0.36 - Correct tree position of dbv0.0.36_job_step.
 -- openapi/dbv0.0.37 - Correct tree position of dbv0.0.37_job_step.
 -- openapi/v0.0.37 - enable job priority field for job submissions and updates.
 -- openapi/v0.0.37 - request node states query includes MIXED state instead of
    only allocated.
 -- mpi/pmix - avoid job hanging until the time limit on PMIx agent failures.
 -- Correct inverted logic where reduced version matching applied to non-SPANK
    plugins where it should have only applied to SPANK plugins.
 -- Fix issues where prologs would run in serial without PrologFlags=serial.
 -- Make sure a job coming in is initially considered for magnetic reservations.
 -- PMIx v1.1.4 and below are no longer supported.
 -- Add comment to service files about disabling logging through journald.
 -- Add SLURM_NODE_ALIASES env to RPC Prolog (PrologFlags=alloc) environment.
 -- Limit max_script_size to 512 MB.
 -- Fix shutdown of slurmdbd plugin to correctly notice when the agent thread
    finishes.
 -- slurmdbd - fix issue with larger batch script files being sent to SlurmDBD
    with AccountingStoreFlags=job_script that can lead to accounting data loss
    as the resulting RPC generated can exceed internal limits and won't be
    sent, preventing further communication with SlurmDBD.
    This issue is indicated by "error: Invalid msg_size" in your log files.
 -- Fix compile issue with --without-shared-libslurm.

* Changes in Slurm 21.08.2
==========================
 -- slurmctld - fix how the max number of cores on a node in a partition are
    calculated when the partition contains multi-socket nodes. This in turn
    corrects certain jobs node count estimations displayed client-side.
 -- job_submit/cray_aries - fix "craynetwork" GRES specification after changes
    introduced in 21.08.0rc1 that made TRES always have a type prefix.
 -- Ignore nonsensical check in the slurmd for [Pro|Epi]logSlurmctld.
 -- Fix writing to stderr/syslog when systemd runs slurmctld in the foreground.
 -- Fix locking around log level setting routines.
 -- Fix issue with updating job started with node range.
 -- Fix issue with nodes not clearing state in the database when the slurmctld
    is started with clean-start.
 -- Fix hetjob components > 1 timing out due to InactiveLimit.
 -- Fix sprio printing -nan for normalized association priority if
    PriorityWeightAssoc was not defined.
 -- Disallow FirstJobId=0.
 -- Preserve job start info in the database for a requeued job that hadn't
    registered the first time in the database yet.
 -- Only send one message on prolog failure from the slurmd.
 -- Remove support for TaskAffinity=yes in cgroup.conf.
 -- accounting_storage/mysql - fix issue where querying jobs via sacct
    --whole-hetjob=yes or slurmrestd (which automatically includes this flag)
    could in some cases return more records than expected.
 -- Fix issue for preemption of job array task that makes afterok dependency
    fail. Additionally, send emails when requeueing happens due to preemption.
 -- Fix sending requeue mail type.
 -- Properly resize a job's GRES bitmaps and counts when resizing the job.
 -- Fix node being able to transition to CLOUD state from non-cloud state.
 -- Fix regression introduced in 21.08.0rc1 which broke a step's ability to
    inherit GRES from the job when the step didn't request GRES but the job did.
 -- Fix errors in logic when picking nodes based on bracketed anded constraints.
    This also enforces the requirement to have a count when using such
    constraints.
 -- Handle job resize better in the database.
 -- Exclude currently running, resized jobs from the runaway jobs list.
 -- Make it possible to shrink a job more than once.

* Changes in Slurm 21.08.1
==========================
 -- Fix potential memory leak if a problem happens while allocating GRES for
    a job.
 -- If an overallocation of GRES happens terminate the creation of a job.
 -- AutoDetect=nvml: Fatal if no devices found in MIG mode.
 -- slurm.spec - fix querying for PMIx and UCX version.
 -- Print federation and cluster sacctmgr error messages to stderr.
 -- Fix off by one error in --gpu-bind=mask_gpu.
 -- Fix statement condition in http_parser autoconf macro.
 -- Fix statement condition in netloc autoconf macro.
 -- Add --gpu-bind=none to disable gpu binding when using --gpus-per-task.
 -- Handle the burst buffer state "alloc-revoke" which previously would not
    display in the job correctly.
 -- Fix issue in the slurmstepd SPANK prolog/epilog handler where configuration
    values were used before being initialized.
 -- Restore a step's ability to utilize all of an allocations memory if --mem=0.
 -- Fix --cpu-bind=verbose garbage taskid.
 -- Fix cgroup task affinity issues from garbage taskid info.
 -- Make gres_job_state_validate() client logging behavior as before 44466a4641.
 -- Fix steps with --hint overriding an allocation with --threads-per-core.
 -- Require requesting a GPU if --mem-per-gpu is requested.
 -- Return error early if a job is requesting --ntasks-per-gpu and no gpus or
    task count.
 -- Properly clear out pending step if unavailable to run with available
    resources.
 -- Kill all processes spawned by burst_buffer.lua including decendents.
 -- openapi/v0.0.{35,36,37} - Avoid setting default values of min_cpus,
    job name, cwd, mail_type, and contiguous on job update.
 -- openapi/v0.0.{35,36,37} - Clear user hold on job update if hold=false.
 -- Prevent CRON_JOB flag from being cleared when loading job state.
 -- sacctmgr - Fix deleting WCKeys when not specifying a cluster.
 -- Fix getting memory for a step when the first node in the step isn't the
    first node in the allocation.
 -- Make SelectTypeParameters=CR_Core_Memory default for cons_tres and cons_res.
 -- Correctly handle mutex unlocks in the gres code if failures happen.
 -- Give better error message if -m plane is given with no size.
 -- Fix --distribution=arbitrary for salloc.
 -- Fix jobcomp/script regression introduced in 21.08.0rc1 0c75b9ac9d.
 -- Only send the batch node in the step_hostlist in the job credential.
 -- When setting affinity for the batch step don't assume the batch host is node
    0.
 -- In task/affinity better checking for node existence when laying out
    affinity.
 -- slurmrestd - fix job submission with auth/jwt.
 -- Fix 'scontrol setdebug' not respecting slurm.conf logging configurations.

* Changes in Slurm 21.08.0
==========================
 -- Restored --gpu-bind=single:<ntasks> to check core affinity like
    --gpu-bind=closest does. This removal of this behavior only was in rc2.
 -- slurmd - Fix assert failure on initialization due to bad node name.
 -- Fix error codes in cgroup/v1.
 -- Don't destroy the memory step outside fini, which leads to a double destroy
    causing an error message.
 -- Add support for lua 5.4.
 -- Force cgroup.clone_children to 0 in slurm cgroup directories. This caused
    issues in task cpuset plugin in systems with it enabled by default.
 -- Clear GRES HAS_TYPE flag when removing type name.
 -- Environment flags in gres.conf now override flags set by AutoDetect.
 -- Environment flags in gres.conf now apply to subsequent gres.conf lines where
    Environment flags are not set.
 -- Set missing job_uid and job_gid members when preparing a kill_job_msg_t in
    abort_job_on_node(), abort_job_on_nodes() and kill_job_on_node().
 -- Fix swappiness not being set in cgroups.
 -- Fix coordinators for new subaccounts.
 -- Fix coordinators when adding existing users with PrivateData=users.
 -- slurmctld - do not attempt to relinquish control to self.
 -- openapi/v0.0.37 - Honor kill_on_invalid_dependency as job parameter.
 -- Check max_gres when doing step allocation, fix for regression in rc2.
 -- SPANK plugins are now required to match the current Slurm version, and must
    be recompiled for each new Slurm release.
 -- node_features/helpers - add ExecTime configuration option.
 -- srun - Fix force termination with -X.
 -- On slurmctld restart set node typed GRES counts correctly.
 -- Fix places where a step wasn't allocated in the slurmctld but wasn't ever
    removed from the job.
 -- Fix step allocation memory when using --threads-per-core.
 -- Fix step allocations to consume all threads on a core when using
    threads-per-core.
 -- Add check to validate cpu request on a step if --threads-per-core is given
    and it is less than what the core on the node has in the allocation.
 -- Fix issue where a step could request more gres than the job had and the step
    would hang forever. This bug was only introduced in 21.08.0rc2.
 -- Only print \r\n for logging messages on stderr when --pty has been
    explicitly requested.
 -- Relax check on SPANK plugins to only require Slurm major + minor versions
    to match.
 -- job_container/tmpfs - delegate handling of /dev/shm to the extern step
    so new step launches will be attached correctly even after the slurmd
    process has been restarted.
 -- Limit the wait time in proctrack_g_wait() to UnkillableStepTimeout instead
    of a hardcoded value of 256 seconds, and limit the delay between tests to a
    maximum of 32 seconds.
 -- fatal() on start if using job_container/tmpfs without PrologFlags=Contian.

* Changes in Slurm 21.08.0rc2
=============================
 -- Load bf_when_last_cycle from job state only if protocol version >= 21.08.
 -- Docs - remove man3 section entirely.
 -- Enable OCI container execution support as a technical preview.
 -- Set step memory when using MemPerGPU or DefMemPerGPU. Previously a step's
    memory was not set even when it requested --mem-per-gpu and at least one
    GPU.
 -- Add cli_filter.lua support in configless mode.
 -- Remove some of the MAX macro usages with return codes.
 -- Check that the step requests at least as many gres as nodes.
 -- sacct - Add --json and --yaml arguments.
 -- squeue - Add --json and --yaml arguments.
 -- sinfo - Add --json and --yaml arguments.
 -- Make job's SLURM_JOB_GPUS print global GPU IDs instead of MIG unique_ids.
 -- Fix miscounting of GPU envs in prolog/epilog if MultipleFiles was used.
 -- Support MIGs in prolog/epilog's CUDA_VISIBLE_DEVICES & co.
 -- Add SLURM_JOB_GPUS back into Prolog; add it to Epilog.
 -- Fix issue where the original executable, not the bcast'd version, was
    executed with 'srun --bcast'.
 -- Fix memory leaks when cleaning up config_response_msg_t.
 -- sacct - print '-' header correctly for fields over 53-characters wide.
 -- openapi/dbv0.0.37 - replace "REST" with "Slurm OpenAPI" for plugin_name.
 -- openapi/v0.0.37 - replace "REST" with "Slurm OpenAPI" for plugin_name.
 -- configless - fix segfault on 'scontrol reconfigure'.
 -- Fix bad reference to step_ptr->job_ptr after step_ptr is freed.
 -- Fix bad reference to config_for_clients when shutting down slurmctld.
 -- Fix memory leak on gres_list_alloc when freeing steps.
 -- Fix memory leak on kill_job_msg_t->work_dir when freeing struct.
 -- Fix memory leak on slurmdb_step_rec_t->submit_line when freeing struct.
 -- Fix memory leak in the slurmdbd when requesting wckeys from all clusters.
 -- Use FREE_NULL_LIST instead of list_destroy.
 -- Fix bad pointer reference after bad unpack of jobacctinfo_t.
 -- If we made are running an interactive session we need to force track_steps.
 -- Disable OPOST flag when using --pty to avoid issues with Emac.
 -- Fix issue where extra bonus core was allocated in some situations.
 -- Avoid putting gres with count of 0 on a TRES req/alloc.
 -- Fix determining if a reservation is used or not.
 -- Fix memory in requested TRES when --mem-per-gpu is used.
 -- Changed ReqMem field in sacct to match memory from ReqTRES.
 -- Changed --gpu-bind=single:<ntasks> to no longer check core affinity like
    --gpu-bind=closest does. This consequently affects --ntasks-per-gpu.

* Changes in Slurm 21.08.0rc1
=============================
 -- slurmrestd - add v0.0.37 OpenAPI plugin.
 -- slurmrestd/v0.0.37 - rename standard_in -> standard_input.
 -- slurmrestd/v0.0.37 - rename standard_out -> standard_output.
 -- slurmdbd - Improve log messages of more time than possible on rollups.
 -- Changed the --format handling for negative field widths (left justified)
    to apply to the column headers as well as the printed fields.
 -- Add LimitFactor to the QOS. A float that is factored into an associations
    [Grp|Max]TRES limits.  For example, if the LimitFactor is 2, then an
    association with a GrpTRES of 30 CPUs, would be allowed to allocate 60
    CPUs when running under this QOS.
 -- slurmrestd - Pass SLURM_NO_CHANGE_IN_DATA to client as 403 (Not Modified).
 -- slurmrestd/v0.0.37 - Add update_time field to Jobs query to allow clients
    to only get jobs list based on change timestamp.
 -- Reset job eligible time when job is manually held.
 -- Add DEBUG_FLAG_JAG to improve logging related to job account gathering.
 -- Convert logging in account_gather/common to DEBUG_FLAG_JAG.
 -- Add more logging for jag_common_poll_data() when prec_extra() called.
 -- slurmrestd/v0.0.37 - add API to fetch reservation(s) info.
 -- Catch more errors in task/cgroup initalization and cleanup to avoid allowing
    jobs to start when cgroups failure to configure correctly.
 -- Fix cgroup ns detection when using containers (e.g. LXC or Docker).
 -- Reset job's next_step_id counter to 0 after being requeued.
 -- Make scontrol exit with non-zero status after failing to delete a partition
    or reservation.
 -- Make NtasksPerTRES optional in slurm_sprint_job_info().
 -- slurmrestd/v0.0.37 - Add update_time field to nodes query to allow clients
    to only get nodes list based on change timestamp.
 -- common/parse_config - catch and propagate return codes when handling a match
    on a key-value pattern. This implies error codes detected in the handlers
    are now not ignored and users of _handle_keyvalue_match() can fatal().
 -- common/hostlist - fix hostlist_delete_nth() xassert() upper bound check.
 -- API change: Removed slurm_kill_job_msg and modified the function signature
    for slurm_kill_job2. slurm_kill_job2 should be used instead of
    slurm_kill_job_msg.
 -- Fix non-zero exit code for scontrol ping when all controllers are down.
 -- Enforce a valid configuration for AccountingStorageEnforce in slurm.conf.
    If the configuration is invalid, then an error message will be printed and
    the command or daemon (including slurmctld) will not run.
 -- slurmrestd/v0.0.37 - Add update_time field to partitions/reservations query
    to allow clients to only get the entities list when something changed.
 -- slurmdbd.service - add "After" relationship to all common names for MariaDB
    to reduce startup delays.
 -- slurmrestd/v0.0.37 - Correct displaying node states that are UNKNOWN.
 -- slurmrestd/v0.0.37 - Add flags to node states.
 -- Fix first job on fresh cluster not being assigned JobId=1 (or FirstJobId).
 -- squeue - make it so --nodelist is sensitive to --clusters.
 -- squeue - do --nodelist node validation in the same order as listing.
 -- Removed AccountingStoreJobComment option.  Please update your config to use
    AccountingStoreFlags=job_comment instead.
 -- AccountingStoreFlags=job_script allows you to store the job's batch script.
 -- AccountingStoreFlags=job_env allows you to store the job's env vars.
 -- Add sacct -o SubmitLine to get the submit line of a job/step.
 -- Removed DefaultStorage{Host,Loc,Pass,Port,Type,User} options.
 -- Fix NtasksPerTRES delimiter from : to = in scontrol show job output.
 -- Removed CacheGroups, CheckpointType, JobCheckpointDir, MemLimitEnforce,
    SchedulerPort, SchedulerRootFilter options.
 -- Make job accounting queries use consistent timeframes with and w/o jobs.
 -- --cpus-per-task and --threads-per-core now imply --exact.
    This fixes issues where steps would be allocated the wrong number of CPUs.
 -- configure: the --with option handling has been made consistent across the
    various optional libraries. Specifying --with-foo=/path/to/foo will only
    check that directory for the applicable library (rather than, in some cases,
    falling back to the default directories), and will always error the build
    if the library is not found (instead of a mix of error messages and non-
    fatal warning messages).
 -- configure: replace --with-rmsi_dir option with proper handling for
    --with-rsmi=dir.
 -- Pass additional job environment variables to MailProg.
 -- Add SLURM_JOB_WORK_DIR to Prolog, Epilog.
 -- Removed sched/hold plugin.
 -- Fix srun overwriting SLURM_SUBMIT_DIR and SLURM_SUBMIT_HOST when within an
    existing allocation.
 -- step_ctx code has been removed from the api.
 -- cli_filter/lua, jobcomp/lua, job_submit/lua now load their scripts from the
    same directory as the slurm.conf file (and thus now will respect changes
    to the SLURM_CONF environment variable).
 -- SPANK - call slurm_spank_init if defined without slurm_spank_slurmd_exit in
    slurmd context.
 -- job_container/tmpfs - Remove need for .active file to allow salloc without
    an interactive step to work.
 -- Add new 'PLANNED' state to a node to represent when the backfill scheduler
    has it planned to be used in the future instead of showing as 'IDLE'.
 -- slurmd - Delay background node registration on every failure up to 128s on
    startup.
 -- slurmctld - Always notify slurmd that node registration was accepted to
    avoid slurmd needless attempting to re-register if there is configuration
    issue.
 -- Put node into "INVAL" state upon registering with an invalid node
    configuration. Node must register with a valid configuration to continue.
 -- Make --cpu-bind=threads default for --threads-per-core -- cli and env can
    override.
 -- jobcomp/elasticsearch - Use data_t to serialize data. The plugin now has the
    JSON-C library as a prerequisite.
 -- scrontab - create the temporary file under the TMPDIR environment variable
    (if set), otherwise continue to use TmpFS as configured in slurm.conf.
 -- Add LastBusyTime to "scontrol show nodes" and slurmrestd nodes output,
    which represents the time the node last had jobs on it.
 -- slurmd - allow multiple comma-separated controllers to be specified in
    configless mode with --conf-server
 -- sacctmgr - changed column headings to "ParentID" and "ParentName" instead
    of "Par ID" and "Par Name" respectively.
 -- Perl API - make sure man pages are installed under the --prefix given to
    configure.
 -- Manually powering down of nodes with scontrol now ignores
    SuspendExc<Nodes|Parts>.
 -- SALLOC_THREADS_PER_CORE and SBATCH_THREADS_PER_CORE have been added as
    input environment variables for salloc and sbatch, respectively. They do
    the same thing as --threads-per-core.
 -- Distinguish queued reboot requests (REBOOT) from issued reboots (REBOOT^).
 -- Set the maximum number of open files per process to 4096 to avoid
    performance issues when closing the entire range with closeall().
 -- auth/jwt - add support for RS256 tokens.
 -- Relax reservation purge due to any invalid uid after creation time.
 -- Reject srun that requests both --exclusive and --overlap.
 -- service files - change dependency to network-online rather than just
    network to ensure DNS and other services are available.
 -- RSMI: Fix incorrect PCI BDF bits.
 -- plugins/cli_filter - Convert to using data_t to serialize JSON.
 -- Fix testing array job after regaining locks in backfill.
 -- Don't display node's comment with "scontrol show nodes" unless set.
 -- Add "Extra" field to node to store extra information other than a comment.
 -- scrontab - Use /tmp instead of TmpFS if TMPDIR is not set.
 -- Add ResumeTimeout, SuspendTimeout and SuspendTime to Partitions.
 -- sreport - change to sorting TopUsage by the --tres option.
 -- slurmrestd - do not run allow operation as SlurmUser/root by default.
 -- Allow map_cpu and mask_cpu for non-whole node allocation.
 -- TaskPluginParam=verbose is now treated as a default. Previously it would be
    applied regardless of the job specifying a --cpu-bind.
 -- Add "node_reg_mem_percent" SlurmctldParameter to define percentage of
    memory nodes are allowed to register with.
 -- Show correct number of SocketsPerBoard in slurmd -C with hwloc2.
 -- Alter sreport's cluster utilization report column name from
    'Reserved' to 'Planned' to match the nomenclature of the 'Planned' node.
 -- Add StateComplete format option to sinfo to show base_state+flags.
 -- "scontrol show node" now shows State as base_state+flags instead of
    shortened state with flags appended. eg. IDLE# -> IDLE+POWERING_UP.
    Also "POWER" state flag string is "POWERED_DOWN".
 -- slurmd/req - add missing job_env_t's het_job_id initialization off the
    request in _rpc_{abort,terminate}_job(). This caused problems for Native
    Cray builds when joining a CNCU job_container plugin with Epilog configured.
 -- Fix joining a CNCU job_container on a Native Cray build before executing the
    UnkillableStepProgram for a HetJob step.
 -- slurmrestd/v0.0.35 - Plugin has been tagged as deprecated.
 -- srun - Job steps requiring more cores than available to be rejected unless
    '--overlap' is specificed.
 -- Add bf_node_space_size to SchedulerParameters.
 -- Add scontrol update node state=POWER_DOWN_FORCE and POWER_DOWN_ASAP as new
    ways to power off and reset especially CLOUD nodes.
 -- Define and separate node power state transitions. Previously a powering
    down node was in both states, POWERING_OFF and POWERED_OFF. These are now
    separated.
 -- Create a new process called slurmscriptd which runs PrologSlurmctld and
    EpilogSlurmctld. This avoids fork() calls from slurmctld, and can avoid
    performance issues if the slurmctld has a large memory footprint.
 -- Added new Script option to DebugFlags for debugging slurmscriptd.
 -- scrontab - add ability to update crontab from a file or standard input.
 -- scrontab - add ability to set and expand variables.
 -- Pass JSON of job to node mappings to ResumeProgram.
 -- If running steps in an allocation with CR_PACK_NODE or -mpack the srun will
    only attempt to allocate as much as needed from the allocation instead
    of always trying to allocate every node in the allocation.
 -- Jobs that request the whole node now check to see if any gres are allocated.
 -- Rename SbcastParameters to BcastParameters.
 -- Make srun sensitive to BcastParameters.
 -- RSMI: Add gres_links_create_empty() and preserve RSMI enumeration order.
 -- GPUs: Use index instead of dev_num for CUDA_VISIBLE_DEVICES
 -- Don't run epilog on nodes if job never launched.
 -- QOS accrue limits only apply to the job QOS, not partition QOS.
 -- Add --gpu-bind=per_task:<gpus_per_task> option, --gpus-per-task will now
    set this option by default.
 -- Treat any return code from SPANK plugin that is not SLURM_SUCCESS to be an
    error or rejection.
 -- Print the statistics for extern step adopted processes in sstat.
 -- Fix SLURM_NODE_ALIASES to work for ipv6 node addrs.
 -- Add support for automatically detecting and broadcasting executable shared
    object dependencies for sbcast and srun --bcast.
 -- Delay steps when memory already used instead of rejecting step request.

* Changes in Slurm 20.11.10
===========================
 -- Fix cross-endian communication.
 -- Fix slurmd segfault when seeing authentication issues alongside a failed
    message forward.

* Changes in Slurm 20.11.9
==========================
 -- burst_buffer - add missing common directory to the Makefile SUBDIRS.
 -- sacct - fix truncation when printing jobidraw field.
 -- GRES - Fix loading state of jobs using --gpus to request gpus.
 -- Fix minor logic error in health check node state output
 -- Fix GCC 11.1 compiler warnings.
 -- Delay steps when memory already used instead of rejecting step request.
 -- Fix memory leak in the slurmdbd when requesting wckeys from all clusters.
 -- Fix determining if a reservation is used or not.
 -- openapi/v0.0.35 - Honor kill_on_invalid_dependency as job parameter.
 -- openapi/v0.0.36 - Honor kill_on_invalid_dependency as job parameter.
 -- Fix various issues dealing with updates on magnetic reservations that could
    lead to abort slurmctld.
 -- openapi/v0.0.36 - Avoid setting default values of min_cpus, job name, cwd,
    mail_type, and contiguous on job update.
 -- openapi/v0.0.36 - Clear user hold on job update if hold=false.
 -- Fix slurmctld segfault due to a bit_test() call with a MAINT+ANY_NODES
    reservation NULL node_bitmap.
 -- Fix slurmctld segfault due to a bit_copy() call with a REPLACE+ANY_NODES
    reservation NULL node_bitmap.
 -- Fix error in GPU frequency validation logic.
 -- Fix error in pmix logic dealing with the incorrect size of buffer.
 -- PMIx v1.1.4 and below are no longer supported.
 -- Fix shutdown of slurmdbd plugin to correctly notice when the agent thread
    finishes.
 -- Fix slurmctld segfault due to job array --batch features double free.
 -- CVE-2022-29500 - Prevent credential abuse.
 -- CVE-2022-29501 - Prevent abuse of REQUEST_FORWARD_DATA.

* Changes in Slurm 20.11.8
==========================
 -- slurmctld - fix erroneous "StepId=CORRUPT" messages in error logs.
 -- Correct the error given when auth plugin fails to pack a credential.
 -- Fix unused-variable compiler warning on FreeBSD in fd_resolve_path().
 -- acct_gather_filesystem/lustre - only emit collection error once per step.
 -- srun - leave SLURM_DIST_UNKNOWN as default for --interactive.
 -- Add GRES environment variables (e.g., CUDA_VISIBLE_DEVICES) into the
    interactive step, the same as is done for the batch step.
 -- Fix various potential deadlocks when altering objects in the database
    dealing with every cluster in the database.
 -- slurmrestd - handle slurmdbd connection failures without segfaulting.
 -- slurmrestd - fix segfault for searches in slurmdb/v0.0.36/jobs.
 -- slurmrestd - remove (non-functioning) users query parameter for
    slurmdb/v0.0.36/jobs from openapi.json
 -- slurmrestd - fix segfault in slurmrestd db/jobs with numeric queries
 -- slurmrestd - add argv handling for job/submit endpoint.
 -- srun - fix broken node step allocation in a heterogeneous allocation.
 -- Fail step creation if -n is not multiple of --ntasks-per-gpu.
 -- job_container/tmpfs - Fix slowdown on teardown.
 -- Fix problem with SlurmctldProlog where requeued jobs would never launch.
 -- job_container/tmpfs - Fix issue when restarting slurmd where the namespace
    mount points could disappear.
 -- sacct - avoid truncating JobId at 34 characters.
 -- scancel - fix segfault when --wckey filtering option is used.
 -- select/cons_tres - Fix memory leak.
 -- Prevent file descriptor leak in job_container/tmpfs on slurmd restart.
 -- slurmrestd/dbv0.0.36 - Fix values dumped in job state/current and
    job step state.
 -- slurmrestd/dbv0.0.36 - Correct description for previous state property.
 -- perlapi/libslurmdb - expose tres_req_str to job hash.
 -- scrontab - close and reopen temporary crontab file to deal with editors
    that do not change the original file, but instead write out then rename
    a new file.
 -- sstat - fix linking so that it will work when --without-shared-libslurm
    was used to build Slurm.
 -- Clear allocated cpus for running steps in a job before handling requested
    nodes on new step.
 -- Don't reject a step if not enough nodes are available. Instead, defer the
    step until enough nodes are available to satisfy the request.
 -- Don't reject a step if it requests at least one specific node that is
    already allocated to another step. Instead, defer the step until the
    requested node(s) become available.
 -- slurmrestd - add description for slurmdb/job endpoint.
 -- Better handling of --mem=0.
 -- Ignore DefCpuPerGpu when --cpus-per-task given.
 -- sacct - fix segfault when printing StepId (or when using --long).

* Changes in Slurm 20.11.7
==========================
 -- slurmd - handle configless failures gracefully instead of hanging
    indefinitely.
 -- select/cons_tres - fix Dragonfly topology not selecting nodes in the same
    leaf switch when it should as well as requests with --switches option.
 -- Fix issue where certain step requests wouldn't run if the first node in the
    job allocation was full and there were idle resources on other nodes in
    the job allocation.
 -- Fix deadlock issue with <Prolog|Epilog>Slurmctld.
 -- torque/qstat - fix printf error message in output.
 -- When adding associations or wckeys avoid checking multiple times a user or
    cluster name.
 -- Fix wrong jobacctgather information on a step on multiple nodes
    due to timeouts sending its the information gathered on its node.
 -- Fix missing xstrdup which could result in slurmctld segfault on array jobs.
 -- Fix security issue in PrologSlurmctld and EpilogSlurmctld by always
    prepending SPANK_ to all user-set environment variables. CVE-2021-31215.

* Changes in Slurm 20.11.6
==========================
 -- Fix sacct assert with the --qos option.
 -- Use pkg-config --atleast-version instead of --modversion for systemd.
 -- common/fd - fix getsockopt() call in fd_get_socket_error().
 -- Properly handle the return from fd_get_socket_error() in _conn_readable().
 -- cons_res - Fix issue where running jobs were not taken into consideration
    when creating a reservation.
 -- Avoid a deadlock between job_list for_each and assoc QOS_LOCK.
 -- Fix TRESRunMins usage for partition qos on restart/reconfig.
 -- Fix printing of number of tasks on a completed job that didn't request
    tasks.
 -- Fix updating GrpTRESRunMins when decrementing job time is bigger than it.
 -- Make it so we handle multithreaded allocations correctly when doing
    --exclusive or --core-spec allocations.
 -- Fix incorrect round-up division in _pick_step_cores
 -- Use appropriate math to adjust cpu counts when --ntasks-per-core=1.
 -- cons_tres - Fix consideration of power downed nodes.
 -- cons_tres - Fix DefCpuPerGPU, increase cpus-per-task to match with
    gpus-per-task * cpus-per-gpu.
 -- Fix under-cpu memory auto-adjustment when MaxMemPerCPU is set.
 -- Make it possible to override CR_CORE_DEFAULT_DIST_BLOCK.
 -- Perl API - fix retrieving/storing of slurm_step_id_t in job_step_info_t.
 -- Recover state of burst buffers when slurmctld is restarted to avoid skipping
    burst buffer stages.
 -- Fix race condition in burst buffer plugin which caused a burst buffer
    in stage-in to not get state saved if slurmctld stopped.
 -- auth/jwt - print an error if jwt_file= has not been set in slurmdbd.
 -- Fix RESV_DEL_HOLD not being a valid state when using squeue --states.
 -- Add missing squeue selectable states in valid states error message.
 -- Fix scheduling last array task multiple times on error, causing segfault.
 -- Fix issue where a step could be allocated more memory than the job when
    dealing with --mem-per-cpu and --threads-per-core.
 -- Fix removing qos from assoc with -= can lead to assoc with no qos
 -- auth/jwt - fix segfault on invalid credential in slurmdbd due to
    missing validate_slurm_user() function in context.
 -- Fix single Port= not being applied to range of nodes in slurm.conf
 -- Fix Jobs not requesting a tres are not starting because of that tres limit.
 -- acct_gather_energy/rapl - fix AveWatts calculation.
 -- job_container/tmpfs - Fix issues with cleanup and slurmd restarting on
    running jobs.

* Changes in Slurm 20.11.5
==========================
 -- Fix main scheduler bug where bf_hetjob_prio truncates SchedulerParameters.
 -- Fix sacct not displaying UserCPU, SystemCPU and TotalCPU for large times.
 -- scrontab - fix to return the correct index for a bad #SCRON option.
 -- scrontab - fix memory leak when invalid option found in #SCRON line.
 -- Add errno for when a user requests multiple partitions and they are using
    partition based associations.
 -- Fix issue where a job could run in a wrong partition when using
    EnforcePartLimits=any and partition based associations.
 -- Remove possible deadlock when adding associations/wckeys in multiple
    threads.
 -- When using PrologFlags=alloc make sure the correct Slurm version is set
    in the credential.
 -- When sending a job a warning signal make sure we always send SIGCONT
    beforehand.
 -- Fix issue where a batch job would continue running if a prolog failed on a
    node that wasn't the batch host and requeuing was disabled.
 -- Fix issue where sometimes salloc/srun wouldn't get a message about a prolog
    failure in the job's stdout.
 -- Requeue or kill job on a prolog failure when PrologFlags is not set.
 -- Fix race condition causing node reboots to get requeued before
    ResumeTimeout expires.
 -- Preserve node boot_req_time on reconfigure.
 -- Preserve node power_save_req_time on reconfigure.
 -- Fix node reboots being queued and issued multiple times and preventing the
    reboot to time out.
 -- Fix debug message related to GrpTRESRunMin (AssocGrpCPURunMinutesLimit).
 -- Fix run_command to exit correctly if track_script kills the calling thread.
 -- Only requeue a job when the PrologSlurmctld returns nonzero.
 -- When a job is signaled with SIGKILL make sure we flush all
    prologs/setup scripts.
 -- Handle burst buffer scripts if the job is canceled while stage_in is
    happening.
 -- When shutting down the slurmctld make note to ignore error message when
    we have to kill a prolog/setup script we are tracking.
 -- scrontab - add support for the --open-mode option.
 -- acct_gather_profile/influxdb - avoid segfault on plugin shutdown if setup
    has not completed successfully.
 -- Reduce delay in starting salloc allocations when running with prologs.
 -- Fix issue passing open fd's with [send|recv]msg.
 -- Alter AllocNodes check to work if the allocating node's domain doesn't
    match the slurmctld's. This restores the pre-20.11 behavior.
 -- Fix slurmctld segfault if jobs from a prior version had the now-removed
    INVALID_DEPEND state flag set and were allowed to run in 20.11.
 -- Add job_container/tmpfs plugin to give a method to provide a private /tmp
    per job.
 -- Set the correct core affinity when using AutoDetect.
 -- Start relying on the conf again in xcpuinfo_mac_to_abs().
 -- Fix global_last_rollup assignment on job resizing.
 -- slurmrestd - hand over connection context on _on_message_complete().
 -- slurmrestd - mark "environment" as required for job submissions in schema.
 -- slurmrestd - Disable credential reuse on the same TCP connection. Pipelined
    HTTP connections will have to provide authentication with every request.
 -- Avoid data conversion error on NULL strings in data_get_string_converted().
 -- Handle situation where slurmctld is too slow processing
    REQUEST_COMPLETE_BATCH_SCRIPT and it gets resent from the slurmstepd.
 -- Fix sacct crashing with the --qos option

* Changes in Slurm 20.11.4
==========================
 -- Fix node selection for advanced reservations with features.
 -- mpi/pmix: Handle pipe failure better when using ucx.
 -- mpi/pmix: include PMIX_NODEID for each process entry.
 -- Fix job getting rejected after being requeued on same node that died.
 -- job_submit/lua - add "network" field.
 -- Fix situations when a reoccuring reservation could erroneously skip a
    period.
 -- Ensure that a reservations [pro|epi]log are ran on reoccuring reservations.
 -- Fix threads-per-core memory allocation issue when using CR_CPU_MEMORY.
 -- Fix scheduling issue with --gpus.
 -- Fix gpu allocations that request --cpus-per-task.
 -- mpi/pmix: fixed print messages for all PMIXP_* macros
 -- Add mapping for XCPU to --signal option.
 -- Fix regression in 20.11 that prevented a full pass of the main scheduler
    from ever executing.
 -- Work around a glibc bug in which "0" is incorrectly printed as "nan"
    which will result in corrupted association state on restart.
 -- Fix regression in 20.11 which made slurmd incorrectly attempt to find the
    parent slurmd address when not applicable and send incorrect reverse-tree
    info to the slurmstepd.
 -- Fix cgroup ns detection when using containers (e.g. LXC or Docker).
 -- scrontab - change temporary file handling to work with emacs.

* Changes in Slurm 20.11.3
==========================
 -- Fix segfault when parsing bad "#SBATCH hetjob" directive.
 -- Allow countless gpu:<type> node GRES specifications in slurm.conf.
 -- PMIx - Don't set UCX_MEM_MMAP_RELOC for older version of UCX (pre 1.5).
 -- Don't green-light any GPU validation when core conversion fails.
 -- Allow updates to a reservation in the database that starts in the future.
 -- Better check/handling of primary key collision in reservation table.
 -- Improve reported error and logging in _build_node_list().
 -- Fix uninitialized variable in _rpc_file_bcast() which could lead to an
    incorrect error return from sbcast / srun --bcast.
 -- mpi/cray_shasta - fix use-after-free on error in _multi_prog_parse().
 -- Cray - Handle setting correct prefix for cpuset cgroup with respects to
    expected_usage_in_bytes.  This fixes Cray's OOM killer.
 -- mpi/pmix: Fix PMIx_Abort support.
 -- Don't reject jobs allocating more cores than tasks with MaxMemPerCPU.
 -- Fix false error message complaining about oversubscribe in cons_tres.
 -- scrontab - fix parsing of empty lines.
 -- Fix regression causing spank_process_option errors to be ignored.
 -- Avoid making multiple interactive steps.
 -- Fix corner case issues where step creation should fail.
 -- Fix job rejection when --gres is less than --gpus.
 -- Fix regression causing spank prolog/epilog not to be called unless the
    spank plugin was loaded in slurmd context.
 -- Fix regression preventing SLURM_HINT=nomultithread from being used
    to set defaults for salloc->srun, sbatch->srun sequence.
 -- Reject job credential if non-superuser sets the LAUNCH_NO_ALLOC flag.
 -- Make it so srun --no-allocate works again.
 -- jobacct_gather/linux - Don't count memory on tasks that have already
    finished.
 -- Fix 19.05/20.02 batch steps talking with a 20.11 slurmctld.
 -- jobacct_gather/common - Do not process jobacct's with same taskid when
    calling prec_extra.
 -- Cleanup all tracked jobacct tasks when extern step child process finishes.
 -- slurmrestd/dbv0.0.36 - Correct structure of dbv0.0.36_tres_list.
 -- Fix regression causing task/affinity and task/cgroup to be out of sync when
    configured ThreadsPerCore is different than the physical threads per core.
 -- Fix situation when --gpus is given but not max nodes (-N1-1) in a job
    allocation.
 -- Interactive step - ignore cpu bind and mem bind options, and do not set
    the associated environment variables which lead to unexpected behavior
    from srun commands launched within the interactive step.
 -- Handle exit code from pipe when using UCX with PMIx.
 -- Partially revert changes made in 20.11.0 to srun step behavior. This change
    required steps to explicitly request resources, otherwise the minimal set
    of resources required would be assigned. This broke OpenMPI's 'mpiexec'
    alongside other use cases. This reverts the behavior such that all resources
    on a node are assigned to the job step by default.
 -- srun - add a new --exact option, and deprecate the --whole option (which has
    been restored as the default behavior).

* Changes in Slurm 20.11.2
==========================
 -- Fix older versions of sacct not working with 20.11.
 -- Fix slurmctld crash when using a pre-20.11 srun in a job allocation.
 -- Correct logic problem in _validate_user_access.
 -- Fix libpmi to initialize Slurm configuration correctly.

* Changes in Slurm 20.11.1
==========================
 -- Fix spelling of "overcomited" to "overcomitted" in sreport's cluster
    utilization report.
 -- Silence debug message about shutting down backup controllers if none are
    configured.
 -- Don't create interactive srun until PrologSlurmctld is done.
 -- Fix fd symlink path resolution.
 -- Fix slurmctld segfault on subnode reservation restore after node
    configuration change.
 -- Fix resource allocation response message environment allocation size.
 -- Ensure that details->env_sup is NULL terminated.
 -- select/cray_aries - Correctly remove jobs/steps from blades using NPC.
 -- cons_tres - Avoid max_node_gres when entire node is allocated with
    --ntasks-per-gpu.
 -- Allow NULL arg to data_get_type().
 -- In sreport have usage for a reservation contain all jobs that ran in the
    reservation instead of just the ones that ran in the time specified. This
    matches the report for the reservation is not truncated for a time period.
 -- Fix issue with sending wrong batch step id to a < 20.11 slurmd.
 -- Add a job's alloc_node to lua for job modification and completion.
 -- Fix regression getting a slurmdbd connection through the perl API.
 -- Stop the extern step terminate monitor right after proctrack_g_wait().
 -- Fix removing the normalized priority of assocs.
 -- slurmrestd/v0.0.36 - Use correct name for partition field:
    "min nodes per job" -> "min_nodes_per_job".
 -- slurmrestd/v0.0.36 - Add node comment field.
 -- Fix regression marking cloud nodes as "unexpectedly rebooted" after
    multiple boots.
 -- Fix slurmctld segfault in _slurm_rpc_job_step_create().
 -- slurmrestd/v0.0.36 - Filter node states against NODE_STATE_BASE to avoid
    the extended states all being reported as "invalid".
 -- Fix race that can prevent the prolog for a requeued job from running.
 -- cli_filter - add "type" to readily distinguish between the CLI command in
    use.
 -- smail - reduce sleep before seff to 5 seconds.
 -- Ensure SPANK prolog and epilog run without an explicit PlugStackConfig.
 -- Disable MySQL automatic reconnection.
 -- Fix allowing "b" after memory unit suffixes.
 -- Fix slurmctld segfault with reservations without licenses.
 -- Due to internal restructuring ahead of the 20.11 release, applications
    calling libslurm MUST call slurm_init(NULL) before any API calls.
    Otherwise the API call is likely to fail due to libslurm's internal
    configuration not being available.
 -- slurm.spec - allow custom paths for PMIx and UCX install locations.
 -- Use rpath if enabled when testing for Mellanox's UCX libraries.
 -- slurmrestd/dbv0.0.36 - Change user query for associations to optional.
 -- slurmrestd/dbv0.0.36 - Change account query for associations to optional.
 -- mpi/pmix - change the error handler error message to be more useful.
 -- Add missing connection in acct_storage_p_{clear_stats, reconfig, shutdown}.
 -- Perl API - fix issue when running in configless mode.
 -- nss_slurm - avoid deadlock when stray sockets are found.
 -- Display correct value for ScronParameters in 'scontrol show config'.

* Changes in Slurm 20.11.0
==========================
 -- x11 forwarding: fix race on setup that prevented X11 forwarding from
    working within the new Interactive Step.
 -- Fix various Coverity issues.
 -- cons_tres - Fix DefCpuPerGPU
 -- Make it so you can have a job with multiple partitions and multiple
    reservations.
 -- Fix primary controller assert when shutting down backup controllers.
 -- Enforce invalid argument combinations with --ntasks-per-gpu
 -- slurmrestd/auth_local - Verify username on slurm_rest_auth_p_apply()
 -- Fix requeue of job on node failure.
 -- Prevent a job from requesting too much memory if it
    requests MEM_PER_CPUS and --threads-per-core < the number of threads
    on a core.
 -- slurmrestd - Avoid sending close header after body in
    _operations_router_reject().
 -- slurmrestd - Set new job environment for SLURM_JOB_NAME, SLURM_OPEN_MODE,
    SLURM_JOB_DEPENDENCY, SLURM_PROFILE, SLURM_ACCTG_FREQ, SLURM_NETWORK and
    SLURM_CPU_FREQ_REQ to match sbatch.
 -- slurmrestd - Avoid defaulting open_mode to append for job submission.
 -- Fix "scontrol takeover [backup]" hangs when specifying a backup > 1.
 -- salloc now waits for PrologSlurmctld to finish before entering the shell.

* Changes in Slurm 20.11.0rc2
==============================
 -- MySQL - Remove potential race condition when sending updates to a cluster
    and commit_delay used.
 -- Fixed regression in rc1 where sinfo et al would not show a node in a resv
    state.
 -- select/linear will now allocate up to nodes RealMemory when configured with
    SelectTypeParameters=CR_Memory and --mem=0 specified. Previous behavior was
    no memory accouted and no memory limits implied to job.
 -- Remove unneeded lock check from running the slurmctld prolog for a job.
 -- Fix duplicate key error on clean starts after slurmctld is killed.
 -- Avoid double free of step_record_t in the slurmctld when node is removed
    from config.
 -- Zero out step_record_t's magic when freed.
 -- Fix sacctmgr clearing QosLevel when trailing comma is used.
 -- slurmrestd - fix a fatal() error when connecting over IPv6.
 -- slurmrestd - add API to interface with slurmdbd.
 -- mpi/cray_shasta - fix PMI port parsing for non-contiguous port ranges.
 -- squeue and sinfo -O no longer repeat the last suffix specified.
 -- cons_tres - fix regression regarding gpus with --cpus-per-task.
 -- Avoid non-async-signal-safe functions calls in X11 fowarding which can
    lead to the extern step terminating unexpectedly.
 -- Don't send job completion email for revoked federation jobs.
 -- Fix device or resource busy errors on cgroup cleanup on older kernels.
 -- Avoid binding to IPv6 wildcard address in slurmd if IPv6 is not explicitly
    enabled.
 -- Make ntasks_per_gres work with cpus_per_task.
 -- Various alterations in reference to ntasks_per_tres.
 -- slurmrestd - multiple changes to make Slurm's OpenAPI spec compatible with
    https://openapi-generator.tech/.
 -- nss_slurm - avoid loading slurm.conf to avoid issues on configless systems,
    or systems with config files loaded on shared storage.
 -- scrontab - add cli_filter hooks.
 -- job_submit/lua - expose a "cron_job" flag to identify jobs submitted
    through scrontab.
 -- PMIx - fix potential buffer overflows from use of unpackmem().
    CVE-2020-27745.
 -- X11 forwarding - fix potential leak of the magic cookie when sent as an
    argument to the xauth command. CVE-2020-27746.

* Changes in Slurm 20.11.0rc1
==============================
 -- Fix corner case issue with interrupted resource allocation requests.
 -- Pack all gres information in the slurmd to send to the stepd to help
    reduce calls in the stepd to read gres.conf.
 -- The example systemd unit files have been changed to the "simple" type of
    operation, and the daemon will now run in the foreground within systemd
    instead of daemonizing itself.
 -- Add --gpu-bind=mask_gpu reusability functionality if tasks > elements.
 -- Add separate unversion libslurm_pmi.so library to use with libpmi.so.
 -- Configurations including CR_Socket and AllowSpecResourcesUsage=NO will now
    fatal if there are no allocatable sockets due to core specialization.
 -- Make sacct get UID from database instead of from the username and a
    system call. Add --use-local-uid option to sacct to use old behavior.
 -- Limit number of jobs updated by as_mysql_flush_jobs_on_cluster() to avoid
    boot loop failures in slurmdbd.
 -- Add Autodetect option to NodeName line in gres.conf to override the global
    Autodetect option.
 -- Add NetworkRaw debugflag.
 -- Make REQUEST_LAUNCH_PROLOG handler fail if PrologFlags includes Contain and
    the credential has already expired when setting the memory limits.
 -- Reject jobs that request more nodes than provided in job credential if
    PrologFlags includes Contain.
 -- Slurmdbd is now set to fatal if slurmdbd.conf file isn't owned by SlurmUser
    or it's mode is not set to 0600.
 -- libsrun/opt - use slurm_option_reset() when ignoring ntasks_per_node.
 -- Removed "regression" script from testsuite. Please use regression.py.
 -- Avoid communication issues if TreeWidth greatly exceeds the node count
    for a job.
 -- accounting_storage/filetxt has been removed as an option.
 -- Update and validate reservations after loading from state save.
 -- Update and validate reservations after setting node to down, drain or
    updating node state.
 -- Change reservation selection order to attempt to reserve unreserved nodes
    first, followed by reserved nodes under OVERLAP|MAINT reservations, and
    finally all nodes in the partition for MAINT reservations.
 -- Add [Accounting]StorageParameters slurm[dbd].conf parameter.
 -- Improve detection and logging of incompatible options involving the
    REPLACE[_DOWN] flags when creating/updating reservations.
 -- Export SLURMD_NODENAME envvar to HealthCheckProgram.
 -- SlurmctldParameters=user_resv_delete which allows any user able to run
    in a reservation to delete it.
 -- Set default unit when parsing #BSUB -M to KB to match LSF documentation.
 -- slurmrestd - fatal() when accept() returns an unexpected result.
 -- slurmrestd - Parse multiple OpenAPI specifications for path resolution.
 -- slurmrestd - Add v0.0.36 OpenAPI plugin.
 -- slurmrestd/v0.0.36 - Add error schema.
 -- slurmrestd/v0.0.36 - return array of nodes instead of dictionary.
 -- slurmrestd/v0.0.36 - return array of partitions instead of dictionary
 -- slurmrestd/v0.0.36 - return -1 (integer) instead of INFINITE (as a string)
 -- slurmrestd/v0.0.36 - return array of pings instead of dictionary
 -- slurmrestd/v0.0.36 - Simplify possible signals for canceling jobs.
 -- slurmrestd/v0.0.36 - Simplify exclusive for jobs submissions.
 -- slurmrestd/v0.0.36 - Simplify nodes for jobs submissions.
 -- slurmrestd/v0.0.36 - Use "/slurm/v0.0.36/" as server instead of "/" to
    simply naming for clients.
 -- Add 'scontrol update res=name skip' to skip the current/next reoccurring
    reservation.
 -- Add ability for reservations to be accessed by Linux Groups.
 -- Let users submit to multiple reservations as they can partitions.
 -- Report a wider range of error codes for sbcast when opening a file.
 -- Rename acct_gather_energy/cray_aries to acct_gather_energy/pm_counters.
 -- Removed gres_alloc and gres_req from job_record_t.Tres should be used
    instead.
 -- The JobCompLoc URL endpoint when the JobCompType=jobcomp/elasticsearch
    plugin is enabled is now fully configurable and the plugin no longer appends
    a hardcoded "/slurm/jobcomp" index and type suffix to it.
 -- Add check to the reservation create/update logic to prevent an inconsistent
    state without nodes and with no ANY_NODES flag with either Licenses,
    BurstBuffer and/or Watts.
 -- slurmrestd - allow the host to be optional when specifying the address to
    listen on.
 -- slurmrestd - Log numerical service name when referencing host port pairs.
 -- slurmrestd - Log host port information in RFC3986 format.
 -- sview - Remove (long-broken) batch job submission option.
 -- Dynamic Future Nodes - slurmds started with -F[<feature>] will be
    associated with a nodename in Slurm that matches the same hardware
    configuration.
 -- SlurmctldParameters=cloud_reg_addrs - Cloud nodes automatically get
    NodeAddr and NodeHostname set from slurmd registration.
 -- SlurmctldParameters=power_save[_min]_interval - Configure how often the
    power save module looks to do work.
 -- Add CLOUD state to sinfo --state filter list.
 -- Add ability for sinfo state filtering to require all listed states.
 -- Add the "Reserved" license count to 'scontrol show licenses'.
 -- Don't display MailUser/MailType in scontrol show jobs if mail won't be sent.
 -- Throw an error and ignore CpuSpecList if it cannot be translated to bitmap
    of number of CPUs size.
 -- Validate at submission that --hint is mutully exclusive with --cpu-bind,
    --ntasks-per-core, --threads-per-core or -B.
 -- Make --exclusive the default with srun as a step adding --overlap to
    reverse behavior.
 -- Add --whole option to srun to allocate all resources on a node
    in an allocation.
 -- Allow --threads-per-core to influence task layout/binding.
 -- Remove support for "default_gbytes" option from SchedulerParameters.
 -- gres.conf - Add new MultipleFiles configuration entry to allow a single
    GRES to manage multiple device files simultaneously.
 -- Fix scontrol write config to output OverSubscribe intead of Shared.
 -- job_submit/lua - print/access oversubscribe variable with "oversubscribe".
 -- Remove SallocDefaultCommand option.
 -- Add support for an "Interactive Step", designed to be used with salloc to
    launch a terminal on an allocated compute node automatically.
 -- Add time specification: "now-<x>" (i.e. subtract from the present)
 -- Add IPv6 support. Must be explicitly enabled with EnableIPv6 in
    CommunicationParameters.
 -- Add LaunchParameters=mpir_use_nodeaddr configuration option.
 -- Allow use of a target directory with "srun --bcast", and change the default
    filename to include the node name as well.
 -- Set -fno-omit-frame-pointer compiler flag.
 -- Add --mail-type=INVALID_DEPEND option to salloc, sbatch, and srun.
 -- Fix passing names with commas to the slurmdbd.
 -- squeue - put sorted start times of "N/A" or 0 at the end of the list.
 -- Add correspond_after_task_cnt to SchedulerParameters
 -- Fix node's not being considered unresponsive/down for ResumeTimeout after
    reboot or power_up.
 -- Change "scontrol reboot ASAP" to use next_state=resume logic.
 -- Exclude HetJobs from GANG scheduling operations.
 -- Add scrontab as a new command.
 -- Enable -lnodes=#:gpus=# in #PBS/qsub -l nodes syntax.
 -- Add admin-settable "Comment" field to each Node.
 -- Fix show runaway and/on hidden partitions for >= Operator.
 -- Add --ntasks-per-gpu option.
 -- Add --gpu-bind=single option.

* Changes in Slurm 20.02.8
==========================

* Changes in Slurm 20.02.7
==========================
 -- cons_tres - Fix DefCpuPerGPU
 -- select/cray_aries - Correctly remove jobs/steps from blades using NPC.
 -- Fix false positive oom-kill events on extern step termination when
    jobacct_gather/cgroup configured.
 -- Ensure SPANK prolog and epilog run without an explicit PlugStackConfig.
 -- Fix missing xstrdup which could result in slurmctld segfault on array jobs.
 -- Fix security issue in PrologSlurmctld and EpilogSlurmctld by always
    prepending SPANK_ to all user-set environment variables. CVE-2021-31215.

* Changes in Slurm 20.02.6
==========================
 -- Fix sbcast --fanout option.
 -- Tighten up keyword matching for --dependency.
 -- Fix "squeue -S P" not sorting by partition name.
 -- Fix segfault in slurmctld if group resolution fails during job credential
    creation.
 -- sacctmgr - Honor PreserveCaseUser when creating users with load command.
 -- Avoid attempting to schedule jobs on magnetic reservations when they aren't
    allowed.
 -- Always make sure we clear the magnetic flag from a job.
 -- In backfill avoid NULL pointer dereference.
 -- Fix Segfault at end of slurmctld if you have a magnetic reservation and
    you shutdown the slurmctld.
 -- Silence security warning when a Slurm is trying a job for a
    magnetic reservation.
 -- Have sacct exit correctly when a user/group id isn't valid.
 -- Remove extra \n from invalid user/group id error message.
 -- Detect when extern steps trigger OOM events and mark extern step correctly.
 -- pam_slurm_adopt - permit root access to the node before reading the config
    file, which will give root a chance to fix the config if missing or broken.
 -- Reset DefMemPerCPU, MaxMemPerCPU, and TaskPluginParam (among other minor
    flags) on reconfigure.
 -- Fix incorrect memory handling of mail_user when updating mail_type=none.
 -- Handle mail_user and mail_type independently.
 -- Fix thread-safety issue with assoc_mgr_get_admin_level().
 -- Ignore step features if equal to job features
 -- Fix slurmstepd segfault caused by incorrect strtok() usage.
 -- CRAY - Remove unneeded ATP spank plugin from ansible playbook.
 -- Fix core selection for exclusive step on nodes where CPUs == Cores.
 -- Fix topology aware scheduling reservations.
 -- Fix loading cpus_per_task on a job from state file.
 -- When a partition has no nodes fix estimate of max cpus possible on a job
    trying to run there.
 -- In cons_tres fix sorting functions to handle node/topo weight
    correctly.
 -- Fix regression in 20.02.5 where you couldn't request contraints with a
    simple & and a count.
 -- Limit the number of threads for servicing emails.
 -- Avoid possible double init race condition in assoc_mgr_lock().
 -- Add missing locks in slurm_cred_handle_reissue().
 -- Add missing locks in slurm_cred_revoked().
 -- Fix slurmctld segfault due to tight reconfigure RPC requests by serializing
    the RPC handler processing logic.
 -- Use _exit() instead exit() after fork().
 -- Perl API - fix hang reading config in configless environments.
 -- slurmrestd - request detailed node information to populate GRES fields.
 -- slurmrestd - request detailed job information to populate GRES fields.
 -- Fix job license update bug on array tasks or hetjob components.
 -- Fix job partition update bug on array tasks or hetjob components.
 -- Fix slurmctld segfault on _pick_best_nodes() when processing a job request
    with XOR'd constraints and no nodeset has the feature.
 -- Fix job requests rejected with incorrect NODE_CONFIG_UNAVAIL when nodes are
    actually only busy due to an overlapping MAINT reservation.
 -- Fix sacctmgr allowing the deletion of a user's default account.
 -- Fix srun and other Slurm commands running within a "configless" salloc
    terminal.
 -- MySQL - Correctly handle QOS deletion from assocation tables.
 -- Fix update of First_Cores flag in a reservation.
 -- Fix parsing of update reservation flags.
 -- Fix --switches for cons_tres.
 -- Retry connection on ETIMEDOUT in slurm_send_addr_recv_msgs.
 -- Fix wait for RPC_PROLOG_LAUNCH notification 2*MessageTimeout.
 -- Have slurm_send_addr_recv_msgs conn_timeout to match rpc_wait in slurmd.
 -- pam_slurm_adopt - operate correctly even if ConstrainRAMSpace is not
    enabled on the node by falling back to the cpuset, devices, or freezer
    subsystem instead.
 -- slurmrestd - use memmove() instead of memcpy() in string manipulation
    to avoid bugs related to overlapping memory regions.
 -- slurmrestd - avoid xassert() failure on duplicated headers in request.
 -- Remove stale 'ReqNodeNotAvail, Reserved for maintenance' message from
    pending jobs after a maintenance reservation ended.
 -- MySQL - Stop steps from printing when outside time range.
 -- Fixed kmem limit calculation to use MaxKmemPercent correctly.
 -- Fix initialization of cpuset.mems/cpus on uid cgroup subdir.
 -- MySQL - Remove potential race condition when sending updates to a cluster
    and commit_delay used.
 -- Avoid double free of step_record_t in the slurmctld when node is removed
    from config.
 -- cons_tres - fix regression regarding gpus with --cpus-per-task.
 -- Don't send job completion email for revoked federation jobs.
 -- PMIx - fix potential buffer overflows from use of unpackmem().
    CVE-2020-27745.
 -- X11 forwarding - fix potential leak of the magic cookie when sent as an
    argument to the xauth command. CVE-2020-27746.

* Changes in Slurm 20.02.5
==========================
 -- Fix leak of TRESRunMins when job time is changed with --time-min
 -- pam_slurm - explicitly initialize slurm config to support configless mode.
 -- scontrol - Fix exit code when creating/updating reservations with wrong
    Flags.
 -- When a GRES has a no_consume flag, report 0 for allocated.
 -- Fix cgroup cleanup by jobacct_gather/cgroup.
 -- When creating reservations/jobs don't allow counts on a feature unless
    using an XOR.
 -- Improve number of boards discovery
 -- Fix updating a reservation NodeCnt on a zero-count reservation.
 -- slurmrestd - provide an explicit error messages when PSK auth fails.
 -- cons_tres - fix job requesting single gres per-node getting two or more
    nodes with less CPUs than requested per-task.
 -- cons_tres - fix calculation of cores when using gres and cpus-per-task.
 -- cons_tres - fix job not getting access to socket without GPU or with less
    than --gpus-per-socket when not enough cpus available on required socket
    and not using --gres-flags=enforce binding.
 -- Fix HDF5 type version build error.
 -- Fix creation of CoreCnt only reservations when the first node isn't
    available.
 -- Fix wrong DBD Agent queue size in sdiag when using accounting_storage/none.
 -- Improve job constraints XOR option logic.
 -- Fix preemption of hetjobs when needed nodes not in leader component.
 -- Fix wrong bit_or() messing potential preemptor jobs node bitmap, causing
    bad node deallocations and even allocation of nodes from other partitions.
 -- Fix double-deallocation of preempted non-leader hetjob components.
 -- slurmdbd - prevent truncation of the step nodelists over 4095.
 -- Fix nodes remaining in drain state state after rebooting with ASAP option.

* Changes in Slurm 20.02.4
==========================
 -- srun - suppress job step creation warning message when waiting on
    PrologSlurmctld.
 -- slurmrestd - fix incorrect return values in data_list_for_each() functions.
 -- mpi/pmix - fix issue where HetJobs could fail to launch.
 -- slurmrestd - set content-type header in responses.
 -- Fix cons_res GRES overallocation for --gres-flags=disable-binding.
 -- Fix cons_res incorrectly filtering cores with respect to GRES locality for
    --gres-flags=disable-binding requests.
 -- Fix regression where a dependency on multiple jobs in a single array using
    underscores would only add the first job.
 -- slurmrestd - fix corrupted output due to incorrect use of memcpy().
 -- slurmrestd - address a number of minor Coverity warnings.
 -- Handle retry failure when slurmstepd is communicating with srun correctly.
 -- Fix jobacct_gather possibly duplicate stats when _is_a_lwp error shows up.
 -- Fix tasks binding to GRES which are closest to the allocated CPUs.
 -- Fix AMD GPU ROCM 3.5 support.
 -- Fix handling of job arrays in sacct when querying specific steps.
 -- slurmrestd - avoid fallback to local socket authentication if JWT
    authentication is ill-formed.
 -- slurmrestd - restrict ability of requests to use different authentication
    plugins.
 -- slurmrestd - unlink named unix sockets before closing.
 -- slurmrestd - fix invalid formatting in openapi.json.
 -- Fix batch jobs stuck in CF state on FrontEnd mode.
 -- Add a separate explicit error message when rejecting changes to active node
    features.
 -- cons_common/job_test - fix slurmctld SIGABRT due to double-free.
 -- Fix updating reservations to set the duration correctly if updating the
    start time.
 -- Fix update reservation to promiscuous mode.
 -- Fix override of job tasks count to max when ntasks-per-node present.
 -- Fix min CPUs per node not being at least CPUs per task requested.
 -- Fix CPUs allocated to match CPUs requested when requesting GRES and
    threads per core equal to one.
 -- Fix NodeName config parsing with Boards and without CPUs.
 -- Ensure SLURM_JOB_USER and SLURM_JOB_UID are set in SrunProlog/Epilog.
 -- Fix error messages for certain invalid salloc/sbatch/srun options.
 -- pmi2 - clean up sockets at step termination.
 -- Fix 'scontrol hold' to work with 'JobName'.
 -- sbatch - handle --uid/--gid in #SBATCH directives properly.
 -- Fix race condition in job termination on slurmd.
 -- Print specific error messages if trying to run use certain
    priority/multifactor factors that cannot work without SlurmDBD.
 -- Avoid partial GRES allocation when --gpus-per-job is not satisfied.
 -- Cray - Avoid referencing a variable outside of it's correct scope when
    dealing with creating steps within a het job.
 -- slurmrestd - correctly handle larger addresses from accept().
 -- Avoid freeing wrong pointer with SlurmctldParameters=max_dbd_msg_action
    with another option after that.
 -- Restore MCS label when suspended job is resumed.
 -- Fix insufficient lock levels.
 -- slurmrestd - use errno from job submission.
 -- Fix "user" filter for sacctmgr show transactions.
 -- Fix preemption logic.
 -- Fix no_consume GRES for exclusive (whole node) requests.
 -- Fix regression in 20.02 that caused an infinite loop in slurmctld when
    requesting --distribution=plane for the job.
 -- Fix parsing of the --distribution option.
 -- Add CONF READ_LOCK to _handle_fed_send_job_sync.
 -- prep/script - always call slurmctld PrEp callback in _run_script().
 -- Fix node estimation for jobs that use GPUs or --cpus-per-task.
 -- Fix jobcomp, job_submit and cli_filter Lua implementation plugins causing
    slurmctld and/or job submission CLI tools segfaults due to bad return
    handling when the respective Lua script failed to load.
 -- Fix propagation of gpu options through hetjob components.
 -- Add SLURM_CLUSTERS environment variable to scancel.
 -- Fix packing/unpacking of "unlinked" jobs.
 -- Connect slurmstepd's stderr to srun for steps launched with --pty.
 -- Handle MPS correctly when doing exclusive allocations.
 -- slurmrestd - fix compiling against libhttpparser in a non-default path.
 -- slurmrestd - avoid compilation issues with libhttpparser < 2.6.
 -- Fix compile issues when compiling slurmrestd without --enable-debug.
 -- Reset idle time on a reservation that is getting purged.
 -- Fix reoccurring reservations that have Purge_comp= to keep correct
    duration if they are purged.
 -- scontrol - changed the "PROMISCUOUS" flag to "MAGNETIC"
 -- Early return from epilog_set_env in case of no_consume.
 -- Fix cons_common/job_test start time discovery logic to prevent skewed
    results between "will run test" executions.
 -- Ensure TRESRunMins limits are maintained during "scontrol reconfigure".
 -- Improve error message when host lookup fails.

* Changes in Slurm 20.02.3
==========================
 -- Factor in ntasks-per-core=1 with cons_tres.
 -- Fix formatting in error message in cons_tres.
 -- Fix calling stat on a NULL variable.
 -- Fix minor memory leak when using reservations with flags=first_cores.
 -- Fix gpu bind issue when CPUs=Cores and ThreadsPerCore > 1 on a node.
 -- Fix --mem-per-gpu for heterogenous --gres requests.
 -- Fix slurmctld load order in load_all_part_state().
 -- Fix race condition not finding jobacct gather task cgroup entry.
 -- Suppress error message when selecting nodes on disjoint topologies.
 -- Improve performance of _pack_default_job_details() with large number of job
    arguments.
 -- Fix archive loading previous to 17.11 jobs per-node req_mem.
 -- Fix regresion validating that --gpus-per-socket requires --sockets-per-node
    for steps. Should only validate allocation requests.
 -- error() instead of fatal() when parsing an invalid hostlist.
 -- nss_slurm - fix potential deadlock in slurmstepd on overloaded systems.
 -- cons_tres - fix --gres-flags=enforce-binding and related --cpus-per-gres.
 -- cons_tres - Allocate lowest numbered cores when filtering cores with gres.
 -- Fix getting system counts for named GRES/TRES.
 -- MySQL - Fix for handing typed GRES for association rollups.
 -- Fix step allocations when tasks_per_core > 1.
 -- Fix allocating more GRES than requested when asking for multiple GRES types.

* Changes in Slurm 20.02.2
==========================
 -- Fix slurmctld segfault when checking no_consume GRES node allocation counts.
 -- Fix resetting of cloud_dns on a reconfigure.
 -- squeue - change output for dependency column to use "(null)" instead of ""
    for no dependncies as documented in the man page, and used by other columns.
 -- Clear node_cnt_wag after job update.
 -- Fix regression where AccountingStoreJobComment was not defaulting to 'yes'.
 -- Send registration message immediately after a node is resumed.
 -- Cray - Fix hetjobs when using only a single component in the step launch.
 -- Cray - Fix hetjobs launched without component 0.
 -- Cray - Quiet cookies missing message which is expected on for hetjobs.
 -- Fix handling of -m/--distribution options for across socket/2nd level by
    task/affinity plugin.
 -- Fix grp_node_bitmap error when slurmctld started before slurmdbd.
 -- Fix scheduling issue when there are not enough nodes available to run a job
    resulting in possible job starvation.
 -- Make it so mpi/cray_shasta appears in srun --mpi=list
 -- Don't requeue jobs that have been explicitly canceled.
 -- Fix error message for a regular user trying to update licenses on a running
    job.
 -- Fix backup slurmctld handling for logrotation via SIGUSR2.
 -- Fix reservation feature specification when looking for inactive features
    after active features fails.
 -- Prevent misleading error messages for reservation creation.
 -- Print message in scontrol when a request fails for not having enough nodes.
 -- Fix duplicate output in sacct with multiple resv events.
 -- auth/jwt - return correct gid for a given user. This was incorrectly
    assuming the users's primary group name matched their username.
 -- slurmrestd - permit non-SlurmUser/root job submission.
 -- Use host IP if hostname unknown for job submission for allocating node.
 -- Fix issue with primary_slurmdbd_resumed_operation trigger not happening
    on slurmctld restart.
 -- Fix race in acct_gather_interconnect/ofed on step termination.
 -- Fix typo of SlurmctldProlog -> PrologSlurmctld in error message.
 -- slurm.spec - add SuSE-specific dependencies for optional slurmrestd package.
 -- Fix FreeBSD build issues.
 -- Fixed sbatch not processing --ignore-pbs in batch script.
 -- Don't clear the qos_id of an invalid QOS.
 -- Allow a job that was once FAIL_[QOS|ACCOUNT] to be eligible again if
    the qos|account limitation is remedied.
 -- Fix core reservations using the FLEX flag to allow use of resources
    outside of the reservation allocation.
 -- Fix MPS without File with 1 GPU, and without GPUs.
 -- Add FreeBSD support to proctrack/pgid plugin.
 -- Fix remote dependency testing for meta job in job array.
 -- Fix preemption when dealing with a job array.
 -- Don't send remote non-pending singleton dependencies on federation update.
 -- slurmrestd - fix crash on empty query.
 -- Fix race condition which could lead to invalid references in backfill.
 -- Fix edge case in _remove_job_hash().
 -- Fix exit code when using --cluster/-M client options.
 -- Fix compilation issues in GCC10.
 -- Fix invalid references when federated job is revoked while in backfill loop.
 -- Fix distributing job steps across idle nodes within a job.
 -- Fix detected floating reservation overlapping.
 -- Break infinite loop in cons_tres dealing with incorrect tasks per tres
    request resulting in slurmctld hang.
 -- Send the current (not the previous) reason for a pending job to client
    commands like squeue/scontrol.
 -- Fix incorrect lock levels for select_g_reconfigure().
 -- Handle hidden nodes correctly in slurmrestd.
 -- Allow sacctmgr to use MaxSubmitP[U|A] as format options.
 -- Fix segfault when trying to delete a corrupted association.
 -- Fix setting ntasks-per-core when using --multithread.
 -- Only override job wait reason to priority if Reason=None or
    Reason=Resources.
 -- Perl API / seff - fix missing symbol issue with accounting_storage/slurmdbd.
 -- slurm.spec - add --with cray_shasta option.
 -- Downgrade "Node config differ.." error message if config_overrides enabled.
 -- Add client error when using --gpus-per-socket without --sockets-per-node.
 -- Fix nvml/rsmi debug statements making it to stderr.
 -- NodeSets - fix slurmctld segfault in newer glibc if any nodes have no
    defined features.
 -- ConfigLess - write out plugstack config to correct config file name in
    the config cache.
 -- priority/multifactor - gracefully handle NULL list of associations or array
    of siblings when calculating FairTree fairshare.
 -- Fix cons_tres --exclusive=user to allocate only requested number of CPUs.
 -- Add MySQL deadlock detection and automatic retry mechanism.
 -- Reject repeating floating reservations as they aren't supported.
 -- Fix testing of reservation flags that may be NO_VAL64.
 -- Fix _verify_node_state memory requested as --mem-per-gpu DefMemPerGPU.
 -- Fix DependencyNeverSatisfied not set as the job's state reason if
    kill_invalid_depend or --kill-on-invalid-dep are used.
 -- pam_slurm_adopt - explicitly call slurm_conf_init().
 -- configless - fix plugstack.conf handling for client commands.
 -- Set SLURM_JOB_USER and SLURM_JOB_UID in task_epilog correctly.
 -- slurmrestd - authenticate job submissions by SlurmUser properly.

* Changes in Slurm 20.02.1
==========================
 -- Improve job state reason for jobs hitting partition_job_depth.
 -- Speed up testing of singleton dependencies.
 -- Fix negative loop bound in cons_tres.
 -- srun - capture the MPI plugin return code from mpi_hook_client_fini() and
    use as final return code for step failure.
 -- Fix segfault in cli_filter/lua.
 -- Fix --gpu-bind=map_gpu reusability if tasks > elements.
 -- Make sure config_flags on a gres are sent to the slurmctld on node
    registration.
 -- Prolog/Epilog - Fix missing GPU information.
 -- Fix segfault when using config parser for expanded lines.
 -- Fix bit overlap test function.
 -- Don't accrue time if job begin time is in the future.
 -- Remove accrue time when updating a job start/eligible time to the future.
 -- Fix regression in 20.02.0 that broke --depend=expand.
 -- Reset begin time on job release if it's not in the future.
 -- Fix for recovering burst buffers when using high-availability.
 -- Fix invalid read due to freeing an incorrectly allocated env array.
 -- Update slurmctld -i message to warn about losing data.
 -- Fix scontrol cancel_reboot so it clears the DRAIN flag and node reason for a
    pending ASAP reboot.

* Changes in Slurm 20.02.0
==========================
 -- Fix minor memory leak in slurmd on reconfig.
 -- Fix invalid ptr reference when rolling up data in the database.
 -- Change shtml2html.py to require python3 for RHEL8 support, and match
    man2html.py.
 -- slurm.spec - override "hardening" linker flags to ensure RHEL8 builds
    in a usable manner.
 -- Fix type mismatches in the perl API.
 -- Prevent use of uninitialized slurmctld_diag_stats.
 -- Fixed various Coverity issues.
 -- Only show warning about root-less topology in daemons.
 -- Fix accounting of jobs in IGNORE_JOBS reservations.
 -- Fix issue with batch steps state not loading correctly when upgrading from
    19.05.
 -- Deprecate max_depend_depth in SchedulerParameters and move it to
    DependencyParameters.
 -- Silence erroneous error on slurmctld upgrade when loading federation state.
 -- Break infinite loop in cons_tres dealing with incorrect tasks per tres
    request resulting in slurmctld hang.
 -- Improve handling of --gpus-per-task to make sure appropriate number of GPUs
    is assigned to job.
 -- Fix seg fault on cons_res when requesting --spread-job.

* Changes in Slurm 20.02.0rc1
=============================
 -- sbatch - fix segfault when no newline at the end of a burst buffer file.
 -- Change scancel to only check job's base state when matching -t options.
 -- Save job dependency list in state files.
 -- cons_tres - allow jobs to be run on systems with root-less topologies.
 -- Restore pre-20.02pre1 PrologSlurmctld synchonization behavior to avoid
    various race conditions, and ensure proper batch job launch.
 -- Add new slurmrestd command/daemon which implements the Slurm REST API.

* Changes in Slurm 20.02.0pre1
==============================
 -- Avoid possible race when 2 conf files are read at the same exact time.
 -- Add last and mean backfill table size to sdiag output.
 -- Add support for additional job submit environment variables:
    SALLOC_MEM_PER_CPU, SALLOC_MEM_PER_NODE, SBATCH_MEM_PER_CPU and
    SBATCH_MEM_PER_NODE.
 -- Add 'Agent thread count' stat to sdiag.
 -- Add sdiag -M, --clusters option.
 -- NodeName configurations with CPUs != Sockets*Cores or
    Sockets*Cores*Threads will be rejected with fatal.
 -- Add scontrol write config <filename> option.
 -- Increase maximum number of hostlist ranges from 64k to 256k.
 -- Don't acquire unneeded locks in slurmctld _run_prolog thread.
 -- Fix sinfo/squeue sort by nodename/nodeaddr/hostname.
 -- Optimize getting wckey and associations usage.
 -- Keep SLURM_MPI_TYPE variable in srun when not set to 'none'.
 -- Remove slurm.spec-legacy packaging file.
 -- pam_slurm_adopt - with action_unknown=newest configured, pick a user job
    even when failing to get cgroup mtime.
 -- Fix "srun --export=" parsing to handle nested commas.
 -- Add default "reboot requested" reason to nodes when rebooting with scontrol.
 -- Duplicate PartitionName entries in slurm.conf will now fatal() instead of
    printing an error message and ignoring the successive records.
 -- Remove the smap command.
 -- Change exclusive behavior of a node to include all GRES on a node as well
    as the cpus.
 -- Append ": reboot issued" to node reason when reboot is issued from
    controller. Previously only happened when nextstate was specified.
 -- Add default jobname of "no-shell" for salloc --no-shell.
 -- Save reservation state when automatically shrinking nodes.
 -- Add slurm.conf option MaxDBDMsgs to control how many messages will be
    stored in the slurmctld before throwing them away when the slurmdbd is down.
 -- Change default SLURM_PMIX_TMPDIR to include user id to avoid potential
    conflicts on development systems running multiple Slurm instances.
 -- Return a newly added ESLURM_DEFER error and set a job state reason to
    FAIL_DEFER for immediate alloc requests if defer in SchedulerParameters.
 -- Make slurmctld fatal if unable to load a script or a job environment when
    building the launch job message.
 -- Removed the checkpoint plugin interface and all associated API calls.
 -- Add job_get_grace_time() functions to preempt plugins and refactor
    slurm_job_check_grace() to use them.
 -- Remove --disable-iso8601 configure option.
 -- Display StepId=<jobid>.batch instead of StepId=<jobid>.4294967294 in output
    of "scontrol show step". (slurm_sprint_job_step_info())
 -- Make it so you can have a grace time when preempting by requeue.
 -- Translate MpiDefault=openmpi to functionally-equivalent MpiDefault=none,
    and remove the mpi/openmpi plugin.
 -- burst_buffer/datawarp - add a set of % symbols that will be replaced by
    job details. E.g., %d will be filled in with the WorkDir for the job.
 -- Fix sacctmgr show events to support node list ranges.
 -- Add SchedulerParameters option bf_one_resv_per_job to disallow adding more
    than one backfill reservation per job.
 -- Allow sacctmgr to filter node events by states that are flags.
 -- Allow sacctmgr to filter node events by REBOOT state/flag.
 -- Add ability to set MailType and MailUser of job with scontrol.
 -- slurm_init_job_desc_msg() initializes mail_type as uint16_t. This allows
    mail_type to be set to NONE with scontrol.
 -- Add new slurm_spank_log() function to print messages back to the user from
    within a SPANK plugin. (This can be done with slurm_error() instead, but
    that will always prepend "error: " to every message which may lead to
    confusion.)
 -- Enforce specification of partition and ALL nodes with PART_NODES flag.
 -- Add 'promiscuous' flag to a reservation.
 -- Implement the idea of PURGE_COMP=timespec.
 -- SPANK - removed never-implemented slurm_spank_slurmd_init() interface. This
    hook has always been accessible through slurm_spank_init() in the
    S_CTX_SLURMD context instead.
 -- sbcast - add new BcastAddr option to NodeName lines to allow sbcast traffic
    to flow over an alternate network path.
 -- Add auth/jwt plugin.
 -- Add new 'scontrol token' subcommand.
 -- PMIx - improve performance of proc map generation.
 -- For a heterogeneous job to be considered for preemption all components must
    be eligible for preemption.
 -- Added JobCompParams to slurm.conf.
 -- Add configuration parameter DependencyParameters to slurm.conf.
 -- Deprecate kill_invalid_depend in SchedulerParameters and move it to new
    DependencyParameters.
 -- Enable job dependencies for any job on any cluster in the same federation.
 -- Stricter escaping of strings sent to Elasticsearch.
 -- Allow clusters to be added automatically to db at startup of ctld.
 -- Add AccountingStorageExternalHost slurm.conf parameter.
 -- Add support for srun -M<cluster> --jobid=# for existing remote allocations.
 -- Remove LicensesUsed from 'scontrol show config'.
 -- sbatch - adjusted backoff times for "--wait" option to reduce load on
    slurmctld. This results in a steady-state delay of 32s between queries,
    instead of the prior 10s delay.
 -- Add SchedulerParameters option bf_running_job_reserve to add backfill
    reservations for jobs running on whole nodes
 -- salloc/sbatch/srun - error on invalid --profile option strings.
 -- Remove max_job_bf option and replace with bf_max_job_test.
 -- Disable sbatch, salloc, srun --reboot for non-admins.
 -- jobcomp/elasticsearch - added connect_timeout and timeout options to
    JobCompParams.
 -- SPANK - added support for S_JOB_GID in the job script context with
    spank_get_item().
 -- Prolog/Epilog - add SLURM_JOB_GID environment variable.
 -- Add gpu/rsmi plugin to support AMD GPUs
 -- Make it so you can "stack" the energy plugins
 -- Add energy accounting plugin for AMD GPU

* Changes in Slurm 19.05.9
==========================

* Changes in Slurm 19.05.8
==========================
 -- sbatch - handle --uid/--gid in #SBATCH directives properly.
 -- Fix HDF5 type version build error.
 -- PMIx - fix potential buffer overflows from use of unpackmem().
    CVE-2020-27745.
 -- X11 forwarding - fix potential leak of the magic cookie when sent as an
    argument to the xauth command. CVE-2020-27746.

* Changes in Slurm 19.05.7
==========================
 -- Fix handling of -m/--distribution options for across socket/2nd level by
    task/affinity plugin.
 -- Fix grp_node_bitmap error when slurmctld started before slurmdbd.
 -- Fix compilation issues in GCC10.
 -- Fix distributing job steps across idle nodes within a job.
 -- Break infinite loop in cons_tres dealing with incorrect tasks per tres
    request resulting in slurmctld hang.
 -- priority/multifactor - gracefully handle NULL list of associations or array
    of siblings when calculating FairTree fairshare.
 -- Fix cons_tres --exclusive=user to allocate only requested number of CPUs.
 -- Add MySQL deadlock detection and automatic retry mechanism.
 -- Fix _verify_node_state memory requested as --mem-per-gpu DefMemPerGPU.
 -- Factor in ntasks-per-core=1 with cons_tres.
 -- Fix formatting in error message in cons_tres.
 -- Fix gpu bind issue when CPUs=Cores and ThreadsPerCore > 1 on a node.
 -- Fix --mem-per-gpu for heterogenous --gres requests.
 -- Fix slurmctld load order in load_all_part_state().
 -- Fix getting system counts for named GRES/TRES.
 -- MySQL - Fix for handing typed GRES for association rollups.
 -- Fix step allocations when tasks_per_core > 1.

* Changes in Slurm 19.05.6
==========================
 -- Fix OverMemoryKill.
 -- Fix memory leak in scontrol show config.
 -- Remove PART_NODES reservation flag after ignoring it at creation.
 -- Fix deprecation of MemLimitEnforce parameter.
 -- X11 forwarding - alter Xauthority regex to work when "FamilyWild" cookies
    are present in the "xauth list" output.
 -- Fix memory leak when utilizing core reservations.
 -- Fix issue where adding WCKeys and then using them right away didn't always
    work.
 -- Add cosmetic batch step to correct component in a hetjob.
 -- Fix to make scontrol write config create a usable config without editing.
 -- Fix memory leak when pinging backup controller.
 -- Fix issue with 'scontrol update' not enforcing all QoS / Association limits.
 -- Fix to properly schedule certain jobs with cons_tres plugin.
 -- Fix FIRST_CORES for reservations when using cons_tres.
 -- Fix sbcast -C argument parsing.
 -- Replace/deprecate max_job_bf with bf_max_job_test and print error message.
 -- sched/backfill - fix options parsing when bf_hetjob_prio enabled.
 -- Fix for --gpu-bind when no gpus requested.
 -- Fix sshare -l crash with large values.
 -- Fix printing NULL job and step pointers.
 -- Break infinite loop in cons_tres dealing with incorrect tasks per tres
    request resulting in slurmctld hang.
 -- Improve handling of --gpus-per-task to make sure appropriate number of GPUs
    is assigned to job.

* Changes in Slurm 19.05.5
==========================
 -- Fix both socket-[un]constrained GRES issues that would lead to incorrect
    GRES allocations and GRES underflow errors at deallocation time.
 -- Reject unrunnable jobs submitted to reservations.
 -- Fix misleading error returned for immediate allocation requests when defer
    in SchedulerParameters by decoupling defer from too fragmented logic.
 -- Fix printf format string error on FreeBSD.
 -- Fix parsing of delay_boot in controller when additional arguments follow it.
 -- Fix --ntasks-per-node in cons_tres.
 -- Fix array tasks getting same reject reason.
 -- Ignore DOWN/DRAIN partitions in reduce_completing_frag logic.
 -- Fix alloc_node validation when updating a job.
 -- Fix for requesting specific nodes when using cons_tres topology.
 -- Ensure x11 is setup before launching a job step.
 -- Fix incorrect SLURM_CLUSTER_NAME env var in batch step.
 -- Perl API - Fix undefined symbol for slurmdbd_pack_fini_msg.
 -- Install slurmdbd.conf.example with 0600 permissions to encourage secure
    use. CVE-2019-19727.
 -- srun - do not continue with job launch if --uid fails. CVE-2019-19728.

* Changes in Slurm 19.05.4
==========================
 -- Don't allow empty string as a reservation name; generate a name if empty
    string is provided.
 -- Fix salloc segfault when using --no-shell option.
 -- Fix divide by zero when normalizing partition priorities.
 -- Restore ability to set JobPriorityFactor to 0 on a partition.
 -- Fix multi-partition non-normalized job priorities.
 -- Adjust precedence between --mem-per-cpu and --mem-per-node to enforce
    them as mutually exclusive. Specifying either on the command line will
    now explicitly override any value inherited through the environment.
 -- Always print node's version, if it exists, in scontrol show nodes.
 -- sbatch - ensure SLURM_NTASKS_PER_NODE is exported when --ntasks-per-node
    is set.
 -- slurmctld - fix memory leak when using DebugFlags=Reservation.
 -- Reset --mem and --mem-per-cpu options correctly when using --mem-per-gpu.
 -- Use correct function signature for step_set_env() in gres plugin interface.
 -- Restore pre-19.05 hostname handling behavior for AllocNodes by always
    truncating to just the host portion and dropping any domain name portion
    returned by gethostbyaddr().
 -- Fix abort initializing a configuration without acct_gather.conf.
 -- Fix GRES binding and CLOUD nodes GRES setup regressions.
 -- Make sview work with glib2 v2.62.
 -- Fix slurmctld abort when in developer mode and submitting to multiple
    partitions with a bad QOS and not enforcing QOS.
 -- Enforce PART_NODES if only PartitionName is specified.
 -- Fix slurmd -G functionality.
 -- Fix build on 32-bit systems.
 -- Remove duplicate log entry on update job.
 -- sched/backfill - fix the estimated sched_nodes for multi-part jobs.
 -- slurm.spec - fix pmix_version global context macro.
 -- Fix cons_tres topology logic incorrectly evaluating insufficient resoruces.
 -- Fix job "--switches=count@time" option handling in cons_tres topology.
 -- scontrol - allow changes to the WorkDir for pending jobs.
 -- Enable coordinators to delete users if they only belong to accounts that
    the coordinator is over.
 -- Fix regression on update from older versions with DefMemPerCPU.
 -- Fix issues with --gpu-bind while using cgroups.
 -- Suspend nodes after being down for SuspendTime.
 -- Fix rebooting nodes from skipping nextstate states on boot.
 -- Fix regression in reservation creation logic from 19.05.3 which would
    incorrectly deny certain valid reservations from being created.
 -- slurmdbd - process sacct/sacctmgr job queries from older clients correctly.

* Changes in Slurm 19.05.3-2
============================
 -- Fix missing include for Cray Aries systems.

* Changes in Slurm 19.05.3
==========================
 -- Fix missing check from conversion of cray -> cray_aries.
 -- Improve job state reason string when required nodes are not available by
    not including those that don't belong to the job partition.
 -- Set a more appropriate ESLURM_RESERVATION_MAINT job state reason for jobs
    requesting feature(s) and required nodes are in a maintenance reservation.
 -- Fix logic to better handle maintenance reservations.
 -- Add spank options to cache in remote callback.
 -- Enforce the use of spank_option_getopt().
 -- Fix select plugins' will run test under-allocating nodes usage for
    completing jobs.
 -- Nodes in COMPLETING state treated as being currently available for job
    will-run test.
 -- Cray - fix contribs slurm.conf.j2 with updated cray_aries plugin names.
 -- job_submit/lua - fix problem where nil was expected for min_mem_per_cpu.
 -- Fix extra, unaccounted TRESRunMins usage created by heterogeneous jobs when
    running with the priority/multifactor plugin.
 -- Detach threads once they are done to avoid having to join them
    in track scripts code.
 -- Handle situation where a slurmctld tries to communicate with slurmdbd more
    than once at the same time.
 -- Fix XOR/XAND features like cpu&fastio&[knl|westmere] to be resolved
    correctly.
 -- Don't update [min|max]_exit_code on job array task requeue.
 -- Don't assume the first node of a job is the batch host when testing if the
    job's allocated nodes are booted/ready.
 -- Make --batch=<feature> requests wait for all nodes to be booted so that it
    can choose the batch host after the nodes have been booted -- possibly with
    different features.
 -- Fix talking to batch host on it's protocol version when using --batch.
 -- gres/mic plugin - add missing fini() function to clean up plugin state.
 -- Move _validate_node_choice() before prolog/epilog check.
 -- Look forward one week while create new reservation.
 -- Set mising resv_desc.flags before call _select_nodes().
 -- Use correct start_time for TIME_FLOAT reservation in _job_overlap().
 -- Properly enforce a job's mem-per-cpu option when allocate the node
    exclusively to that job.
 -- sched/backfill - clear estimated sched_nodes as done for start_time.
 -- Have safe_[read|write] handle EAGAIN and EINTR.
 -- Fix checking for flag with logical AND.
 -- Correct "extern" definition of variable if compiling with __APPLE__.
 -- Deprecate FastSchedule. FastSchedule will be removed in 20.02.
    The FastSchedule=2 functionality (used for testing and development) has
    been retained as the new SlurmdParameters=config_overrides option.
 -- Fix preemption issue when picking nodes for a feature job request.
 -- Fix race condition preventing held array job from getting a db_index.
 -- Fix select/cons_tres gres code infinite loop leaving slurmctld unresponsive.
 -- Remove redefinition of global variable in gres.c
 -- Fix issue where GPU devices are denied access when MPS is enabled.
 -- Fix uninitialized errors when compiling with CFLAGS="--coverage".
 -- Fix scancel --full for proctrack/cgroups.
 -- Fix sdiag backfill last and mean queue length stats.
 -- Do not remove batch host when resizing/shrinking a batch job.
 -- nss_slurm - fix file descriptor leaks.
 -- Fix preemption for jobs using complex feature requests
    (e.g. -C "[rack1*2&rack2*4]").
 -- Fix memory leaks in preemption when jobs request multiple features.
 -- Allow Operator users to show/fix runaways.
 -- Disallow coordinators to show/fix runaways.
 -- mpi/pmi2 - increase array len to avoid buffer size exceeded error.
 -- Preserve rebooting node's nextstate when updating state with scontrol.
 -- Fully merge slurm.conf and gres.conf before node_config_load().
 -- Remove FastSchedule dependence from gres.conf's AutoDetect=nvml.
 -- Forbid mix of typed and untyped GRES of same name in slurm.conf.
 -- cons_tres: Prevent creating a job without CPUs.
 -- Prevent underflow when filtering cores with gres.
 -- proctrack/cray_aries: use current pid instead of thread if we're in a fork.
 -- Fix missing check for prolog launch credential creation failure that can
    lead to segfaults.

* Changes in Slurm 19.05.2
==========================
 -- Wrap END_TIMER{,2,3} macro definition in "do {} while (0)" block.
 -- Allow account coordinators to add users who don't already have an
    association with any account.
 -- If only allowing particular alloc nodes in a partition, deny any request
    coming from an alloc node of NULL.
 -- Prevent partial-load of plugins which can leave certain interfaces in
    an inconsistent state.
 -- Remove stray __USE_GNU macro definitions from source.
 -- Fix loading fed state by backup on subsequent takeovers.
 -- Add missing job read lock when loading fed job state.
 -- Add missing fed_job_info jobs if fed state is lost.
 -- Do not build cgroup plugins on FreeBSD or NetBSD, and use proctrack/pgid
    by default instead.
 -- Do not build switch/cray_aries plugin on FreeBSD, NetBSD, or macOS.
 -- Fix build on FreeBSD.
 -- Fix race condition in route/topology plugin.
 -- In munge decode set the alloc_node field to the text representation of an
    IP address if the reverse lookup fails.
 -- Fix infinite loop in slurmstepd handling for nss_slurm REQUEST_GETGR RPC.
 -- Fix slurmstepd early assertion fail which prevented batch job launch or
    tasks launch on non-Linux systems.
 -- Fix regression with SLURM_STEP_GPUS env var being renamed SLURM_STEP_GRES.
 -- Fix pmix v3 linking if no rpath is allowed on build.
 -- Fix sacctmgr error handling when removing associations and users.
 -- Allow sacctmgr to add users to WCKeys without having TrackWCKey set in the
    slurm.conf.
 -- Allow sacctmgr to delete WCKeys from users.
 -- Change GRES type set by gpu/gpu_nvml plugin to be more specific - based
    on device name instead of brand name.
 -- cli_filter - fix logic error with option lookup functions.
 -- Fix bad testing of NodeFeatures debug flag in contribs/cray.
 -- Cleanup track_script code to avoid race conditions and invalid memory
    access.
 -- Fix jobs being killed after being requeued by preemption.
 -- Make register nodes verify correctly when using cons_tres.
 -- Fix srun --mem-per-cpu being ignored.
 -- Fix segfault in _update_job() under certain conditions.
 -- job_submit/lua - restore slurm.FAILURE as a synonym for slurm.ERROR.

* Changes in Slurm 19.05.1-2
============================
 -- Fix mistake in QOS time limit calculations for UsageFactor != 0 with any
    combination of flags set.

* Changes in Slurm 19.05.1
==========================
 -- accounting_storage/mysql - fix incorrect function names in error messages.
 -- accounting_storage/slurmdbd - trigger an fsync() on the dbd.messages state
    file to ensure it is committed to disk properly.
 -- Avoid JobHeldUser state reason from being updated at allocation time.
 -- Fix dump/load of rejected heterogeneous jobs.
 -- For heterogeneous jobs, do not count the each component against the QOS or
    association job limit multiple times.
 -- Comment out documentation for the incomplete and currently unusable
    burst_buffer/generic plugin.
 -- Add new error ESLURM_INVALID_TIME_MIN_LIMIT to make note when a time_min
    limit is invalid based on timelimit.
 -- Correct slurmdb cluster record pack with NULL pointer input.
 -- Clearer error message for ESLURM_INVALID_TIME_MIN_LIMIT.
 -- Fix SchedulerParameter bf_min_prio_reserve error when not the last parameter
 -- When fixing runaway jobs, change to reroll from earliest submit time, and
    never reroll from Unix epoch.
 -- Display submit time when running sacctmgr show runawayjobs and add format
    option to display eligible time.
 -- jobcomp/elasticsearch - fix minor race related to JobCompLoc setup.
 -- For HetJobs, ensure SLURM_PACK_JOB_ID is set regardless of whether
    PrologFlags=Alloc is enabled.
 -- Fix PriorityFlags regression with the mutation of FAIR_TREE to NO_FAIR_TREE.
 -- select/cons_res - fix debug flag SelectType handling in select_p_job_test.
 -- Fix sacctmgr archive dump commit confirmation.
 -- Prevent extra resources from being allocated when combining certain flags.
 -- Cray - fix template generator with update cray_aries plugin names.
 -- accounting_storage/slurmdbd - provide additional detail in several error
    messages.
 -- Backfill - If a job has a time_limit guess the end time of a job better
    if OverTimeLimit is Unlimited.
 -- Remove premature call to get system gpus before querying fake gpus that
    should override the real.
 -- Fix segfault in epilog_set_env() when gres_devices is NULL.
 -- Fix (un)supported states in sacct.
 -- Adjust build system to no longer use the AC_FUNC_MALLOC autoconf macro.
 -- srun - restore the --cpu_bind option to srun.
 -- Add UsageFactorSafe QOS flag to control applying UsageFactor at
    submission/scheduling time.
 -- Create missing reservations on DBD_MODIFY_RESV.
 -- Add error message when attempting to update association manager and object
    doesn't exist.
 -- Fix security issue in accounting_storage/mysql plugin on archive file loads
    by always escaping strings within the slurmdbd. CVE-2019-12838.

* Changes in Slurm 19.05.0
==========================
 -- Fix deprecated group by clause to use order by.
 -- NVML - Git rid of unneeded * when passing nvmlDevice_t to functions.
 -- NVML - Fix clang warning about unneeded variable initialization.
 -- NVML - remove unneeded {}.
 -- Add timers to new site_factor plugin APIs to warn of slow-running plugins,
    which can lead to issues with throughput and responsiveness.
 -- X11 forwarding - ignore screen value for local DISPLAY.
 -- Add missing locks protecting slurmctld_config.server_thread_count access.
 -- Fix jobs stuck from FedJobLock when requeueing in a federation
 -- Fix requeueing job in a federation of clusters with differing associations
 -- sacctmgr - free memory before exiting in 'sacctmgr show runaway'.
 -- Fix seff showing memory overflow when steps tres mem usage is 0.
 -- Fix memory leaks in 'sacctmgr show runawayjobs'.
 -- Fix potential deadlock in nss_slurm.
 -- Fix memory leaks due to incomplete slurmdb_cluster_cond_t destructor.
 -- Alter reservation flags column in slurmdbd to use uint64_t instead of
    uint16_t to ensure all current flags are saved correctly. Older releases
    unfortunately could not store details for newer flags (using bits 17-32)
    due to this field being silently truncated.
 -- Modify task layout with --overcommit option plus a heterogeneous job
    allocation so that a cyclic task distribution can start happening before
    all CPUs on all nodes are fully allocated. The number of tasks per node
    will be unchanged from the previous algorithm, but tasks will be distributed
    in a cyclic fashion first and then extra tasks placed on nodes with more
    CPUs. Previously all CPUs would be fully allocated in a cyclic fashion,
    then excess tasks distributed evenly across all allocated nodes.
 -- In select/cons_tres: Only allocate 1 CPU per node with the --overcommit
    option.
 -- In select/cons_res: Only allocate 1 CPU per node with the --overcommit and
    --nodelist options.
 -- Fix DefMemPer[CPU|Node] assignment on multi-partition job requests.
 -- Fix wrongly setting start_time to 0 for multi-part jobs.
 -- Upon archive file name collision, create new archive file instead of
    overwriting the old one to prevent lost records.
 -- Limit archive files to 50000 records per file so that archiving large
    databases will succeed.
 -- Remove stray newlines in SPANK plugin error messages.
 -- Fix archive loading events.
 -- In select/cons_res: Only allocate 1 CPU per node with the --overcommit and
    --nodelist options.
 -- Fix main scheduler from potentially not running through whole queue.
 -- Fix variable initiation to avoid slurmctld abort.
 -- In partition preemption, sort preemptor jobs only if they overlap a
    preemtable partition.
 -- cons_tres/dist_tasks - fix variable usage in cyclic distribution.
 -- cons_res/job_test - prevent a job from overallocating a node memory.
 -- cons_res/job_test - fix to consider a node's current allocated memory when
    testing a job's memory request.
 -- Fix issue where multi-node job steps on cloud nodes wouldn't finish cleaning
    up until the end of the job (rather than the end of the step).
 -- Fix packing pack_jobid in an sbcast.
 -- Fix GCC 9 compiler warnings.
 -- Add new job bit_flags of JOB_DEPENDENT.
 -- Make it so dependent jobs reset the AccrueTime and do not count against any
    AccrueTime limits.
 -- Fix sacctmgr --parsable2 output for reservations and tres.
 -- In multi-node systems make sure GRES are found on node when not bound to
    specific sockets.
 -- Fix gres-per-task logic for gres not bound to sockets.
 -- Fix issue when --gpus plus --cpus-per-gres was forcing socket binding
    unnecessarily.
 -- Change event table's state column to handle 32bits.
 -- Prevent slurmctld from potential segfault after job_start_data() called
    for completing job.
 -- Fix jobs getting on nodes with "scontrol reboot asap".
 -- Record node reboot events to database.
 -- Fix node reboot failure message getting to event table.
 -- Don't write "(null)" to event table when no event reason exists.
 -- Fix invalid memory read in cons_tres.
 -- Fix minor memory leak when clearing runaway jobs.
 -- Avoid flooding slurmctld and logging when prolog complete RPC errors occur.
 -- Fix slurmctld node_scheduler's feature_bitmap memory leak.
 -- Fatal when reading config if Alloc flag configured on FrontEnd mode.
 -- Modifications needed to run Federations with clusters running
    different select/switch plugins.
 -- Fix Clang errors for zero initializing struct with nested arrays.
 -- Fix minor memory leak in pmi2.
 -- MySQL - Fix minor memory leak when quering suspended jobs fails.
 -- Fix seff human readable memory string for values below a megabyte.
 -- Avoid slurmctld abort if GRES defined in gres.conf, but not in the node
    configuration of slurm.conf.
 -- Calculate task count for job with --gpus-per-task option, but no explicit
    task count.

* Changes in Slurm 19.05.0rc1
=============================
 -- Set CUDA_VISIBLE_DEVICES environment variable in Prolog and Epilog for jobs
    requesting gres/gpu.
 -- Remove '-U' argument - which was deprecated when '-A' was made the single
    character option before the Slurm 2.1 release - as an alternative to
    '--account' for salloc/sbatch/srun.
 -- Remove direct BLCR support and srun_cr.
 -- Make slurm_print_node_table only print a node's slurmd version if it is
    different to the one reported by slurm_load_ctl_conf.
 -- Call gres plugin environment setup even if gres not requested in job.
 -- Do not set CUDA_VISIBLE_DEVICES=NoDevFiles when no gres requested.
 -- If GRES configuration data is unavailable from gres.conf, then use the
    node's "Gres=" information slurm.conf. This will eliminate or minimize the
    gres.conf file in many situations.
 -- Fix checking IPMI XCC raw command response length.
 -- jobacct_gather/common - improve lightweight process identification.
 -- Cloud/PowerSave Improvements:
    - Better repsonsiveness to resuming and suspending.
    - Powering down nodes not eligible to be allocated until after
      SuspendTimeout.
    - Powering down nodes put in "Powering Down / %" state until after
      SuspendTimeout.
 -- Add idle_on_node_suspend SlurmctldParameter to make nodes idle regardless
    of state when suspended.
 -- Add PowerSave DebugFlag for Suspend/Resume debugging.
 -- Changed "scontrol reboot" to not default to ALL nodes.
 -- Changed "scontrol completing" to include two new fields - EndTime and
    CompletingTime.
 -- select/cons_tres - prevent job from overallocating a node memory.
 -- Refactor CLI option parsing for salloc/sbatch/srun into a central set of
    functions in src/common/slurm_opt.c. Note that this new option parsing can
    be stricter in a few specific situations - places that used to ignore
    invalid options and still submit/launch a job or job step may return an
    error() and refuse to proceed instead.
 -- Add preempt_send_user_signal SlurmctldParameter option to send user
    signal (e.g. --signal=<SIG_NUM>) at preemption if it hasn't already been
    sent.
 -- Add PreemptExemptTime parameter to slurm.conf and QOS to guarantee a
    minimum runtime before preemption.
 -- Set job's preempt time for non-grace time preemptions.
 -- Add sinfo format option to show used gres.
 -- Add reboot_from_controller SlurmctldParameter to allow RebootProgram to be
    run from the controller instead of the slurmds.
 -- Fix increasing of job size when extern steps exist.
 -- Reset GPU-related arguments to salloc/sbatch/srun for each separate
    heterogeneous job component.
 -- Do not set "(null)" for SLURM_JOB_CONSTRAINTS when no constraints are set
    in PrologSlurmctld/EpilogSlurmctld.
 -- Add SRUN_EXPORT_ENV as an input environment variable to srun.
 -- Return an error for invalid #SBATCH directives, and do not submit the job.
 -- Add S_JOB_ARRAY_ID and S_JOB_ARRAY_TASK_ID to spank_get_item().
 -- Change container_{g,p}_add_pid() to container_{g,p}_join() and remove the
    'pid_t pid' argument.
 -- Add new site_factor plugin type to permit sites to build plugins to set
    and modify the site priority factor value both initially on job submission,
    and periodically every PriorityCalcPeriod.
 -- Rename Cray plugins cray_aries in preperation for Cray/Shasta.
 -- Allow Het Jobs to work on a Cray.
 -- Add new cli_filter plugin type to permit sites to build plugins to log,
    modify, or reject CLI options within the salloc/sbatch/srun commands
    themselves.
 -- Allocate nodes that are booting. Previously, nodes that were being booted
    were off limits for allocation. This caused more nodes to be booted than
    needed in a cloud environment.
 -- pam_slurm_adopt - inject SLURM_JOB_ID environment variable into adopted
    processes.
 -- PMIx - use the Tree-based collective for empty fence operations.
 -- PMIx - replace use of the non-standard PMIX_VAL_SET macro with the
    standardized PMIX_VALUE_LOAD macro.
 -- slurm.spec - change --without cray option to set configure option of
    --enable-really-no-cray.
 -- slurm.spec - add new --with slurmsmwd option.
 -- pmi2: add mutex locking to all API calls to ensure thread-safety.
 -- Fix QOS usage factor to apply to TRES time limits and usage.
 -- Fix multi-cluster srun's with Select/Cray and other_cons_res.

* Changes in Slurm 19.05.0pre3
==============================
 -- Fix RPM packaging for accounting_storage/mysql.

* Changes in Slurm 19.05.0pre2
==============================
 -- Removed select/serial plugin.
 -- Remove 512-character line length limit in slurm_print_topo_record().
    (Used by "scontrol show topology".)
 -- Removed crypto/openssl plugin.
 -- Tweak the sdiag gettimeofday() line format for greater clarity.
 -- Add support for SALLOC/SBATCH/SLURM_NO_KILL environment variables.
    Add salloc/sbatch/srun support for optional "--no-kill=off" option to
    disable the environment variables.
 -- Fix salloc and missing SLURM_NTASKS.
 -- Alter the backfill scheduler behavior to prevent it from scheduling lower
    priority jobs on resources that become available during the backfill
    scheduling cycle when bf_continue is enabled. This behavior was available
    as the bf_ignore_newly_avail_nodes option in 18.08.4+, but is now enabled
    by default. (The SchedulerParameters option of bf_ignore_newly_avail_nodes
    is also now removed, although harmless if still set.)
 -- Make LaunchParameters=send_gids the default introducing the reverse option
    "disable_send_gids to go back to the original behavior.
 -- Limit pam_slurm_adopt to run only in the sshd context by default, for
    security reasons. A new module option 'service=<name>' can be used to
    allow a different PAM applications to work. The option 'service=*' can be
    used to restore the old behavior of always performing the adopt logic
    regardless of the PAM application context.
 -- pam_slurm_adopt: Use uid to determine whether root is logging.
 -- Remove sbatch --x11 option. Slurm's internal X11 forwarding is now only
    supported from salloc, or an allocating srun command.
 -- Suppressed printing of job id in sbatch when quiet flag is set.
 -- Changed sreport 'SizesByAccount' and 'SizesByAccountAndWckey' default
    behavior and added new 'AcctAsParent' option.
 -- Add ave watts to api and sview.
 -- Added printf attribute to setenvf() and corrected related warnings.
 -- Kill running/pending job is allocated GRES and that GRES has a "File"
    configuration, and the GRES count changes.
 -- Add new DebugFlag=Accrue for accrue accounting debugging purposes.
 -- Change CryptoType option to CredType, and rename crypto/munge plugin to
    cred/munge.
 -- Add slurmd -G option to print GRES configuration and exit. This is useful
    for testing and debugging.
 -- Support GRES types that include numbers (e.g. "--gres=gpu:123g:2").
 -- Remove MemLimitEnforce parameter and move functionality into
    JobAcctGatherParam=OverMemoryKill.
 -- sview - disable admin mode option (which would not work anyways) if the
    user is not an admin in SlurmDBD.
 -- Remove joules reporting from sview and scontrol.
 -- Change the default fair share algorithm to "fair tree". The new
    PriorityFlags option of NO_FAIR_TREE can be used to revert to "classic"
    fair share scheduling instead.
 -- libslurmdb has been merged into libslurm.
 -- Added -b as a short option for --begin and removed the -b option which
    was a left over artifact from the Moab compatibility work.
 -- Add ArrayTaskThrottle to "scontrol show job" output.
 -- Added SPRIO_FORMAT env variable to the sprio command.
 -- Add batch step at the beginning of a batch job so that squeue, sstat, and
    sacct will show the batch step.
 -- Deprecated 32-bit builds.
 -- Make -l and -o mutually exclusive in saccct, squeue, sinfo, and sprio
 -- Disable running job expansion by default. A new SchedulerParameter of
    permit_job_expansion has been added for sites that wish to re-enable it.
 -- Permit changing a job array's ArrayTaskThrottle value even if the job is
    terminated (for job requeue).
 -- Add scontrol requeue option of "Incomplete" which will requeue jobs only if
    they failed to complete with an exit code of zero.
 -- Modify GrpNodes limit to apply to unique nodes allocated (avoid double
    counting nodes allocated to multiple jobs in the same QOS or association).
 -- If a job submit does NOT include --cpus-per-task option, then report the
    value as "N/A" rather than always mapping the value to 1.
 -- X11 forwarding - use the raw value from gethostname() with xauth to avoid
    authentication issues when Slurm has internally stripped off the domain
    portion.
 -- Change how slurmd fills in the registration message version string from
    PACKAGE_VERSION to SLURM_VERSION_STRING, affecting how the version is
    displayed with sview, sinfo, scontrol and through the API.
 -- Remove autogen.sh script. Please use the autoreconf command instead.
 -- Disable a configuration of SelectTypeParameters=CR_ONE_TASK_PER_CORE with
    SelectType=select/cons_tres. This will be addressed later.
 -- job_submit/lua - expose more fields off the partition record.
 -- task/cgroup - prevent setting a memory.soft_limit_in_bytes higher than the
    memory.limit_in_bytes since the hard limit will take precedence anyway.
 -- If a GrpNodes limit is configurated in an association, partition QOS or
    job QOS then favor use of nodes already allocated to that entity. This
    will result in the configured node "Weight" being incremented by one for
    nodes which are not prefered. Consider adjusting configured node "Weight"
    values to achieve the desired node preferences.
 -- Add full node state debug2 output to slurmdbd node up/down update
 -- Set CUDA_VISIBLE_DEVICES and CUDA_MPS_ACTIVE_THREAD_PERCENTAGE environment
    variables in Prolog and Epilog for jobs requesting gres/mps.
 -- Added thresholds for backfill parameters.
 -- Fix for backfill sleep overflow when large values are set.
 -- Execute Epilog on nodes reliquished from job (i.e. job resized).
 -- Rename burst_buffer/cray plugin to burst_buffer/datawarp.
 -- X11 Forwarding - reimplement using new internal network forwarding RPCs.
 -- Remove slurm_jobcomp_get_errno and slurm_jobcomp_strerror from jobcomp
    plugin API.
 -- Optimize backfill for checking max jobs per assoc, partition, user, etc.

* Changes in Slurm 19.05.0pre1
==============================
 -- Run epilog and clean up allocation when a job is resized to zero and its
    resources transferred to another job (--depend=expand).
 -- If GRES are associated with specific sockets, identify those sockets in the
    output of "scontrol show node". For example if all 4 GPUs on a node are
    all associated with socket zero, then "Gres=gpu:4(S:0)". If associated
    with sockets 0 and 1 then "Gres=gpu:4(S:0-1)". The information of which
    specific GPUs are associated with specific GPUs is not reported, but only
    available by parsing the gres.conf file.
 -- Add configuration parameter "GpuFreqDef" to control a job's default GPU
    frequency.
 -- Add job flags to the database.  Currently used to determine which scheduler
    scheduled the job.
 -- Add constraints/features to the database.
 -- Add last reason job didn't run before resources/priority to the database.
 -- Make it so we set the alloc_node in a resource allocation based on the auth
    plugin instead of the rpc call.

* Changes in Slurm 18.08.10
===========================

* Changes in Slurm 18.08.9
==========================
 -- Wrap END_TIMER{,2,3} macro definition in "do {} while (0)" block.
 -- Make sview work with glib2 v2.62.
 -- Make Slurm compile on linux after sys/sysctl.h was deprecated.
 -- Install slurmdbd.conf.example with 0600 permissions to encourage secure
    use. CVE-2019-19727.
 -- srun - do not continue with job launch if --uid fails. CVE-2019-19728.

* Changes in Slurm 18.08.8
==========================
 -- Update "xauth list" to use the same 10000ms timeout as the other xauth
    commands.
 -- Fix issue in gres code to handle a gres cnt of 0.
 -- Don't purge jobs if backfill is running.
 -- Verify job is pending add/removing accrual time.
 -- Don't abort when the job doesn't have an association that was removed
    before the job was able to make it to the database.
 -- Set state_reason if select_nodes() fails job for QOS or Account.
 -- Avoid seg_fault on referencing association without a valid_qos bitmap.
 -- If Association/QOS is removed on a pending job set that job as ineligible.
 -- When changing a jobs account/qos always make sure you remove the old limits.
 -- Don't reset a FAIL_QOS or FAIL_ACCOUNT job reason until the qos or
    account changed.
 -- Restore "sreport -T ALL" functionality.
 -- Correctly typecast signals being sent through the api.
 -- Properly initialize structures throughout Slurm.
 -- Sync "numtask" squeue format option for jobs and steps to "numtasks".
 -- Fix sacct -PD to avoid CA before start jobs.
 -- Fix potential deadlock with backup slurmctld.
 -- Fixed issue with jobs not appearing in sacct after dependency satisfied.
 -- Fix showing non-eligible jobs when asking with -j and not -s.
 -- Fix issue with backfill scheduler scheduling tasks of an array
    when not the head job.
 -- accounting_storage/mysql - fix SIGABRT in the archive load logic.
 -- accounting_storage/mysql - fix memory leak in the archive load logic.
 -- Limit records per single SQL statement when loading archived data.
 -- Fix unnecessary reloading of job submit plugins.
 -- Allow job submit plugins to be turned on/off with a reconfigure.
 -- Fix segfault when loading/unloading Lua job submit plugin multiple times.
 -- Fix printing duplicate error messages of jobs rejected by job submit plugin.
 -- Fix printing of job submit plugin messages of het jobs without pack id.
 -- Fix memory leak in group_cache.c
 -- Fix jobs stuck from FedJobLock when requeueing in a federation
 -- Fix requeueing job in a federation of clusters with differing associations
 -- sacctmgr - free memory before exiting in 'sacctmgr show runaway'.
 -- Fix seff showing memory overflow when steps tres mem usage is 0.
 -- Upon archive file name collision, create new archive file instead of
    overwriting the old one to prevent lost records.
 -- Limit archive files to 50000 records per file so that archiving large
    databases will succeed.
 -- Remove stray newlines in SPANK plugin error messages.
 -- Fix archive loading events.
 -- In select/cons_res: Only allocate 1 CPU per node with the --overcommit and
    --nodelist options.
 -- Fix main scheduler from potentially not running through whole queue.
 -- cons_res/job_test - prevent a job from overallocating a node memory.
 -- cons_res/job_test - fix to consider a node's current allocated memory when
    testing a job's memory request.
 -- Fix issue where multi-node job steps on cloud nodes wouldn't finish cleaning
    up until the end of the job (rather than the end of the step).
 -- Fix issue with a 17.11 sbcast call to a 18.08 daemon.
 -- Add new job bit_flags of JOB_DEPENDENT.
 -- Make it so dependent jobs reset the AccrueTime and do not count against any
    AccrueTime limits.
 -- Fix sacctmgr --parsable2 output for reservations and tres.
 -- Prevent slurmctld from potential segfault after job_start_data() called
    for completing job.
 -- Fix jobs getting on nodes with "scontrol reboot asap".
 -- Record node reboot events to database.
 -- Fix node reboot failure message getting to event table.
 -- Don't write "(null)" to event table when no event reason exists.
 -- Fix minor memory leak when clearing runaway jobs.
 -- Avoid flooding slurmctld and logging when prolog complete RPC errors occur.
 -- Fix GCC 9 compiler warnings.
 -- Fix seff human readable memory string for values below a megabyte.
 -- Fix dump/load of rejected heterogeneous jobs.
 -- For heterogeneous jobs, do not count the each component against the QOS or
    association job limit multiple times.
 -- slurmdbd - avoid reservation flag column corruption with the use of newer
    flags, instead preserve the older flag fields that we can still fit in the
    smallint field, and discard the rest.
 -- Fix security issue in accounting_storage/mysql plugin on archive file loads
    by always escaping strings within the slurmdbd. CVE-2019-12838.

* Changes in Slurm 18.08.7
==========================
 -- Set debug statement to debug2 to avoid benign error messages.
 -- Add SchedulerParameters option of bf_hetjob_immediate to attempt to start
    a heterogeneous job as soon as all of its components are determined able to
    do so.
 -- Fix underflow causing decay thread to exit.
 -- Fix main scheduler not considering hetjobs when building the job queue.
 -- Fix regression for sacct to display old jobs without a start time.
 -- Fix setting correct number of gres topology bits.
 -- Update hetjobs pending state reason when appropriate.
 -- Fix accounting_storage/filetxt's understanding of TRES.
 -- Set Accrue time when not enforcing limits.
 -- Fix srun segfault when requesting a hetjob with test_exec or bcast options.
 -- Hide multipart priorities log message behind Priority debug flag.
 -- sched/backfill - Make hetjobs sensitive to bf_max_job_start.
 -- Fix slurmctld segfault due to job's partition pointer NULL dereference.
 -- Fix issue with OR'ed job dependencies.
 -- Add new job's bit_flags of INVALID_DEPEND to prevent rebuilding a job's
    dependency string when it has at least one invalid and purged dependency.
 -- Promote federation unsynced siblings log message from debug to info.
 -- burst_buffer/cray - fix slurmctld SIGABRT due to illegal read/writes.
 -- burst_buffer/cray - fix memory leak due to unfreed job script content.
 -- node_features/knl_cray - fix script_argv use-after-free.
 -- burst_buffer/cray - fix script_argv use-after-free.
 -- Fix invalid reads of size 1 due to non null-terminated string reads.
 -- Add extra debug2 logs to identify why BadConstraints reason is set.

* Changes in Slurm 18.08.6-2
============================
 -- Remove deadlock situation when logging and --enable-debug is used.
 -- Fix RPM packaging for accounting_storage/mysql.

* Changes in Slurm 18.08.6
==========================
 -- Added parsing of -H flag with scancel.
 -- Fix slurmsmwd build on 32-bit systems.
 -- acct_gather_filesystem/lustre - add support for Lustre 2.12 client.
 -- Fix per-partition TRES factors/priority
 -- Fix per-partition NICE priority
 -- Fix partition access check validation for multi-partition job submissions.
 -- Prevent segfault on empty response in 'scontrol show dwstat'.
 -- node_features/knl_cray plugin - Preserve node's active features if it has
    already booted when slurmctld daemon is reconfigured.
 -- Detect missing burst buffer script and reject job.
 -- GRES: Properly reset the topo_gres_cnt_alloc counter on slurmctld restart
    to prevent underflow.
 -- Avoid errors from packing accounting_storage_mysql.so when RPM is built
    with out mysql support.
 -- Remove deprecated -t option from slurmctld --help.
 -- acct_gather_filesystem/lustre - fix stats gathering.
 -- Enforce documented default usage start and end times when querying jobs from
    the database.
 -- Fix issues when querying running jobs from the database.
 -- Deny sacct request where start time is later than the end time requested.
 -- Fix sacct verbose about time and states queried.
 -- burst_buffer/cray - allow 'scancel --hurry <jobid>' to tear down a burst
    buffer that is currently staging data out.
 -- X11 forwarding - allow setup if the DISPLAY environment variable lacks
    a screen number. (Permit both "localhost:10.0" and "localhost:10".)
 -- docs - change HTML title to include the page title or man page name.
 -- X11 forwarding - fix an unnecessary error message when using the
    local_xauthority X11Parameters option.
 -- Add use_raw_hostname to X11Parameters.
 -- Fix smail so it passes job arrays to seff correctly.
 -- Don't check InactiveLimit for salloc --no-shell jobs.
 -- Add SALLOC_GRES and SBATCH_GRES as input to salloc/sbatch.
 -- Remove drain state when node doesn't reboot by ResumeTimeout.
 -- Fix considering "resuming" nodes in scheduling.
 -- Do not kill suspended jobs due to exceeding time limit.
 -- Add NoAddrCache CommunicationParameter.
 -- Don't ping powering up cloud nodes.
 -- Add cloud_dns SlurmctldParameter.
 -- Consider --sbindir configure option as the default path to find slurmstepd.
 -- Fix node state printing of DRAINED$
 -- Fix spamming dbd of down/drained nodes in maintenance reservation.
 -- Avoid buffer overflow in time_str2secs.
 -- Calculate suspended time for suspended steps.
 -- Add null check for step_ptr->step_node_bitmap in _pick_step_nodes.
 -- Fix multi-cluster srun issue after 'scontrol reconfigure' was called.
 -- Fix accessing response_cluster_rec outside of write locks.
 -- Fix Lua user messages not showing up on rejected submissions.
 -- Fix printing multi-line error messages on rejected submissions.

* Changes in Slurm 18.08.5-2
============================
 -- Fix Perl build for 32-bit systems.

* Changes in Slurm 18.08.5
==========================
 -- Backfill - If a job has a time_limit guess the end time of a job better
    if OverTimeLimit is Unlimited.
 -- Fix "sacctmgr show events event=cluster"
 -- Fix sacctmgr show runawayjobs from sibling cluster
 -- Avoid bit offset of -1 in call to bit_nclear().
 -- Insure that "hbm" is a configured GresType on knl systems.
 -- Fix NodeFeaturesPlugins=node_features/knl_generic to allow other gres
    other than knl.
 -- cons_res: Prevent overflow on multiply.
 -- Better debug for bad values in gres.conf.
 -- Fix double accounting of energy at end of job.
 -- Read gres.conf for cloud nodes on slurmctld.
 -- Don't assume the first node of a job is the batch host when purging jobs
    from a node.
 -- Better debugging when a job doesn't have a job_resrcs ptr.
 -- Store ave watts in energy plugins.
 -- Add XCC plugin for reading Lenovo Power.
 -- Fix minor memory leak when scheduling rebootable nodes.
 -- Fix debug2 prefix for sched log.
 -- Fix printing correct SLURM_JOB_ACCOUNT_PACK_GROUP_* in env for a Het Job.
 -- sbatch - search current working directory first for job script.
 -- Make it so held jobs reset the AccrueTime and do not count against any
    AccrueTime limits.
 -- Add SchedulerParameters option of bf_hetjob_prio=[min|avg|max] to alter the
    job sorting algorithm for scheduling heterogeneous jobs.
 -- Fix initialization of assoc_mgr_locks and slurmctld_locks lock structures.
 -- Fix segfault with job arrays using X11 forwarding.
 -- Revert regression caused by e0ee1c7054 which caused negative values and
    values starting with a decimal to be invalid for PriorityWeightTRES and
    TRESBillingWeight.
 -- Fix possibility to update a job's reservation to none.
 -- Suppress connection errors to primary slurmdbd when backup dbd is active.
 -- Suppress connection errors to primary db when backup db kicks in
 -- Add missing fields for sacct --completion when using jobcomp/filetxt.
 -- Fix incorrect values set for UserCPU, SystemCPU, and TotalCPU sacct fields
    when JobAcctGatherType=jobacct_gather/cgroup.
 -- Fixed srun from double printing invalid option msg twice.
 -- Remove unused -b flag from getopt call in sbatch.
 -- Disable reporting of node TRES in sreport.
 -- Re-enabling features combined by OR within parenthesis for non-knl setups.
 -- Prevent sending duplicate requests to reboot a node before ResumeTimeout.
 -- Down nodes that don't reboot by ResumeTimeout.
 -- Update seff to reflect API change from rss_max to tres_usage_in_max.
 -- Add missing TRES constants from perl API.
 -- Fix issue where sacct would return incorrect array tasks when querying
    specific tasks.
 -- Add missing variables to slurmdb_stats_t in the perlapi.
 -- Fix nodes not getting reboot RPC when job requires reboot of nodes.
 -- Fix failing update the partition list of a job.
 -- Use slurm.conf gres ids instead of gres.conf names to get a gres type name.
 -- Add mitigation for a potential heap overflow on 32-bit systems in xmalloc.
    CVE-2019-6438.

* Changes in Slurm 18.08.4
==========================
 -- burst_buffer/cray - avoid launching a job that would be immediately
    cancelled due to a DataWarp failure.
 -- Fix message sent to user to display preempted instead of time limit when
    a job is preempted.
 -- Fix memory leak when a failure happens processing a nodes gres config.
 -- Improve error message when failures happen processing a nodes gres config.
 -- When building rpms ignore redundant standard rpaths and insecure relative
    rpaths, for RHEL based distros which use "check-rpaths" tool.
 -- Don't skip jobs in scontrol hold.
 -- Avoid locking the job_list when unneeded.
 -- Allow --cpu-bind=verbose to be used with SLURM_HINT environment variable.
 -- Make it so fixing runaway jobs will not alter the same job requeued
    when not runaway.
 -- Avoid checking state when searching for runaway jobs.
 -- Remove redundant check for end time of job when searching for runaway jobs.
 -- Make sure that we properly check for runawayjobs where another job might
    have the same id (for example, if a job was requeued) by also checking the
    submit time.
 -- Add scontrol update job ResetAccrueTime to clear a job's time
    previously accrued for priority.
 -- cons_res: Delay exiting cr_job_test until after cores/cpus are calculated
    and distributed.
 -- Fix bug where binary in cwd would trump binary in PATH with test_exec.
 -- Fix check to test printf("%s\n", NULL); to not require
    -Wno-format-truncation CFLAG.
 -- Fix JobAcctGatherParams=UsePss to report the correct usage.
 -- Fix minor memory leak in pmix plugin.
 -- Fix minor memory leak in slurmctld when reading configuration.
 -- Handle return codes correctly from pthread_* functions.
 -- Fix minor memory leak when a slurmd is unable to contact a slurmctld
    when trying to register.
 -- Fix sreport sizesbyaccount report when using Flatview and accounts.
 -- Fix incorrect shift when dealing with node weights and scheduling.
 -- libslurm/perl - Fix segfault caused by incorrect hv_to_slurm_ctl_conf.
 -- Add qos and assoc options to confirmation dialogs.
 -- Handle updating identical license or partition information correctly.
 -- Makes sure accounts and QOS' are all lower case to match documentation
    when read in from the slurm.conf file.
 -- Don't consider partitions without enough nodes in reservation,
    main scheduler.
 -- Set SLURM_NTASKS correctly if having to determine from other options.
 -- Removed GCP scripts from contribs. Now located at:
    https://github.com/SchedMD/slurm-gcp.
 -- Don't check existence of srun --prolog or --epilog executables when set to
    "none" and SLURM_TEST_EXEC is used.
 -- Add "P" suffix support to job and step tres specifications.
 -- When doing a reconfigure handle QOS' GrpJobsAccrue correctly.
 -- Remove unneeded extra parentheses from sh5util.
 -- Fix jobacct_gather/cgroup to work correctly when more than one task is
    started on a node.
 -- If requesting --ntasks-per-node with no tasks set tasks correctly.
 -- Accept modifiers for TRES originally added in 6f0342e0358.
 -- Don't remove reservation on slurmctld restart if nodes are removed from
    configuration.
 -- Fix bad xfree in task/cgroup.
 -- Fix removing counters if a job array isn't subject to limits and is
    canceled while pending.
 -- Make sure SLURM_NTASKS_PER_NODE is set correctly when env is overwritten
    by the command line.
 -- Clean up step on a failed node correctly.
 -- mpi/pmix: Fixed the logging of collective state.
 -- mpi/pmix: Make multi-slurmd work correctly when using ring communication.
 -- mpi/pmix: Fix double invocation of the PMIx lib fence callback.
 -- mpi/pmix: Remove unneeded libpmix callback drop in tree-based coll.
 -- Fix race condition in route/topology when the slurmctld is reconfigured.
 -- In route/topology validate the slurmctld doesn't try to initialize the
    node system.
 -- Fix issue when requesting invalid gres.
 -- Validate job_ptr in backfill before restoring preempt state.
 -- Fix issue when job's environment is minimal and only contains variables
    Slurm is going to replace internally.
 -- When handling runaway jobs remove all usage before rollup to remove any
    time that wasn't existent instead of just updating lines that have time
    with a lesser time.
 -- salloc - set SLURM_NTASKS_PER_CORE and SLURM_NTASKS_PER_SOCKET in the
    environment if the corresponding command line options are used.
 -- slurmd - fix handling of the -f flag to specify alternate config file
    locations.
 -- Fix scheduling logic to avoid using nodes that require a reboot for KNL
    node change when possible.
 -- Fix scheduling logic bug. There should have been a test for _not_
    NODE_SET_REBOOT to continue.
 -- Fix a scheuling logic bug with respect to XOR operation support when there
    are down nodes.
 -- If there is a constraint construct of the form "[...&...]"
    then an error is generated if more than one of those specifications
    contains KNL NUMA or MCDRAM modes.
 -- Fix stepd segfault race if slurmctld hasn't registered with the launching
    slurmd yet delivering it's TRES list.
 -- Add SchedulerParameters option of bf_ignore_newly_avail_nodes to avoid
    scheduling lower priority jobs on resources that become available during
    the backfill scheduling cycle when bf_continue is enabled.
 -- Decrement message_connections in stepd code on error path correctly.
 -- Decrease an error message to be debug.
 -- Fix missing suffixes in squeue.
 -- pam_slurm_adopt - send an error message to the user if no Slurm jobs
    can be located on the node.
 -- Run SlurmctldPrimaryOffProg when the primary slurmctld process shuts down.
 -- job_submit/lua: Add several slurmctld return codes.
 -- job_submit/lua: Add user/group info to jobs.
 -- Fix formatting issues when printing uint64_t.
 -- Bump RLIMIT_NOFILE for daemons in systemd services.
 -- Expand %x in job name in 'scontrol show job'.
 -- salloc/sbatch/srun - print warning if mutually exclusive options of --mem
    and --mem-per-cpu are both set.

* Changes in Slurm 18.08.3
==========================
 -- Fix regression in 18.08.1 that caused dbd messages to not be queued up
    when the dbd was down.
 -- Fix regression in 18.08.1 that can cause a slurmctld crash when splitting
    job array elements.

* Changes in Slurm 18.08.2
==========================
 -- Correctly initialize variable in env_array_user_default().
 -- Remove race condition when signaling starting step.
 -- Fix issue where 17.11 job's using GRES in didn't initialize new 18.08
    structures after unpack.
 -- Stop removing nodes once the minimum CPU or node count for the job is
    reached in the cons_res plugin.
 -- Process any changes to MinJobAge and SlurmdTimeout in the slurmctld when
    it is reconfigured to determine changes in its background timers.
 -- Use previous SlurmdTimeout in the slurmctld after a reconfigure to
    determine the time a node has been down.
 -- Fix multi-cluster srun between clusters with different SelectType plugins.
 -- Fix removing job licenses on reconfig/restart when configured license
    counts are 0.
 -- If a job requested multiple licenses and one license was removed then on
    a reconfigure/restart all of the licenses -- including the valid ones
    would be removed.
 -- Fix issue where job's license string wasn't updated after a restart when
    licenses were removed or added.
 -- Add allow_zero_lic to SchedulerParameters.
 -- Avoid scheduling tasks in excess of ArrayTaskThrottle when canceling tasks
    of an array.
 -- Fix jobs that request memory per node and task count that can't be
    scheduled right away.
 -- Avoid infinite loop with jobacct_gather/linux when pids wrap around
    /proc/sys/kernel/pid_max.
 -- Fix --parsable2 output for sacct and sstat commands to remove a stray
    trailing delimiter.
 -- When modifying a user's name in sacctmgr enforce PreserveCaseUser.
 -- When adding a coordinator or user that was once deleted enforce
    PreserveCaseUser.
 -- Correctly handle scenarios where a partitions MaxMemPerCPU is less than
    a jobs --mem-per-cpu and also -c is greater than 1.
 -- Set AccrueTime correctly when MaxJobsAccrue is disabled and BeginTime has
    not been established.
 -- Correctly account for job arrays for new {Max/Grp}JobsAccrue limits.

* Changes in Slurm 18.08.1
==========================
 -- Remove commented-out parts of man pages related to cons_tres work in 19.05,
    as these were showing up on the web version due to a syntax error.
 -- Prevent slurmctld performance issues in main background loop if multiple
    backup controllers are unavailable.
 -- Add missing user read association lock in burst_buffer/cray during init().
 -- Fix incorrect spacing for PartitionName lines in 'scontrol write config'.
 -- Fix creation of step hwloc xml file for after cpuset cgroup has been
    created.
 -- Add userspace as a valid default governor.
 -- Add timers to group_cache_lookup so if going slow advise
    LaunchParameters=send_gids.
 -- Fix SLURM_STEP_GRES=none to work correctly.
 -- Fix potential memory leak when a failure happens unpacking a ctld_multi_msg.
 -- Fix potential double free when a faulure happens when unpacking a
    node_registration_status_msg.
 -- Fix sacctmgr show runaways.
 -- Removed non-POSIX append operator from configure script for non-bash
    support.
 -- Fix incorrect spacing for PartitionName lines in 'scontrol write config'.
 -- Fix sacct to not print huge reserve times when the job was never eligible.
 -- burst_buffer/cray - Add missing locks around assoc_mgr when timing out a
    burst buffer.
 -- burst_buffer/cray - Update burst buffers when an association or qos
    is removed from the system.
 -- Remove documentation for deprecated Cray/ALPS systems. Please switch to
    Native Cray mode instead.
 -- Completely copy features when copying the list in the slurmctld.
 -- PMIX - Fix issue with packing processes when using an arbitrary task
    distribution.
 -- Fix hostlists to be able to handle nodenames with '-' in them surrounded
    by integers.
 -- Added sort option to sprio output.
 -- Fix correct job CPU count allocated.
 -- Fix sacctmgr setting GrpJobs limit when setting GrpJobsAccrue limit.
 -- Change the defaults to MemLimitEnforce=no and NoOverMemoryKill
    (See RELEASE_NOTES).
 -- Prevent abort when using Cray node features plugin on non-knl.
 -- Add ability to reboot down nodes with scontrol reboot_nodes.
 -- Protect against sending to the slurmdbd if the connection has gone away.
 -- Fix invalid read when not using backup slurmctlds.
 -- Prevent acct coordinators from changing default acct on add user.
 -- Don't allow scontrol top do modify job priorities when priority == 1.
 -- slurmsmwd - change parsing code to handle systems with the svid or inst
    fields set in xtconsumer output.
 -- Fix infinite loop in slurmctld if GRES is specified without a count.
 -- sacct: Print error when unknown arguments are found.
 -- Fix checking missing return codes when unpacking structures.
 -- Fix slurm.spec-legacy including slurmsmwd
 -- More explicit error message when cgroup oom-kill events detected.
 -- When updating an association and are unable to find parent association
    initialize old fairshare association pointer correctly.
 -- Wrap slurm_cond_signal() calls with mutexes where needed.
 -- Fix correct timeout with resends in slurm_send_only_node_msg.
 -- Fix pam_slurm_adopt to honor action_adopt_failure.
 -- Have the slurmd recreate the hwloc xml file for the full system on restart.
 -- sdiag - correct the units for the gettimeofday() stat to microseconds.
 -- Set SLURM_CLUSTER_NAME environment variable in MailProg to the ClusterName.
 -- smail - use SLURM_CLUSTER_NAME environment variable.
 -- job_submit/lua - expose argc/argv options through lua interface.
 -- slurmdbd - prevent false-positive warning about innodb settings having
    been set too low if they're actually set over 2GB.

* Changes in Slurm 18.08.0
==========================
 -- Fix segfault on job arrays when starting controller without dbd up.
 -- Fix pmi2 to build with gcc 8.0+.
 -- Remove the development snapshot of select/cons_tres plugin.
 -- Fix slurmd -C to not print benign error from xcpuinfo.
 -- Fix potential double locks in the assoc_mgr.
 -- Fix sacct truncate flag behavior Truncated pending jobs will always
    return a start and end time set to the window end time, so elapsed
    time is 0.
 -- Fix extern step hanging forever when canceled right after creation.
 -- sdiag - add slurmctld agent count.
 -- Remove requirement to have cgroup_allowed_devices_file.conf in order to
    constrain devices. By default all devices are allowed and GRES, that are
    associated with a device file, that are not requested are restricted.
 -- Fix proper alignment of clauses when determining if more nodes are needed
    for an allocation.
 -- Fix race condition when canceling a federation job that just started
    running.
 -- Prevent extra resources from being allocated when combining certain flags.
 -- Fix problem in task/affinity plugin that can lead to slurmd fatal()'ing
    when using --hint=nomultithread.
 -- Fix left over socket file when step is ending and using pmi2 with
    %n or %h in the spool dir.
 -- Don't remove hwloc full system xml file when shutting down the slurmd.
 -- Fix segfault that could happen with a het job when it was canceled while
    starting.
 -- Fix scan-build false-positive warning about invalid memory access in the
    _ping_controller() function.
 -- Add control_inx value to trigger_info_msg_t to permit future work in the
    trigger management code to distinguish which of multiple backup controllers
    has changed state.

* Changes in Slurm 18.08.0rc1
==============================
 -- Add TimelimitRaw sacct output field to display timelimit numbers.
 -- Fix job array preemption during backfill scheduling.
 -- Fix scontrol -o show assoc output.
 -- Add support for sacct --whole-hetjob=[yes|no] option.
 -- Make salloc handle node requests the same as sbatch.
 -- Add shutdown_on_reboot SlurmdParameter to control whether the Slurmd will
    shutdown itself down or not when a reboot request is received.
 -- Add cancel_reboot scontrol option to cancel pending reboot of nodes.
 -- Make Users case insensitive in the database based on
    Parameters=PreserveCaseUser in the slurmdbd.conf.
 -- Improve scheduling when dealing with node_features that could have a
    boot delay.
 -- Fix issue if a step launch fails we don't get a bunch of '(null)' strings
    in the step record for usage.
 -- Changed the default AuthType for slurmdbd to auth/munge.
 -- Make it so libpmi.so doesn't link to libslurm.so.$apiversion.
 -- Added 'remote-fs.target' to After directive of slurmd.service file.
 -- Fix filetxt plugin to handle it when you aren't running a jobacct_gather
    plugin.
 -- Remove drain on node when reboot nextstate used.
 -- Speed up pack of job's qos.
 -- Fix race condition when trying to update reservation in the database.
 -- For the PrologFlags slurm.conf option, make NoHold mutually exclusive with
    Contain and/or X11 options.
 -- Revise the handling of SlurmctldSyslogLevel and SlurmdSyslogLevel options
    in slurm.conf and DebugLevelSyslog in slurmdbd.conf.
 -- Gate reading the cgroup.conf file.
 -- Gate reading the acct_gather_* plugins.
 -- Add sacctmgr options to prevent/manage job queue stuffing:
    - GrpJobsAccrue=<max_jobs>
      Maximum number of pending jobs in aggregate able to accrue age priority
      for this association and all associations which are children of this
      association. To clear a previously set value use the modify command with
      a new value of -1.
    - MaxJobsAccrue=<max_jobs>
      Maximum number of pending jobs able to accrue age priority at any given
      time for the given association. This is overridden if set directly on a
      user. Default is the cluster's limit. To clear a previously set value use
      the modify command with a new value of -1.
    - MinPrioThreshold
      Minimum priority required to reserve resources when scheduling.

* Changes in Slurm 18.08.0pre2
==============================
 -- Remove support for "ChosLoc" configuration parameter.
 -- Configuration parameters "ControlMachine", "ControlAddr", "BackupController"
    and "BackupAddr" replaced by an ordered list of "SlurmctldHost" records
    with the optional address appended to the name enclosed in parenthesis.
    For example: "SlurmctldHost=head(12.34.56.78)". An arbitrary number of
    backup servers can be configured.
 -- When a pending job's state includes "UnavailableNodes" do not include the
    nodes in FUTURE state.
 -- Remove --immediate option from sbatch.
 -- Add infrastructure for per-job and per-step TRES parameters: tres-per-job,
    tres-per-node, tres-per-socket, tres-per-task, cpus-per-tres, mem-per-tres,
    tres-bind and tres-freq. These new parameters are not currently used, but
    have been added to the appropriate RPCs.
 -- Add DefCpuPerGpu and DefMemPerGpu to global and per-partition configuration
    parameters. Shown in scontrol/sview as "JobDefaults=...". NOTE: These
    options are for future use and currently have no effect.
 -- Fix for setting always the correct status on job update in mysql
 -- Add ValidateMode configuration parameter to knl_cray.conf for static
    MCDRAM/NUMA configurations.
 -- Fix security issue in accounting_storage/mysql plugin by always escaping
    strings within the slurmdbd. CVE-2018-7033.
 -- Disable local PTY output processing when using 'srun --unbuffered'. This
    prevents the PTY subsystem from inserting extraneous \r characters into
    the output stream.
 -- Change the column name for the %U (User ID) field in squeue to 'UID'.
 -- CRAY - Add CheckGhalQuiesce to the CommunicationParameters.
 -- When a process is core dumping, avoid terminating other processes in that
    task group. This fixes a problem with writing out incomplete OpenMP core
    files.
 -- CPU frequency management enhancements: If scaling_available_frequencies
    file is not available, then derive values from scaling_min_freq and
    scaling_max_freq values. If cpuinfo_cur_freq file is not available then
    try to use scaling_cur_freq.
 -- Add pending jobs count to sdiag output.
 -- Fix update job function. There were some incosistencies on the behavior
    that caused time limits to be modified when swapping QOS, bad permissions
    check for a coordinator and AllowQOS and DenyQOS were not enforced on
    job update.
 -- Add configuration paramerers SlurmctldPrimaryOnProg and
    SlurmctldPrimaryOffProg, which define programs to execute when a slurmctld
    daemon becomes the primary server or goes from primary to backup mode.
 -- Add configuration paramerers SlurmctldAddr for use with virtual IP to manage
    backup slurmctld daemons.
 -- Explicitly shutdown the slurmd process when instructed to reboot.
 -- Add ability to create/update partition with TRESBillingWeights through
    scontrol.
 -- Calcuate TRES billing values at submission so that billing limits can be
    enforced at submission with QOS DenyOnLimit.
 -- Add node_features plugin function "node_features_p_reboot_weight()" to
    return the node weight to be used for a compute node that requires reboot
    for use (e.g. to change the NUMA mode of a KNL node).
 -- Add NodeRebootWeight parameter to knl.conf configuration file.
 -- Fix insecure handling of job requested gid field. CVE-2018-10995.
 -- Fix srun to return highest signal of any task.
 -- Completely remove "gres" field from step record. Use "tres_per_node",
    "tres_per_socket", etc.
 -- Add "Links" parameter to gres.conf configuration file.
 -- Force slurm_mktime() to set tm_isdst to -1 so anyone using the function
    doesn't forget to set it.
 -- burst_buffer.conf - Add SetExecHost flag to enable burst buffer access
    from the login node for interactive jobs.
 -- Append ", with requeued tasks" to job array "end" emails if any tasks in the
    array were requeued. This is a hint to use "sacct --duplicates" to see the
    whole picture of the array job.
 -- Add ResumeFailProgram slurm.conf option to specify a program that is called
    when a node fails to respond by ResumeTimeout.
 -- Add new job pending reason of "ReqNodeNotAvail, reserved for maintenance".
 -- Remove AdminComment += syntax from 'scontrol update job'.
 -- sched/backfill: Reset job time limit if needed for deadline scheduling.
 -- For heterogeneous job component with required nodes, explicitly exclude
    those nodes from all other job components.
 -- Add name of partition used to output of srun --test-only output (valuable
    for jobs submitted to multiple partitions).
 -- If MailProg is not configured and "/bin/mail" (the default) does not exist,
    but "/usr/bin/mail" does exist then use "/usr/bin/mail" as a default value.
 -- sdiag output now reports outgoing slurmctld message queue contents.
 -- Fix issue in performance when reading slurm conf having nodes with features.
 -- Make it so the slurmdbd's pid file gets created before initing
    the database.
 -- Improve escaping special characters on user commands when specifying paths.
 -- Fix directory names with special char '\' that are not handled correctly.
 -- Add salloc/sbatch/srun option of --gres-flags=disable-binding to disable
    filtering of CPUs with respect to generic resource locality. This option is
    currently required to use more CPUs than are bound to a GRES (i.e. if a GPU
    is bound to the CPUs on one socket, but resources on more than one socket
    are required to run the job). This option may permit a job to be allocated
    resources sooner than otherwise possible, but may result in lower job
    performance.
 -- SlurmDBD - Print warning if MySQL/MariaDB internal tuning is not at least
    half of the recommended values.
 -- Move libpmi from src/api to contribs/pmi.
 -- Add ability to specify a node reason when rebooting nodes with "scontrol
    reboot".
 -- Add nextstate option to "scontrol reboot" to dictate state of node after
    reboot.
 -- Consider "resuming" (nextstate=resume) nodes as available in backfill
    future scheduling and don't replace "resuming" nodes in reservations.
 -- Add the use of a xml file to help performance when using hwloc.

* Changes in Slurm 18.08.0pre1
==============================
 -- Add new burst buffer state of "teardown-fail" to indicate the burst buffer
    teardown operation is failing on specific buffers. This changes the numeric
    value of the BB_STATE_COMPLETE type. Any Slurm version 17.02 or 17.11 tool
    used to report burst buffer state information will report a state of "66"
    rather than "complete" for burst buffers which have been deleted, but still
    exist in the slurmctld daemon's tables (a very short-lived situation).
 -- Multiple backup slurmctld daemons can be configured:
    * Specify "BackupController#=<hostname> and "BackupAddr#=<address>" to
      identify up to 9 backup servers.
    * Output format of "scontrol ping" and the daemon status at the end of
      "scontrol status" is modified to report up status of the primary and all
      backup servers.
    * "scontrol takeover [#]" command can now identify the SlurmctldHost
      index number. Default value is "1" (the first backup configured
      SlurmctldHost).
 -- Enable jobs with zero node count for creation and/or deletion of persistent
    burst buffers.
    * The partition default MinNodes configuration parameter is now 0
      (previously 1 node).
    * Zero size jobs disabled for job arrays and heterogeneous jobs, but
      supported for salloc, sbatch and srun commands.
 -- Add "scontrol show dwstat" command to display Cray burst buffer status.
 -- Add "GetSysStatus" option to burst_buffer.conf file. For burst_buffer/cray
    this would indicate the location of the "dwstat" command.
 -- Add node and partition configuration options of "CpuBind" to control default
    task binding. Modify the scontrol to report and modify these parameters.
 -- Add "NumaCpuBind" option to knl.conf file to automatically change a node's
    CpuBind parameter based upon changes to a node's NUMA mode.
 -- Add sbatch "--batch" option to identify features required on batch node.
    For example "sbatch --batch=haswell ...".
 -- Add "BatchFeatures" field to output of "scontrol show job".
 -- Add support for "--bb" option to sbatch command.
 -- Add new SystemComment field to job data structure and database. Currently
    used for Burst Buffer error logs.
 -- Expand reservation "flags" field from 32 to 64 bits.
 -- Add job state flag of "SIGNALING" to avoid race condition with multiple
    SIGSTOP/SIGCONT signals for the same job being active at the same time.
 -- Properly handle srun --will-run option when there are jobs in COMPLETING
    state.
 -- Properly report who is signaling a step.
 -- Don't combine updated reservation records in sreport's reservation report.
 -- node_features plugin - Add suport for XOR & XAND of job constraints (node
    feature specifications).
 -- Add support for parenthesis in a job's constraint specification to group
    like options together. For example
    --constraint="[(knl&snc4&flat)*4&haswell*1]" might be used to specify that
    four nodes with the features "knl", "snc4" and "flat" plus one node with
    the feature "haswell" are required.
 -- Improvements to how srun searches for the executible when using cwd.
 -- Now programs can be checked before execution if test_exec is set when using
    multi-prog option.
 -- Report NodeFeatures plugin configuration with scontrol and sview commands.
 -- Add acct_gather_profile/influxdb plugin.
 -- Add new job state of SO/STAGE_OUT indicating that burst buffer stage-out
    operation is in progress.
 -- Correct SLURM_NTASKS and SLURM_NPROCS environment variable for heterogeneous
    job step. Report values representing full allocation.
 -- Expand advanced reservation feature specification to support parenthesis and
    counts of nodes with specified features. Nodes with the feature currently
    active will be prefered.
 -- Defer job signaling until prolog is completed
 -- Have the primary slurmctld wait until the backup has completely shutdown
    before taking control.
 -- Fix issue where unpacking job state after TRES count changed could lead to
    invalid reads.
 -- Heterogeneous job steps allocations supported with
    * Open MPI (with Slurm's PMI2 and PMIx plugins) and
    * Intel MPI (with Slurm's PMI2 plugin)
 -- Remove redundant function arguments from task plugins:
    * Remove "job_id" field from task_p_slurmd_batch_request() function.
    * Remove "job_id" field from task_p_slurmd_launch_request() function.
    * Remove "job_id" field from task_p_slurmd_reserve_resources() function.
 -- Change function name from node_features_p_changible_feature() to
    node_features_p_changeable_feature in node_features plugin.
 -- Add Slurm configuration file check logic using "slurmctld -t" command.

* Changes in Slurm 17.11.14
===========================

* Changes in Slurm 17.11.13-2
=============================
 -- Fix Perl build for 32-bit systems.

* Changes in Slurm 17.11.13
===========================
 -- Add mitigation for a potential heap overflow on 32-bit systems in xmalloc.
    CVE-2019-6438.

* Changes in Slurm 17.11.12
===========================
 -- Fix regression in 17.11.10 that caused dbd messages to not be queued up
    when the dbd was down.

* Changes in Slurm 17.11.11
===========================
 -- Correctly initialize variable in env_array_user_default().
 -- Correctly handle scenarios where a partitions MaxMemPerCPU is less than
    a jobs --mem-per-cpu and also -c is greater than 1.

* Changes in Slurm 17.11.10
===========================
 -- Move priority_sort_part_tier from slurmctld to libslurm to make it possible
    to run the regression tests 24.* without changing that code since it links
    directly to the priority plugin where that function isn't defined.
 -- Fix issue where job time limits can increase to max walltime when updating
    a job with scontrol.
 -- Fix invalid protocol_version manipulation on big endian platforms causing
    srun and sattach to fail.
 -- Fix for QOS, Reservation and Alias env variables in srun.
 -- mpi/pmi2 - Backport 6a702158b49c4 from 18.08 to avoid dangerous detached
    thread.
 -- When allowing heterogeneous steps make sure we copy all the options to
    avoid copying strings that may be overwritten.
 -- Print correctly when sh5util finds and empty file.
 -- Fix sh5util to not seg fault on exit.
 -- Fix sh5util to check correctly for H5free_memory.
 -- Adjust OOM monitoring function in task/cgroup to prevent problems in
    regression suite from leaked file descriptors.
 -- Fix issue with gres when defined with a type and no count
    (i.e. gres=gpu/tesla) it would get a count of 0.
 -- Allow sstat to talk to slurmd's that are new in protocol version.
 -- Permit database names over 33 characters in accounting_storage/mysql.
 -- Fix negative values when profiling.
 -- Fix srun segfault caused by invalid memory reads on the env.
 -- Fix segfault on job arrays when starting controller without dbd up.
 -- Fix pmi2 to build with gcc 8.0+.
 -- Fix proper alignment of clauses when determining if more nodes are needed
    for an allocation.
 -- Fix race condition when canceling a federation job that just started
    running.
 -- Prevent extra resources from being allocated when combining certain flags.
 -- Fix problem in task/affinity plugin that can lead to slurmd fatal()'ing
    when using --hint=nomultithread.
 -- Fix left over socket file when step is ending and using pmi2 with
    %n or %h in the spool dir.
 -- Fix incorrect spacing for PartitionName lines in 'scontrol write config'.
 -- Fix sacct to not print huge reserve times when the job was never eligible.
 -- burst_buffer/cray - Add missing locks around assoc_mgr when timing out a
    burst buffer.
 -- burst_buffer/cray - Update burst buffers when an association or qos
    is removed from the system.
 -- If failed over to a backup controller, ensure the agent thread is launched
    to handle deferred tasks.
 -- Fix correct job CPU count allocated.
 -- Protect against sending to the slurmdbd if the connection has gone away.
 -- Fix checking missing return codes when unpacking structures.
 -- Fix slurm.spec-legacy including slurmsmwd
 -- More explicit error message when cgroup oom-kill events detected.
 -- When updating an association and are unable to find parent association
    initialize old fairshare association pointer correctly.
 -- Wrap slurm_cond_signal() calls with mutexes where needed.
 -- Fix correct timeout with resends in slurm_send_only_node_msg.
 -- Fix pam_slurm_adopt to honor action_adopt_failure.
 -- job_submit/lua - expose argc/argv options through lua interface.

* Changes in Slurm 17.11.9-2
============================
 -- Fix printing of node state "drain + reboot" (and other node state flags).
 -- Fix invalid read (segfault) when sorting multi-partition jobs.
 -- Move several new error() messages to debug() to keep them out of users'
    srun output.

* Changes in Slurm 17.11.9
==========================
 -- Fix segfault in slurmctld when a job's node bitmap is NULL during a
    scheduling cycle.  Primarily caused by EnforcePartLimits=ALL.
 -- Remove erroneous unlock in acct_gather_energy/ipmi.
 -- Enable support for hwloc version 2.0.1.
 -- Fix 'srun -q' (--qos) option handling.
 -- Fix socket communication issue that can lead to lost task completition
    messages, which will cause a permanently stuck srun process.
 -- Handle creation of TMPDIR if environment variable is set or changed in
    a task prolog script.
 -- Avoid node layout fragmentation if running with a fixed CPU count but
    without Sockets and CoresPerSocket defined.
 -- burst_buffer/cray - Fix datawarp swap default pool overriding jobdw.
 -- Fix incorrect job priority assignment for multi-partition job with
    different PriorityTier settings on the partitions.
 -- Fix sinfo to print correct node state.

* Changes in Slurm 17.11.8
==========================
 -- Fix incomplete RESPONSE_[RESOURCE|JOB_PACK]_ALLOCATION building path.
 -- Do not allocate nodes that were marked down due to the node not responding
    by ResumeTimeout.
 -- task/cray plugin - search for "mems" cgroup information in the file
    "cpuset.mems" then fall back to the file "mems".
 -- Fix ipmi profile debug uninitialized variable.
 -- Improve detection of Lua package on older RHEL distributions.
 -- PMIx: fixed the direct connect inline msg sending.
 -- MYSQL: Fix issue not handling all fields when loading an archive dump.
 -- Allow a job_submit plugin to change the admin_comment field during
    job_submit_plugin_modify().
 -- job_submit/lua - fix access into reservation table.
 -- MySQL - Prevent deadlock caused by archive logic locking reads.
 -- Don't enforce MaxQueryTimeRange when requesting specific jobs.
 -- Modify --test-only logic to properly support jobs submitted to more than
    one partition.
 -- Prevent slurmctld from abort when attempting to set non-existing
    qos as def_qos_id.
 -- Add new job dependency type of "afterburstbuffer". The pending job will be
    delayed until the first job completes execution and it's burst buffer
    stage-out is completed.
 -- Reorder proctrack/task plugin load in the slurmstepd to match that of slurmd
    and avoid race condition calling task before proctrack can introduce.
 -- Prevent reboot of a busy KNL node when requesting inactive features.
 -- Revert to previous behavior when requesting memory per cpu/node introduced
    in 17.11.7.
 -- Fix to reinitialize previously adjusted job members to their original value
    when validating the job memory in multi-partition requests.
 -- Fix _step_signal() from always returning SLURM_SUCCESS.
 -- Combine active and available node feature change logs on one line rather
    than one line per node for performance reasons.
 -- Prevent occasionally leaking freezer cgroups.
 -- Fix potential segfault when closing the mpi/pmi2 plugin.
 -- Fix issues with --exclusive=[user|mcs] to work correctly
    with preemption or when job requests a specific list of hosts.
 -- Make code compile with hdf5 1.10.2+
 -- mpi/pmix: Fixed the collectives canceling.
 -- SlurmDBD: improve error message handling on archive load failure.
 -- Fix incorrect locking when deleting reservations.
 -- Fix incorrect locking when setting up the power save module.
 -- Fix setting format output length for squeue when showing array jobs.
 -- Add xstrstr function.
 -- Fix printing out of --hint options in sbatch, salloc --help.
 -- Prevent possible divide by zero in _validate_time_limit().
 -- Add Delegate=yes to the slurmd.service file to prevent systemd from
    interfering with the jobs' cgroup hierarchies.
 -- Change the backlog argument to the listen() syscall within srun to 4096
    to match elsewhere in the code, and avoid communication problems at scale.

* Changes in Slurm 17.11.7
==========================
 -- Fix for possible slurmctld daemon abort with NULL pointer.
 -- Fix different issues when requesting memory per cpu/node.
 -- PMIx - override default paths at configure time if --with-pmix is used.
 -- Have sprio display jobs before eligible time when
    PriorityFlags=ACCRUE_ALWAYS is set.
 -- Make sure locks are always in place when calling _post_qos_list().
 -- Notify srun and ctld when unkillable stepd exits.
 -- Fix slurmstepd deadlock in stepd cleanup caused by race condition in
    the jobacct_gather fini() interfaces introduced in 17.11.6.
 -- Fix slurmstepd deadlock in PMIx startup.
 -- task/cgroup - fix invalid free() if the hwloc library does not return a
    string as expected.
 -- Fix insecure handling of job requested gid field. CVE-2018-10995.
 -- Add --without x11 option to rpmbuild in slurm.spec.

* Changes in Slurm 17.11.6
==========================
 -- CRAY - Add slurmsmwd to the contribs/cray dir.
 -- sview - fix crash when closing any search dialog.
 -- Fix initialization of variable in stepd when using native x11.
 -- Fix reading slurm_io_init_msg to handle partial messages.
 -- Fix scontrol create res segfault when wrong user/account parameters given.
 -- Fix documentation for sacct on parameter -X (--allocations)
 -- Change TRES Weights debug messages to debug3.
 -- FreeBSD - assorted fixes to restore build.
 -- Fix for not tracking environment variables from unrelated different jobs.
 -- PMIX - Added the direct connect authentication.
    When upgrading this may cause issues with jobs using pmix starting on mixed
    slurmstepd versions where some are less than 17.11.6.
 -- Prevent the backup slurmctld from losing the active/available node
    features list on takeover.
 -- Add documentation for fix IDLE*+POWER due to capmc stuck in Cray systems.
 -- Fix missing mutex unlock when prolog is failing on a node, leading to a
    hung slurmd.
 -- Fix locking around Cray CCM prolog/epilog.
 -- Add missing fed_mgr read locks.
 -- Fix issue incorrectly setting a job time_start to 0 while requeueing.
 -- smail - remove stray '-s' from mail subject line.
 -- srun - prevent segfault if ClusterName setting is unset but
    SLURM_WORKING_CLUSTER environment variable is defined.
 -- In configurator.html web pages change default configuration from
    task/none to task/affinity plugin and from select/linear plugin to
    select/cons_res plus CR_Core.
 -- Allow jobs to run beyond a FLEX reservation end time.
 -- Fix problem with wrongly set as Reservation job state_reason.
 -- Prevent bit_ffs() from returnig value out of bitmap range.
 -- Improve performance of 'squeue -u' when PrivateData=jobs is enabled.
 -- Make UnavailableNodes value in job reason be correct for each job.
 -- Fix 'squeue -o %s' on Cray systems.
 -- Fix incorrect error thrown when cancelling part of a job array.
 -- Fix error code and scheduling problem for --exclusive=[user|mcs].
 -- Fix build when lz4 is in a non-standard location.
 -- Be able to force power_down of cloud node even if in power_save state.
 -- Allow cloud nodes to be recognized in Slurm when booted out of band.
 -- Fixes race condition in _pack_job_gres() when is called multiple times.
 -- Increase duration of "sleep" command used to keep extern step alive.
 -- Remove unsafe usage of pthread_cancel in slurmstepd that can lead to
    to deadlock in glibc.
 -- Fix total TRES Billing on partitions.
 -- Don't tear down a BB if a node fails and --no-kill or resize of a job
    happens.
 -- Remove unsafe usage of pthread_cancel in pmix plugin that can lead to
    to deadlock in glibc.
 -- Fix fatal in controller when loading completed trigger
 -- Ignore reservation overlap at submission time.
 -- GRES type model and QOS limits documentation added
 -- slurmd - fix ABRT on SIGINT after reconfigure with MemSpecLimit set.
 -- PMIx - move two error messages on retry to debug level, and only display
    the error after the retry count has been exceeded.
 -- Increase number of tries when sending responses to srun.
 -- Fix checkpointing requeued/completing jobs in a bad state which caused a
    segfault on restart.
 -- Fix srun on ppc64 platforms.
 -- Prevent slurmd from starting steps if the Prolog returns an error when using
    PrologFlags=alloc.
 -- priority/multifactor - prevent segfault running sprio if a partition has
    just been deleted and PriorityFlags=CALCULATE_RUNNING is turned on.
 -- job_submit/lua - add ESLURM_INVALID_TIME_LIMIT return code value.
 -- job_submit/lua - print an error if the script calls log.user in
    job_modify() instead of returning it to the next submitted job erroneously.
 -- select/linear - handle job resize correctly.
 -- select/cons_res - improve handling of --cores-per-socket requests.

* Changes in Slurm 17.11.5
==========================
 -- Fix cloud nodes getting stuck in DOWN+POWER_UP+NO_RESPOND state after not
    responding by ResumeTimeout.
 -- Add job's array_task_cnt and user_name along with partitions
    [max|def]_mem_per_[cpu|node], max_cpus_per_node, and max_share with the
    SHARED_FORCE definition to the job_submit/lua plugin.
 -- srun - fix for SLURM_JOB_NUM_NODES env variable assignment.
 -- sacctmgr - fix runaway jobs identification.
 -- Fix for setting always the correct status on job update in mysql.
 -- Fix issue if running with an association manager cache (slurmdbd was down
    when slurmctld was started) you could loose QOS usage information.
 -- CRAY - Fix spec file to work correctly.
 -- Set scontrol exit code to 1 if attempting to update a node state to DRAIN
    or DOWN without specifying a reason.
 -- Fix race condition when running with an association manager cache
    (slurmdbd was down when slurmctld was started).
 -- Print out missing SLURM_PERSIST_INIT slurmdbd message type.
 -- Fix two build errors related to use of the O_CLOEXEC flag with older glibc.
 -- Add Google Cloud Platform integration scripts into contribs directory.
 -- Fix minor potential memory leak in backfill plugin.
 -- Add missing node flags (maint/power/etc) to node states.
 -- Fix issue where job time limits may end up at 1 minute when using the
    NoReserve flag on their QOS.
 -- Fix security issue in accounting_storage/mysql plugin by always escaping
    strings within the slurmdbd. CVE-2018-7033.
 -- Soften messages about best_fit topology to debug2 to avoid alarm.
 -- Fix issue in sreport reservation utilization report to handle more
    allocated time than 100% (Flex reservations).
 -- When a job is requesting a Flex reservation prefer the reservation's nodes
    over any other nodes.

* Changes in Slurm 17.11.4
==========================
 -- Add fatal_abort() function to be able to get core dumps if we hit an
    "impossible" edge case.
 -- Link slurmd against all libraries that slurmstepd links to.
 -- Fix limits enforce order when they're set at partition and other levels.
 -- Add slurm_load_single_node() function to the Perl API.
 -- slurm.spec - change dependency for --with lua to use pkgconfig.
 -- Fix small memory leaks in node_features plugins on reconfigure.
 -- slurmdbd - only permit requests to update resources from operators or
    administrators.
 -- Fix handling of partial writes in io_init_msg_write_to_fd() which can
    lead to job step launch failure under higher cluster loads.
 -- MYSQL - Fix to handle quotes in a given work_dir of a job.
 -- sbcast - fix a race condition that leads to "Unspecified error".
 -- Log that support for the ChosLoc configuration parameter will end in Slurm
    version 18.08.
 -- Fix backfill performance issue where bf_min_prio_reserve was not respected.
 -- Fix MaxQueryTimeRange checks.
 -- Print MaxQueryTimeRange in "sacctmgr show config".
 -- Correctly check return codes when creating a step to check if needing to
    wait to retry or not.
 -- Fix issue where a job could be denied by Reason=MaxMemPerLimit when not
    requesting any tasks.
 -- In perl tools, fix for regexp that caused extra incorrectly shown results.
 -- Add some extra locks in fed_mgr to be extra safe.
 -- Minor memory leak fixes in the fed_mgr on slurmctld shutdown.
 -- Make sreport job reports also report duplicate jobs correctly.
 -- Fix issues restoring certain Partition configuration elements, especially
    when ReconfigFlags=KeepPartInfo is enabled.
 -- Don't add TRES whose value is NO_VAL64 when building string line.
 -- Fix removing array jobs from hash in slurmctld.
 -- Print out missing user messages from jobsubmit plugin when srun/salloc are
    waiting for an allocation.
 -- Handle --clusters=all as case insensitive.
 -- Only check requested clusters in federation when using --test-only
    submission option.
 -- In the federation, make it so you can cancel stranded sibling jobs.
 -- Silence an error from PSS memory stat collection process.
 -- Requeue jobs allocated to nodes requested to DRAIN or FAIL if nodes are
    POWER_SAVE or POWER_UP, preventing jobs to start on NHC-failed nodes.
 -- Make MAINT and OVERLAP resvervation flags order agnostic on overlap test.
 -- Preserve node features when slurmctld daemons reconfigured including active
    and available KNL features.
 -- Prevent creation of multiple io_timeout threads within srun, which can
    lead to fatal() messages when those unexpected and additional mutexes are
    destroyed when srun shuts down.
 -- burst_buffer/cray - Prevent use of "#DW create_persistent" and
    "#DW destroy_persistent" directives available in Cray CLE6.0UP06. This
    will be supported in Slurm version 18.08. Use "#BB" directives until then.
 -- Fix task/cgroup affinity to behave correctly.
 -- FreeBSD - fix build on systems built with WITHOUT_KERBEROS.
 -- Fix to restore pn_min_memory calculated result to correctly enforce
    MaxMemPerCPU setting on a partition when the job uses --mem.
 -- slurmdbd - prevent infinite loop if a QOS is set to preempt itself.
 -- Fix issue with log rotation for slurmstepd processes.

* Changes in Slurm 17.11.3-2
==========================
 -- Revert node_features changes in 17.11.3 that lead to various segfaults on
    slurmctld startup.

* Changes in Slurm 17.11.3
==========================
 -- Send SIG_UME correctly to a step.
 -- Sort sreport's reservation report by cluster, time_start, resv_name instead
    of cluster, resv_name, time_start.
 -- Avoid setting node in COMPLETING state indefinitely if the job initiating
    the node reboot is cancelled while the reboot in in progress.
 -- Scheduling fix for changing node features without any NodeFeatures plugins.
 -- Improve logic when summarizing job arrays mail notifications.
 -- Add scontrol -F/--future option to display nodes in FUTURE state.
 -- Fix REASONABLE_BUF_SIZE to actually be 3/4 of MAX_BUF_SIZE.
 -- When a job array is preempting make it so tasks in the array don't wait
    to preempt other possible jobs.
 -- Change free_buffer to FREE_NULL_BUFFER to prevent possible double free
    in slurmstepd.
 -- node_feature/knl_cray - Fix memory leaks that occur when slurmctld
    reconfigured.
 -- node_feature/knl_cray - Fix memory leak that can occur during normal
    operation.
 -- Fix srun environment variables for --prolog script.
 -- Fix job array dependency with "aftercorr" option and some task arrays in
    the first job fail. This fix lets all task array elements that can run
    proceed rather than stopping all subsequent task array elements.
 -- Fix potential deadlock in the slurmctld when using list_for_each.
 -- Fix for possible memory corruption in srun when running heterogeneous job
    steps.
 -- Fix job array dependency with "aftercorr" option and some task arrays in
    the first job fail. This fix lets all task array elements that can run
    proceed rather than stopping all subsequent task array elements.
 -- Fix output file containing "%t" (task ID) for heterogeneous job step to
    be based upon global task ID rather than task ID for that component of the
    heterogeneous job step.
 -- MYSQL - Fix potential abort when attempting to make an account a parent of
    itself.
 -- Fix potentially uninitialized variable in slurmctld.
 -- MYSQL - Fix issue for multi-dimensional machines when using sacct to
    find jobs that ran on specific nodes.
 -- Reject --acctg-freq at submit if invalid.
 -- Added info string on sh5util when deleting an empty file.
 -- Correct dragonfly topology support when job allocation specifies desired
    switch count.
 -- Fix minor memory leak on an sbcast error path.
 -- Fix issues when starting the backup slurmdbd.
 -- Revert uid check when requesting a jobid from a pid.
 -- task/cgroup - add support to detect OOM_KILL cgroup events.
 -- Fix whole node allocation cpu counts when --hint=nomultihtread.
 -- Allow execution of task prolog/epilog when uid has access
    rights by a secondary group id.
 -- Validate command existence on the srun *[pro|epi]log options
    if LaunchParameter test_exec is set.
 -- Fix potential memory leak if clean starting and the TRES didn't change
    from when last started.
 -- Fix for association MaxWall enforcement when none is given at submission.
 -- Add a job's allocated licenses to the [Pro|Epi]logSlurmctld.
 -- burst_buffer/cray: Attempts by job to create persistent burst buffer when
    one already exists owned by a different user will be logged and the job
    held.
 -- CRAY - Remove race in the core_spec where we add the slurmstepd to the
    job container where if the step was canceled would also cancel the stepd
    erroneously.
 -- Make sure the slurmstepd blocks signals like SIGTERM correctly.
 -- SPANK - When slurm_spank_init_post_opt() fails return error correctly.
 -- When revoking a sibling job in the federation we want to send a start
    message before purging the job record to get the uid of the revoked job.
 -- Make JobAcctGatherParams options case-insensitive. Previously, UsePss
    was the only correct capitialization; UsePSS or usepss were silently
    ignored.
 -- Prevent pthread_atfork handlers from being added unnecessarily after
    'scontrol reconfigure', which can eventually lead to a crash if too
    many handlers have been registered.
 -- Better debug messages when MaxSubmitJobs is hit.
 -- Docs - update squeue man page to describe all possible job states.
 -- Prevent orphaned step_extern steps when a job is cancelled while the
    prolog is still running.

* Changes in Slurm 17.11.2
==========================
 -- jobcomp/elasticsearch - append Content-Type to the HTTP header.
 -- MYSQL - Fix potential abort of slurmdbd when job has no TRES.
 -- Add advanced reservation flag of "REPLACE_DOWN" to replace DOWN or DRAINED
    nodes.
 -- slurm.spec-legacy - add missing libslurmfull.so to slurm.files.
 -- Fix squeue job ID filtering for pending job array records.
 -- Fix potential deadlock in _run_prog() in power save code.
 -- MYSQL - Add dynamic_offset in the database to force range for auto
    increment ids for the tres_table.
 -- MYSQL - Fix fallout from MySQL auto increment bug, see RELEASE_NOTES,
    only affects current 17.11 users tracking licenses or GRES in the database.
 -- Refactor logging logic to avoid possible memory corruption on non-x86
    architectures.
 -- Fix memory leak when getting jobs from the slurmdbd.
 -- Fix incorrect logic behind MemorySwappiness, and only set the value when
    specified in the configuration.

* Changes in Slurm 17.11.1-2
============================
 -- MYSQL - Make index for pack_job_id

* Changes in Slurm 17.11.1
==========================
 -- Fix --with-shared-libslurm option to work correctly.
 -- Make it so only daemons log errors on configuration option duplicates.
 -- Fix for ConstrainDevices=yes to work correctly.
 -- Fix to purge old jobs using burst buffer if slurmctld daemon restarted
    after the job's burst buffer work was already completed.
 -- Make logging prefix for slurmstepd to happen as soon as possible.
 -- mpi/pmix: Fix the job registration for the PMIx v2.1.
 -- Fix uid check for signaling a step with anything but SIGKILL.
 -- Return ESLURM_TRANSITION_STATE_NO_UPDATE instead of EAGAIN when trying to
    signal a step that is still running a prolog.
 -- Update Cray slurm_playbook.yaml with latest recommended version.
 -- Only say a prolog is done running after the extern step is launched.
 -- Wait to start a batch step until the prolog and extern step are
    fully ran/launched.  Only matters if running with
    PrologFlags=[contain|alloc].
 -- Truncate a range for SlurmctldPort to FD_SETSIZE elements and throw an
    error, otherwise network traffic may be lost due to poll() not detecting
    traffic.
 -- Fix for srun --pack-group option that can reuse/corrupt memory.
 -- Fix handling ultra long hostlists in a hostfile.
 -- X11: fix xauth regex to handle '-' in hostnames again.
 -- Fix potential node reboot timeout problem for "scontrol reboot" command.
 -- Add ability for squeue to sort jobs by submit time.
 -- CRAY - Switch to standard pid files on Cray systems.
 -- Update jobcomp records on duplicate inserts.
 -- If unrecognized configuration file option found then print an appropriate
    fatal error message rather than relying upon random errno value.
 -- Initialize job_desc_msg_t's instead of just memset'ing them.
 -- Fix divide by zero when job requests no tasks and more memory than
    MaxMemPer{CPU|NODE}.
 -- Avoid changing Slurm internal errno on syslog() failures.
 -- BB - Only launch dependent jobs after the burst buffer is staged-out
    completely instead of right after the parent job finishes.
 -- node_features/knl_generic - If plugin can not fully load then do not spawn
    a background pthread (which will fail with invalid memory reference).
 -- Don't set the next jobid to give out to the highest jobid in the system on
    controller startup. Just use the checkpointed next use jobid.
 -- Docs - add Slurm/PMIx and OpenMPI build notes to the mpi_guide page.
 -- Add lustre_no_flush option to LaunchParameters for Native Cray systems.
 -- Fix rpmbuild issue with rpm 4.13+ / Fedora 25+.
 -- sacct - fix the display for the NNodes field when using the --units option.
 -- Prevent possible double-xfree on a buffer in stepd_completion.
 -- Fix for record job state on successful allocation but failed reply message.
 -- Fill in the user_name field for batch jobs if not sent by the slurmctld.
    (Which is the default behavior if LaunchParameters=send_gids is not
    enabled.). This prevents job launch problems for sites using UsePAM=1.
 -- Handle syncing federated jobs that ran on non-origin clusters and were
    cancelled while the origin cluster was down.
 -- Fix accessing variable outside of lock.
 -- slurm.spec: move libpmi to a separate package to solve a conflict with the
    version provided by PMIx. This will require a separate change to PMIx as
    well.
 -- X11 forwarding: change xauth handling to use hostname/unix:display format,
    rather than localhost:display.
 -- mpi/pmix - Fix warning if not compiling with debug.

* Changes in Slurm 17.11.0
==========================
 -- Fix documentation for MaxQueryTimeRange option in slurmdbd.conf.
 -- Avoid srun abort trying to run on heterogeneous job component that has
    ended.
 -- Add SLURM_PACK_JOB_ID,SLURM_PACK_JOB_OFFSET to PrologSlurmctld and
    EpilogSlurmctld environment.
 -- Treat ":" in #SBATCH arguments as fatal error. The "#SBATCH packjob" syntax
    must be used instead.
 -- job_submit/lua plugin: expose pack_job fields to get.
 -- Prevent scheduling deadlock with multiple components of heterogeneous job
    in different partitions (i.e. one heterogeneous job component is higher
    priority in one partition and another component is lower priority in a
    different partition).
 -- Fix for heterogeneous job starvation bug.
 -- Fix some slurmctld memory leaks.
 -- Add SLURM_PACK_JOB_NODELIST to PrologSlurmctld and EpilogSlurmctld
    environment.
 -- If PrologSlurmctld fails for pack job leader then requeue or kill all
    components of the job.
 -- Fix for mulitple --pack-group srun arguments given out of order.
 -- Update slurm.conf(5) man page with updated example logrotate script.
 -- Add SchedulerParameters=whole_pack configuration parameter. If set, then
    hold, release and cancel operations on any component of a heterogeneous job
    will be applied to all components
 -- Handle FQDNs in xauth cookies for x11 display forwarding properly.
 -- For heterogeneous job steps, the srun --open-mode option default value will
    be set to "append".
 -- Pack job scheduling list not being cleared between runs of the backfill
    scheduler resulted in various anomalies.
 -- Fix that backward compat for pmix version < 1.1.5.
 -- Fix use-after-free that can lead to slurmstepd segfaulting when setting
    ulimit values.
 -- Add heterogeneous job start data to sdiag output.
 -- X11 forwarding - handle systems with X11UseLocalhost=no set in sshd_config.
 -- Fix potential missing issue with missin symbols in gres plugins.
 -- Ignore querying clusters in federation that are down from status commands.
 -- Base federated jobs off of origin job and not the local cluster in API.
 -- Remove erroneous double '-' on rpath for libslurmfull.
 -- Remove version from libslurmfull and move it to $LIBDIR/slurm since the ABI
    could change from one version to the other.
 -- Fix unused wall time for reservations.
 -- Convert old reservation records to insert unused wall into the rows.
 -- slurm.spec: further restructing and improvements.
 -- Allow nodes state to be updated between FAIL and DRAIN.
 -- x11 forwarding: handle build with alternate location for libssh2.

* Changes in Slurm 17.11.0rc3
==============================
 -- Fix extern step to wait until launched before allowing job to start.
 -- Add missing locks around figuring out TRES when clean starting the
    slurmctld.
 -- Cray modulefile: avoid removing /usr/bin from path on module unload.
 -- Make reoccurring reservations show up in the database.
 -- Adjust related resources (cpus, tasks, gres, mem, etc.) when updating
    NumNodes with scontrol.
 -- Don't initialize MPI plugins for batch or extern steps.`
 -- slurm.spec - do not install a slurm.conf file under /etc/ld.so.conf.d.
 -- X11 forwarding - fix keepalive message generation code.
 -- If heterogeneous job step is unable to acquire MPI reserved ports then
    avoid referencing NULL pointer. Retry assigning ports ONLY for
    non-heterogeneous job steps.
 -- If any acct_gather_*_init fails fatal instead of error and keep going.
 -- launch/slurm plugin - Avoid using global variable for heterogeneous job
    steps, which could corrupt memory.

* Changes in Slurm 17.11.0rc2
==============================
 -- Prevent slurmctld abort with NodeFeatures=knl_cray and non-KNL nodes lacking
    any configured features.
 -- The --cpu_bind and --mem_bind options have been renamed to --cpu-bind
    and --mem-bind for consistency with the rest of Slurm's options. Both
    old and new syntaxes are supported for now.
 -- Add slurmdb_connection_commit to the slurmdb api to commit when needed.
 -- Add the federation api's to the slurmdb.h file.
 -- Add job functions to the db_api.
 -- Fix sacct to always use the db_api instead of sometimes calling functions
    directly.
 -- Fix sacctmgr to always use the db_api instead of sometimes calling functions
    directly.
 -- Fix sreport to always use the db_api instead of sometimes calling functions
    directly.
 -- Make global uid to the db_api to minimize calls to getuid().
 -- Add support for HWLOC version 2.0.
 -- Added more validation logic for updates to node features.
 -- Added node_features_p_node_update_valid() function to node_features plugin.
 -- If a job is held due to bad constraints and a node's features change then
    test the job again to see if can run with the new features.
 -- Added node_features_p_changible_feature() function to node_features plugin.
 -- Avoid rebooting a node if a job's requested feature is not under the control
    of the node_features plugin and is not currently active.
 -- node_features/knl_generic plugin: Do not clear a node's non-KNL features
    specified in slurm.conf.
 -- Added SchedulerParameters configuration option "disable_hetero_steps" to
    disable job steps that span multiple components of a heterogeneous job.
    Disabled by default except with mpi/none plugin. This limitation to be
    removed in Slurm version 18.08.

* Changes in Slurm 17.11.0rc1
==============================
 -- Added the following jobcomp/script environment variables: CLUSTER,
    DEPENDENCY, DERIVED_EC, EXITCODE, GROUPNAME, QOS, RESERVATION, USERNAME.
    The format of LIMIT (job time limit) has been modified to D-HH:MM:SS.
 -- Fix QOS usage factor applying to individual TRES run minute usage.
 -- Print numbers using exponential format if required to fit in allocated
    field width. The sacctmgr and sshare commands are impacted.
 -- Make it so a backup DBD doesn't attempt to create database tables and
    relies on the primary to do so.
 -- By default have Slurm dynamically link to libslurm.so instead of static
    linking.  If static linking is desired configure with
    --without-shared-libslurm.
 -- Change --workdir in sbatch to be --chdir as in all other commands (salloc,
    srun).
 -- Add WorkDir to the job record in the database.
 -- Make the UsageFactor of a QOS work when a qos has the nodecay flag.
 -- Add MaxQueryTimeRange option to slurmdbd.conf to limit accounting query
    ranges when fetching job records.
 -- Add LaunchParameters=batch_step_set_cpu_freq to allow the setting of the cpu
    frequency on the batch step.
 -- CRAY - Fix statically linked applications to CRAY's PMI.
 -- Fix - Raise an error back to the user when trying to update currently
    unsupported core-based reservations.
 -- Do not print TmpDisk space as part of 'slurmd -C' line.
 -- Fix to test MaxMemPerCPU/Node partition limits when scheduling, previously
    only checked on submit.
 -- Work for heterogeneous job support (complete solution in v17.11):
    * Set SLURM_PROCID environment variable to reflect global task rank (needed
      by MPI).
    * Set SLURM_NTASKS environment variable to reflect global task count (needed
      by MPI).
    * In srun, if only some steps are allocated and one step allocation fails,
      then delete all allocated steps.
    * Get SPANK plungins working with heterogeneous jobs. The
      spank_init_post_opt() function is executed once per job component.
    * Modify sbcast command and srun's --bcast option to support heterogeneous
      jobs.
    * Set more environment variables for MPI: SLURM_GTIDS and SLURM_NODEID.
    * Prevent a heterogeneous job allocation from including the same nodes in
      multiple components (required by MPI jobs spanning components).
    * Modify step create logic so that call components of a heterogeneous job
      launched by a single srun command have the same step ID value.
 -- Modify output of "--mpi=list" to avoid duplicates for version numbers in
    mpi/pmix plugin names.
 -- Allow nodes to be rebooted while in a maintenance reservation.
 -- Show nodes as down even when nodes are in a maintenance reservation.
 -- Harden the slurmctld HA stack to mitigate certain split-brain issues.
 -- Work for heterogeneous job support (complete solution in v17.11):
    * Add burst buffer support.
    * Remove srun's --mpi-combine option (always combined).
    * Add SchedulerParameters configuration option "enable_hetero_steps" to
      enable job steps that span multiple components of a heterogeneous job.
      Disabled by default as most MPI implementations and Slurm configurations
      are not currently supported. Limitation to be removed in Slurm version
      18.08.
    * Synchronize application launch across multiple components with debugger.
    * Modify slurm_kill_job_step() to cancel all components of a heterogeneous
      job step (used by MPI).
    * Set SLURM_JOB_NUM_NODES environment variable as needed by MVAPICH.
    * Base time limit upon the time that the latest job component is available
      (after all nodes in all components booted and ready for use).
 -- Add cluster name to smail tool email header.
 -- Speedup arbitrary distribution algorithm.
 -- Modify "srun --mpi=list" output to match valid option input by removing the
    "mpi/" prefix on each line of output.
 -- Automatically set the reservation's partition for the job if not the
    cluster default.
 -- mpi/pmi2 plugin - vestigial pointer could be referenced at shutdown with
    invalid memory reference resulting.
 -- Fix to _is_gres_cnt_zero() return false for improper input string
 -- Cleanup all pthread_create calls and replace with new slurm_thread_create
    macro.
 -- Removed obsolete MPI plugins. Remaining options are openmpi, pmi2, pmix.
 -- Removed obsolete checkpoint/poe plugin.
 -- Process spank environment variable options before processing spank command
    line options. Spank plugins should be able to handle option callbacks being
    called multiple times.
 -- Add support for specialized cores with task/affinity plugin (previously
    only supported with task/cgroup plugin).
 -- Add "TaskPluginParam=SlurmdOffSpec" option that will prevent the Slurm
    compute node daemons (slurmd and slurmstepd) from executing on specialized
    cores.
 -- CRAY - Make native mode default, use --disable-native-cray to use ALPS
    instead of native Slurm.
 -- Add ability to prevent suspension of some count of nodes in a specified
    range using the SuspendExcNodes configuration parameter.
 -- Add SLURM_WCKEY to PrologSlurmctld and EpilogSlurmctld  environment.
 -- Return user response string in response to successful job allocation request
    not only on failure. Set in LUA using function 'slurm.user_msg("STRING")'.
 -- Add 'scontrol write batch_script <jobid>' command to retrieve the batch
    script for a given job.
 -- Remove option to display the batch script as part of 'scontrol show job'.
 -- On native Cray system the configured RebootProgram is executed on on the
    head node by the slurmctld daemon rather than by the slurmd daemons on the
    compute nodes. The "capmc_resume" program from "contribs/cray" can be used.
 -- Modify "scontrol top" command to accept a comma separated list of job IDs
    as an argument rather than a single job ID.
 -- Add MemorySwappiness value to cgroup.conf.
 -- Add new "billing" TRES which allows jobs to be limited based on the job's
    billable TRES calculated by the job's partition's TRESBillingWeights.
 -- sbatch - force line-buffered output so 'sbatch -W' returns the jobid
    over a piped output immediately.
 -- Regular user use of "scontrol top" command is now diabled. Use the
    configuration parameter "SchedulerParameters=enable_user_top" to enable
    that functionality. The configuration parameter
    "SchedulerParameters=disable_user_top" will be silently ignored.
 -- Add -TALL to sreport.
 -- Removed unused SlurmdPlugstack option and associated framework.
 -- Correct logic for line continuation in srun --multi-prog file.
 -- Add DBD Agent queue size to sdiag output.
 -- Add running job count to sdiag output.
 -- Print unix timestamps next to ASCII timestamps in sdiag output.
 -- In a job allocation spanning KNL and non-KNL nodes and requiring a reboot,
    do not attempt to set default NUMA or MCDRAM modes on non-KNL nodes.
 -- Change default to let pending jobs run outside of reservation after
    reservation is gone to put jobs in held state. Added NO_HOLD_JOBS_AFTER_END
    reservation flag to use old default.
 -- When creating a reservation, validate the CoreCnt specification matches
    the number of nodes listed.
 -- When creating a reservation, correct logic to ignoring job allocations on
    request.
 -- Deprecate BLCR plugin, and do not build by default.
 -- Change sreport report titles from "Use" to "Usage"

* Changes in Slurm 17.11.0pre2
==============================
 -- Initial work for heterogeneous job support (complete solution in v17.11):
    * Modified salloc, sbatch and srun commands to parse command line, job
      script and environment variables to recognize requests for heterogeneous
      jobs. Same commands also modified to set environment variables describing
      each component of the heterogeneous job.
    * Modified job allocate, batch job submit and job "will-run" requests to
      pass a list of job specifications and get a list of responses.
    * Modify slurmctld daemon to process a heterogeneous job request and create
      multiple job records as needed.
    * Added new fields to job record: pack_job_id, pack_job_offset and
      pack_job_set (set of job IDs). Added to slurmctld state save/restore
      logic and job information reported.
    * Display new job fields in "scontrol show job" output.
    * Modify squeue command to display heterogeneous job records using "#+#"
      format. The squeue --job=# output lists all components of a heterogeneous
      job.
    * Modify scancel logic to cancel all components of a heterogeneous job with
      a single request/RPC.
    * Configuration parameter DebugFlags value of "HeteroJobs" added.
    * Job requeue and suspend/resume modified to operate on all components of
      a heterogeneous job with a single request/RPC.
    * New web page added to describe heterogeneous jobs.
    * Descriptions of new API added to man pages.
    * Modified email notifications to only operate on the first job component.
    * Purge heterogeneous job records at the same time and not by individual
      components.
    * Modified logic for heterogeneous jobs submitted to multiple clusters
      ("--clusters=...") so the job will be routed to the cluster that is
      expected to start all components earliest.
    * Modified srun to create multiple job steps for heterogeneous job
      allocations.
    * Modified launch plugin to accept a pointer to job step options structure
      rather than work from a single/common data structure.
 -- Improve backfill scheduling algorithm with respect to starting jobs as soon
    as possible while avoiding advanced reservations.
 -- Add URG as an option to 'scancel --signal'.
 -- Check if the buffer returned from slurm_persist_msg_pack() isn't NULL.
 -- Modify all daemons to re-open log files on receipt of SIGUSR2 signal. This
    is much than using SIGHUP to re-read the configuration file and rebuild
    various tables.
 -- Add PrivateData=events configuration parameter
 -- Work for heterogeneous job support (complete solution in v17.11):
    * Add pointer to job option structure to job_step_create_allocation()
      function used by srun.
    * Parallelize task launch for heterogeneous job allocations (initial work).
    * Make packjobid, packjoboffset, and packjobidset fields available in squeue
      output.
    * Modify smap command to display heterogeneous job records using "#+#"
      format.
    * Add srun --pack-group and --mpi-combine options to control job step
      launch behaviour (not fully implemented).
    * Add pack job component ID to srun --label output (e.g. "P0 1:" for
      job component 0 and task 1).
    * jobcomp/elasticsearch: Add pack_job_id and pack_job_offset fields.
    * sview: Modified to display pack job information.
    * Major re-write of task state container logic to support for list of
      containers rather than one container per srun command.
    * Add some regression tests.
    * Add srun pack job environment variables when performing job allocation.
 -- Set Reason=dependency over Reason=JobArrayTaskLimit for pending jobs.
 -- Add slurm.conf configuration parameters SlurmctldSyslogDebug and
    SlurmdSyslogDebug to control which messages from the slurmctld and slurmd
    daemons get written to syslog.
 -- Add slurmdbd.conf configuration parameter DebugLevelSyslog to control which
    messages from the slurmdbd daemon get written to syslog.
 -- Fix handling of GroupUpdateForce option.
 -- Work for heterogeneous job support (complete solution in v17.11):
    * Add support to sched/backfill for concurrent allocation of all pack job
      components including support of --time-min option.
    * Defer initiation of a heterogeneous job until a components can be started
      at the same time, taking into consideration association and QOS limits
      for the job as a whole.
    * Perform limit check on heterogeneous job as a whole at submit time to
      reject jobs that will never be able to run.
    * Add pack_job_id and pack_job_offset to accounting database.
    * Modified sacct to accept pack job ID specification using "#+#" notation.
    * Modified sstat to accept pack job ID specification using "#+#" notation.
 -- Clear a job's "wait reason" value of BeginTime" after that time has passed.
    Previously a readon of "BeginTime" could be reported long after the job's
    requested begin time had passed.
 -- Split group_info in slurm_ctl_conf_t into group_force and group_time.
 -- Work for heterogeneous job support (complete solution in v17.11):
    * Fix I/O race condition on step termination for srun launching multiple
      pack job groups.
    * If prolog is running when attempting to signal a step, then return EAGAIN
      and retry rather than simply returning SLURM_ERROR and aborting.
    * Modify launch/slurm plugin to signal all components of a pack job rather
      than just the one (modify to use a list of step context records).
    * Add logic to support srun --mpi-combine option.
    * Set up debugger data structures.
    * Disable cancellation of individual component while the job is pending.
    * Modify scontrol job hold/release and update to operate with heterogeneous
      job id specification (e.g. "scontrol hold 123+4").
    * If srun lacks application specification for some component, the next one
      specified will be used for earlier components.

* Changes in Slurm 17.11.0pre1
==============================
 -- Interpet all format options in output/error file to log prolog errors. Prior
    logic only supported "%j" (job ID) option.
 -- Add the configure option --with-shared-libslurm which will link to
    libslurm.so instead of libslurm.o thus reducing the footprint of all the
    binaries.
 -- In switch plugin, added plugin_id symbol to plugins and wrapped
    switch_jobinfo_t with dynamic_plugin_data_t in interface calls in
    order to pass switch information between clusters with different switch
    types.
 -- Switch naming of acct_gather_infiniband to acct_gather_interconnect
 -- Make it so you can "stack" the interconnect plugins.
 -- Add a last_sched_eval timestamp to record when a job was last evaluated
    by the main scheduler or backfill.
 -- Add scancel "--hurry" option to avoid staging out any burst buffer data.
 -- Simplify the sched plugin interface.
 -- Add new advanced reservation flags of "weekday" (repeat on each weekday;
    Monday through Friday) and "weekend" (repeat on each weekend day; Saturday
    and Sunday).
 -- Add new advanced reservation flag of "flex", which permits jobs requesting
    the reservation to begin prior to the reservation's start time and use
    resources inside or outside of the reservation. A typical use case is to
    prevent jobs not explicitly requesting the reservation from using those
    reserved resources rather than forcing jobs requesting the reservation to
    use those resources in the time frame reserved.
 -- Add NoDecay flag to QOS.
 -- Node "OS" field expanded from "sysname" to "sysname release version" (e.g.
    change from "Linux" to
    "Linux 4.8.0-28-generic #28-Ubuntu SMP Sat Feb 8 09:15:00 UTC 2017").
 -- jobcomp/elasticsearch - Add "job_name" and "wc_key" fields to stored
    information.
 -- jobcomp/filetxt - Add ArrayJobId, ArrayTaskId, ReservationName, Gres,
    Account, QOS, WcKey, Cluster, SubmitTime, EligibleTime, DerivedExitCode and
    ExitCode.
 -- scontrol modified to report core IDs for reservation containing individual
    cores.
 -- MYSQL - Get rid of table join during rollup which speeds up the process
    dramatically on large job/step tables.
 -- Add ability to define features on clusters for directing federated jobs to
    different clusters.
 -- Add new RPC to process multiple federation RPCs in a single communication.
 -- Modify slurm_load_jobs() function to load job information from all clusters
    in a federation.
 -- Add squeue --local and --sibling options to modify filtering of jobs on
    federated clusters.
 -- Add SchedulerParameters option of bf_max_job_user_part to specifiy the
    maximum number of jobs per user for any single partition. This differs from
    bf_max_job_user in that a separate counter is applied to each partition
    rather than having a single counter per user applied to all partitions.
 -- Modify backfill logic so that bf_max_job_user, bf_max_job_part and
    bf_max_job_user_part options can all be used independently of each other.
 -- Add sprio -p/--partition option to filter jobs by partition name.
 -- Add partition name to job priority factor response message.
 -- Add sprio --local and --sibling options for use in federation of clusters.
 -- Add sprio "%c" format to print cluster name in federation mode.
 -- Modify sinfo logic to provided unified view of all nodes and partitions
    in a federation, add --local option to only report local state information
    even in a cluster, print cluster name with "%V" format option, and
    optionally sort by cluster name.
 -- If a task in a parallel job fails and it was launched with the
    --kill-on-bad-exit option then terminate the remaining tasks using the
    SIGCONT, SIGTERM and SIGKILL signals rather than just sending SIGKILL.
 -- Include submit_time when doing the sort for job scheduling.
 -- Modify sacct to report all jobs in federation by default. Also add --local
    option.
 -- Modify sacct to accept "--cluster all" option (in addition to the old
    "--cluster -1", which is still accepted).
 -- Modify sreport to report all jobs in federation by default. Also add --local
    option.
 -- sched/backfill: Improve assoc_limit_stop configuration parameter support.
 -- KNL features: Always keep active and available features in the same order:
    first site-specific features, next MCDRAM modes, last NUMA modes.
 -- Changed default ProctrackType to cgroup.
 -- Add "cluster_name" field to node_info_t and partition_info_t data structure.
    It is filled in only when the cluster is part of a federation and
    SHOW_FEDERATION flag used.
 -- Functions slurm_load_node() slurm_load_partitions() modified to show all
    nodes/partitions in a federation when the SHOW_FEDERATION flag is used.
 -- Add federated views to sview.
 -- Add --federation option to sacct, scontrol, sinfo, sprio, squeue, sreport to
    show a federated view. Will show local view by default.
 -- Add FederationParameters=fed_display slurm.conf option to configure status
    commands to display a federated view by default if the cluster is a member
    of a federation.
 -- Log the down nodes whenever slurmctld restarts.
 -- Report that "CPUs" plus "Boards" in node configuration invalid only if the
    CPUs value is not equal to the total thread count.
 -- Extend the output of the seff utility to also include the job's wall-clock
    time.
 -- Add bf_max_time to SchedulerParameters.
 -- Add bf_max_job_assoc to SchedulerParameters.
 -- Add new SchedulerParameters option bf_window_linear to control the rate at
    which the backfill test window expands. This can be used on a system with
    a modest number of running jobs (hundreds of jobs) to help prevent expected
    start times of pending jobs to get pushed forward in time. On systems with
    large numbers of running jobs, performance of the backfill scheduler will
    suffer and fewer jobs will be evaluated.
 -- Improve scheduling logic with respect to license use and node reboots.
 -- CRAY - Alter algorithm to come up with the SLURM_ID_HASH.
 -- Implement federated scheduling and federated status outputs.
 -- The '-q' option to srun has changed from being the short form of
    '--quit-on-interrupt' to '--qos'.
 -- Change sched_min_interval default from 0 to 2 microseconds.

* Changes in Slurm 17.02.12
==========================
 -- Fix segfault in slurmdbd hourly rollup when having a job outside a
    reservation, with no end_time set, from an assoc that's in a reservation.

* Changes in Slurm 17.02.11
==========================
 -- Fix insecure handling of user_name and gid fields. CVE-2018-10995.

* Changes in Slurm 17.02.10
==========================
 -- Fix updating of requested TRES memory.
 -- Cray modulefile: avoid removing /usr/bin from path on module unload.
 -- Fix issue when resetting the partition pointers on nodes.
 -- Show reason field in 'sinfo -R' when nodes is marked as failed.
 -- Fix potential of slurmstepd segfaulting when the extern step fails to start.
 -- Allow nodes state to be updated between FAIL and DRAIN.
 -- Avoid registering a job'd credential multiple times.
 -- Fix sbatch --wait to stop waiting after job is gone from memory.
 -- Fix memory leak of MailDomain configuration string when slurmctld daemon is
    reconfigured.
 -- Fix to properly remove extern steps from the starting_steps list.
 -- Fix Slurm to work correctly with HDF5 1.10+.
 -- Add support in salloc/srun --bb option for "access_mode" in addition to
    "access" for consistency with DW options.
 -- Fix potential deadlock in _run_prog() in power save code.
 -- MYSQL - Add dynamic_offset in the database to force range for auto
    increment ids for the tres_table.
 -- Avoid setting node in COMPLETING state indefinitely if the job initiating
    the node reboot is cancelled while the reboot in in progress.
 -- node_feature/knl_cray - Fix memory leaks that occur when slurmctld
    reconfigured.
 -- node_feature/knl_cray - Fix memory leak that can occur during normal
    operation.
 -- Fix job array dependency with "aftercorr" option and some task arrays in
    the first job fail. This fix lets all task array elements that can run
    proceed rather than stopping all subsequent task array elements.
 -- Fix whole node allocation cpu counts when --hint=nomultihtread.
 -- NRT - Fix issue when running on a HFI (p775) system with multiple protocols.
 -- Fix uninitialized variables when unpacking slurmdb_archive_cond_t.
 -- Fix security issue in accounting_storage/mysql plugin by always escaping
    strings within the slurmdbd. CVE-2018-7033.

* Changes in Slurm 17.02.9
==========================
 -- When resuming powered down nodes, mark DOWN nodes right after ResumeTimeout
    has been reached (previous logic would wait about one minute longer).
 -- Fix sreport not showing full column name for TRES Count.
 -- Fix slurmdb_reservations_get() giving wrong usage data when job's spanned
    reservation that was modified.
 -- Fix sreport reservation utilization report showing bad data.
 -- Show all TRES' on a reservation in sreport reservation utilization report by
    default.
 -- Fix sacctmgr show reservation handling "end" parameter.
 -- Work around issue with sysmacros.h and gcc7 / glibc 2.25.
 -- Fix layouts code to only allow setting a boolean.
 -- Fix sbatch --wait to keep waiting even if a message timeout occurs.
 -- CRAY - If configured with NodeFeatures=knl_cray and there are non-KNL
    nodes which include no features the slurmctld will abort without
    this patch when attemping strtok_r(NULL).
 -- Fix regression in 17.02.7 which would run the spank_task_privileged as
    part of the slurmstepd instead of it's child process.
 -- Fix security issue in Prolog and Epilog by always prepending SPANK_ to
    all user-set environment variables. CVE-2017-15566.

* Changes in Slurm 17.02.8
==========================
 -- Add 'slurmdbd:' to the accounting plugin to notify message is from dbd
    instead of local.
 -- mpi/mvapich - Buffer being only partially cleared. No failures observed.
 -- Fix for job --switch option on dragonfly network.
 -- In salloc with --uid option, drop supplementary groups before changing UID.
 -- jobcomp/elasticsearch - strip any trailing slashes from JobCompLoc.
 -- jobcomp/elasticsearch - fix memory leak when transferring generated buffer.
 -- Prevent slurmstepd ABRT when parsing gres.conf CPUs.
 -- Fix sbatch --signal to signal all MPI ranks in a step instead of just those
    on node 0.
 -- Check multiple partition limits when scheduling a job that were previously
    only checked on submit.
 -- Cray: Avoid running application/step Node Health Check on the external
    job step.
 -- Optimization enhancements for partition based job preemption.
 -- Address some build warnings from GCC 7.1, and one possible memory leak if
    /proc is inaccessible.
 -- If creating/altering a core based reservation with scontrol/sview on a
    remote cluster correctly determine the select type.
 -- Fix autoconf test for libcurl when clang is used.
 -- Fix default location for cgroup_allowed_devices_file.conf to use correct
    default path.
 -- Document NewName option to sacctmgr.
 -- Reject a second PMI2_Init call within a single step to prevent slurmstepd
    from hanging.
 -- Handle old 32bit values stored in the database for requested memory
    correctly in sacct.
 -- Fix memory leaks in the task/cgroup plugin when constraining devices.
 -- Make extremely verbose info messages debug2 messages in the task/cgroup
    plugin when constraining devices.
 -- Fix issue that would deny the stepd access to /dev/null where GRES has a
    'type' but no file defined.
 -- Fix issue where the slurmstepd would fatal on job launch if you have no
    gres listed in your slurm.conf but some in gres.conf.
 -- Fix validating time spec to correctly validate various time formats.
 -- Make scontrol work correctly with job update timelimit [+|-]=.
 -- Reduce the visibily of a number of warnings in _part_access_check.
 -- Prevent segfault in sacctmgr if no association name is specified for
    an update command.
 -- burst_buffer/cray plugin modified to work with changes in Cray UP05
    software release.
 -- Fix job reasons for jobs that are violating assoc MaxTRESPerNode limits.
 -- Fix segfault when unpacking a 16.05 slurm_cred in a 17.02 daemon.
 -- Fix setting TRES limits with case insensitive TRES names.
 -- Add alias for xstrncmp() -- slurm_xstrncmp().
 -- Fix sorting of case insensitive strings when using xstrcasecmp().
 -- Gracefully handle race condition when reading /proc as process exits.
 -- Avoid error on Cray duplicate setup of core specialization.
 -- Skip over undefined (hidden in Slurm) nodes in pbsnodes.
 -- Add empty hashes in perl api's slurm_load_node() for hidden nodes.
 -- CRAY - Add rpath logic to work for the alpscomm libs.
 -- Fixes for administrator extended TimeLimit (job reason & time limit reset).
 -- Fix gres selection on systems running select/linear.
 -- sview: Added window decorator for maximize,minimize,close buttons for all
    systems.
 -- squeue: interpret negative length format specifiers as a request to
    delimit values with spaces.
 -- Fix the torque pbsnodes wrapper script to parse a gres field with a type
    set correctly.

* Changes in Slurm 17.02.7
==========================
 -- Fix deadlock if requesting to create more than 10000 reservations.
 -- Fix potential memory leak when creating partition name.
 -- Execute the HealthCheckProgram once when the slurmd daemon starts rather
    than executing repeatedly until an exit code of 0 is returned.
 -- Set job/step start and end times to 0 when using --truncate and start > end.
 -- Make srun --pty option ignore EINTR allowing windows to resize.
 -- When resuming node only send one message to the slurmdbd.
 -- Modify srun --pty option to use configured SrunPortRange range.
 -- Fix issue with whole gres not being printed out with Slurm tools.
 -- Fix issue with multiple jobs from an array are prevented from starting.
 -- Fix for possible slurmctld abort with use of salloc/sbatch/srun
    --gres-flags=enforce-binding option.
 -- Fix race condition when using jobacct_gather/cgroup where the memory of the
    step wasn't always gathered correctly.
 -- Better debug when slurmdbd queue is filling up in the slurmctld.
 -- Fixed truncation on scontrol show config output.
 -- Serialize updates from from the dbd to the slurmctld.
 -- Fix memory leak in slurmctld when agent queue to the DBD has filled up.
 -- CRAY - Throttle step creation if trying to create too many steps at once.
 -- If failing after switch_g_job_init happened make sure switch_g_job_fini is
    called.
 -- Fix minor memory leak if launch fails in the slurmstepd.
 -- Fix issue where UnkillableStepProgram if step was in an ending state.
 -- Fix bug when tracking multiple simultaneous spawned ping cycles.
 -- jobcomp/elasticsearch plugin now saves state of pending requests on
    slurmctld daemon shutdown so then can be recovered on restart.
 -- Fix issue when an alternate munge key when communicating on a persistent
    connection.
 -- Document inconsistent behavior of GroupUpdateForce option.
 -- Fix bug in selection of GRES bound to specific CPUs where the GRES count
    is 2 or more. Previous logic could allocate CPUs not available to the job.
 -- Increase buffer to handle long /proc/<pid>/stat output so that Slurm can
    read correct RSS value and take action on jobs using more memory than
    requested.
 -- Fix srun job jobs that can run immediately to run in the highest priority
    partion when multiple partitions are listed. scontrol show jobs can
    potentially show the partition list in priority order.
 -- Fix starting controller if StateSaveLocation path didn't exist.
 -- Fix inherited association 'max' TRES limits combining multiple limits in
    the tree.
 -- Sort TRES id's on limits when getting them from the database.
 -- Fix issue with pmi[2|x] when TreeWidth=1.
 -- Correct buffer size used in determining specialized cores to avoid possible
    truncation of core specification and not reserving the specified cores.
 -- Close race condition on Slurm structures when setting DebugFlags.
 -- Make it so the cray/switch plugin grabs new DebugFlags on a reconfigure.
 -- Fix incorrect lock levels when creating or updating a reservation.
 -- Fix overlapping reservation resize.
 -- Add logic to help support Dell KNL systems where syscfg is different than
    the normal Intel syscfg.
 -- CRAY - Fix BB to handle type= correctly, regression in 17.02.6.

* Changes in Slurm 17.02.6
==========================
 -- Fix configurator.easy.html to output the SelectTypeParameters line.
 -- If a job requests a specific memory requirement then gets something else
    from the slurmctld make sure the step allocation is made aware of it.
 -- Fix missing initialization in slurmd.
 -- Fix potential degradation when running HTC (> 100 jobs a sec) like
    workflows through the slurmd.
 -- Fix race condition which could leave a stepd hung on shutdown.
 -- CRAY - Add configuration for ATP to the ansible play script.
 -- Fix potential to corrupt DBD message.
 -- burst_buffer logic modified to support sizes in both SI and EIC size units
    (e.g. M/MiB for powers of 1024, MB for powers of 1000).

* Changes in Slurm 17.02.5
==========================
 -- Prevent segfault if a job was blocked from running by a QOS that is then
    deleted.
 -- Improve selection of jobs to preempt when there are multiple partitions
    with jobs subject to preemption.
 -- Only set kmem limit when ConstrainKmemSpace=yes is set in cgroup.conf.
 -- Fix bug in task/affinity that could result in slurmd fatal error.
 -- Increase number of jobs that are tracked in the slurmd as finishing at one
    time.
 -- Note when a job finishes in the slurmd to avoid a race when launching a
    batch job takes longer than it takes to finish.
 -- Improve slurmd startup on large systems (> 10000 nodes)
 -- Add LaunchParameters option of cray_net_exclusive to control whether all
    jobs on the cluster have exclusive access to their assigned nodes.
 -- Make sure srun inside an allocation gets --ntasks-per-[core|socket]
    set correctly.
 -- Only make the extern step at job creation.
 -- Fix for job step task layout with --cpus-per-task option.
 -- Fix --ntasks-per-core option/environment variable parsing to set
    the requested value, instead of always setting one (srun).
 -- Correct error message when ClusterName in configuration files does not match
    the name in the slurmctld daemon's state save file.
 -- Better checking when a job is finishing to avoid underflow on job's
    submitted to a QOS/association.
 -- Handle partition QOS submit limits correctly when a job is submitted to
    more than 1 partition or when the partition is changed with scontrol.
 -- Performance boost for when Slurm is dealing with credentials.
 -- Fix race condition which could leave a stepd hung on shutdown.
 -- Add lua support for opensuse.

* Changes in Slurm 17.02.4
==========================
 -- Do not attempt to schedule jobs after changing the power cap if there are
    already many active threads.
 -- Job expansion example in FAQ enhanced to demonstrate operation in
    heterogeneous environments.
 -- Prevent scontrol crash when operating on array and no-array jobs at once.
 -- knl_cray plugin: Log incomplete capmc output for a node.
 -- knl_cray plugin: Change capmc parsing of mcdram_pct from string to number.
 -- Remove log files from test20.12.
 -- When rebooting a node and using the PrologFlags=alloc make sure the
    prolog is ran after the reboot.
 -- node_features/knl_generic - If a node is rebooted for a pending job, but
    fails to enter the desired NUMA and/or MCDRAM mode then drain the node and
    requeue the job.
 -- node_features/knl_generic disable mode change unless RebootProgram
    configured.
 -- Add new burst_buffer function bb_g_job_revoke_alloc() to be executed
    if there was a failure after the initial resource allocation. Does not
    release previously allocated resources.
 -- Test if the node_bitmap on a job is NULL when testing if the job's nodes
    are ready.  This will be NULL is a job was revoked while beginning.
 -- Fix incorrect lock levels when testing when job will run or updating a job.
 -- Add missing locks to job_submit/pbs plugin when updating a jobs
    dependencies.
 -- Add support for lua5.3
 -- Add min_memory_per_node|cpu to the job_submit/lua plugin to deal with lua
    not being able to deal with pn_min_memory being a uint64_t.  Scripts are
    urged to change to these new variables avoid issue.  If not set the
    variables will be 'nil'.
 -- Calculate priority correctly when 'nice' is given.
 -- Fix minor typos in the documentation.
 -- node_features/knl_cray: Preserve non-KNL active features if slurmctld
    reconfigured while node boot in progress.
 -- node_features/knl_generic: Do not repeatedly log errors when trying to read
    KNL modes if not KNL system.
 -- Add missing QOS read lock to backfill scheduler.
 -- When doing a dlopen on liblua only attempt the version compiled against.
 -- Fix null-dereference in sreport cluster ulitization when configured with
    memory-leak-debug.
 -- Fix Partition info in 'scontrol show node'. Previously duplicate partition
    names, or Partitions the node did not belong to could be displayed.
 -- Fix it so the backup slurmdbd will take control correctly.
 -- Fix unsafe use of MAX() macro, which could result in problems cleaning up
    accounting plugins in slurmd, or repeat job cancellation attempts in
    scancel.
 -- Fix 'scontrol update reservation duration=unlimited' to set the duration
    to 365-days (as is done elsewhere), rather than 49710 days.
 -- Check if variable given to scontrol show job is a valid jobid.
 -- Fix WithSubAccounts option to not include WithDeleted unless requested.
 -- Prevent a job tested on multiple partitions from being marked
    WHOLE_NODE_USER.
 -- Prevent a race between completing jobs on a user-exclusive node from
    leaving the node owned.
 -- When scheduling take the nodes in completing jobs out of the mix to reduce
    fragmentation.  SchedulerParameters=reduce_completing_frag
 -- For jobs submited to multiple partitions, report the job's earliest start
    time for any partition.
 -- Backfill partitions that use QOS Grp limits to "float" better.
 -- node_features/knl_cray: don't clear configured GRES from non-KNL node.
 -- sacctmgr - prevent segfault in command when a request is denied due
    to a insufficient priviledges.
 -- Add warning about libcurl-devel not being installed during configure.
 -- Streamline job purge by handling file deletion on a separate thread.
 -- Always set RLIMIT_CORE to the maximum permitted for slurmd, to ensure
    core files are created even on non-developer builds.
 -- Fix --ntasks-per-core option/environment variable parsing to set
    the requested value, instead of always setting one.
 -- If trying to cancel a step that hasn't started yet for some reason return
    a good return code.
 -- Fix issue with sacctmgr show where user=''

* Changes in Slurm 17.02.3
==========================
 -- Increase --cpu_bind and --mem_bind field length limits.
 -- Fix segfault when using AdminComment field with job arrays.
 -- Clear Dependency field when all dependencies are satisfied.
 -- Add --array-unique to squeue which will display one unique pending job
    array element per line.
 -- Reset backfill timers correctly without skipping over them in certain
    circumstances.
 -- When running the "scontrol top" command, make sure that all of the user's
    jobs have a priority that is lower than the selected job. Previous logic
    would permit other jobs with equal priority (no jobs with higher priority).
 -- Fix perl api so we always get an allocation when calling Slurm::new().
 -- Fix issue with cleaning up cpuset and devices cgroups when multiple steps
    end at the same time.
 -- Document that PriorityFlags option of DEPTH_OBLIVIOUS precludes the use of
    FAIR_TREE.
 -- Fix issue if an invalid message came in a Slurm daemon/command may abort.
 -- Make it impossible to use CR_CPU* along with CR_ONE_TASK_PER_CORE. The
    options are mutually exclusive.
 -- ALPS - Fix scheduling when ALPS doesn't agree with Slurm on what nodes
    are free.
 -- When removing a partition make sure it isn't part of a reservation.
 -- Fix seg fault if loading attempting to load non-existent burstbuffer plugin.
 -- Fix to backfill scheduling with respect to QOS and association limits. Jobs
    submitted to multiple partitions are most likley to be effected.
 -- sched/backfill: Improve assoc_limit_stop configuration parameter support.
 -- CRAY - Add ansible play and README.
 -- sched/backfill: Fix bug related to advanced reservations and the need to
    reboot nodes to change KNL mode.
 -- Preempt plugins - fix check for 'preempt_youngest_first' option.
 -- Preempt plugins - fix incorrect casts in preempt_youngest_first mode.
 -- Preempt/job_prio - fix incorrect casts in sort function.
 -- Fix to make task/affinity work with ldoms where there are more than 64
    cpus on the node.
 -- When using node_features/knl_generic make it so the slurmd doesn't segfault
    when shutting down.
 -- Fix potential double-xfree() when using job arrays that can lead to
    slurmctld crashing.
 -- Fix priority/multifactor priorities on a slurmctld restart if not using
    accounting_storage/[mysql|slurmdbd].
 -- Fix NULL dereference reported by CLANG.
 -- Update proctrack documentation to strongly encourage use of
    proctrack/cgroup.
 -- Fix potential memory leak if job fails to begin after nodes have been
    selected for a job.
 -- Handle a job that made it out of the select plugin without a job_resrcs
    pointer.
 -- Fix potential race condition when persistent connections are being closed at
    shutdown.
 -- Fix incorrect locks levels when submitting a batch job or updating a job
    in general.
 -- CRAY - Move delay waiting for job cleanup to after we check once.
 -- MYSQL - Fix memory leak when loading archived jobs into the database.
 -- Fix potential race condition when starting the priority/multifactor plugin's
    decay thread.
 -- Sanity check to make sure we have started a job in acct_policy.c before we
    clear it as started.
 -- Allow reboot program to use arguments.
 -- Message Aggr - Remove race condition on slurmd shutdown with respects to
    destroying a mutex.
 -- Fix updating job priority on multiple partitions to be correct.
 -- Don't remove admin comment when updating a job.
 -- Return error when bad separator is given for scontrol update job licenses.

* Changes in Slurm 17.02.2
==========================
 -- Update hyperlink to LBNL Node Health Check program.
 -- burst_buffer/cray - Add support for line continuation.
 -- If a job is cancelled by the user while it's allocated nodes are being
    reconfigured (i.e. the capmc_resume program is rebooting nodes for the job)
    and the node reconfiguration fails (i.e. the reboot fails), then don't
    requeue the job but leave it in a cancelled state.
 -- capmc_resume (Cray resume node script) - Do not disable changing a node's
    active features if SyscfgPath is configured in the knl.conf file.
 -- Improve the srun documentation for the --resv-ports option.
 -- burst_buffer/cray - Fix parsing for discontinuous allocated nodes. A job
    allocation of "20,22" must be expressed as "20\n22".
 -- Fix rare segfault when shutting down slurmctld and still sending data to
    the database.
 -- Fix gres output of a job if it is updated while pending to be displayed
    correctly with Slurm tools.
 -- Fix pam_slurm_adopt.
 -- Fix missing unlock when job_list doesn't exist when starting priority/
    multifactor.
 -- Fix segfault if slurmctld is shutting down and the slurmdbd plugin was
    in the middle of setting db_indexes.
 -- Add ESLURM_JOB_SETTING_DB_INX to errno to note when a job can't be updated
    because the dbd is setting a db_index.
 -- Fix possible double insertion into database when a job is updated at the
    moment the dbd is assigning a db_index.
 -- Fix memory error when updating a job's licenses.
 -- Fix seff to work correctly with non-standard perl installs.
 -- Export missing slurmdbd_defs_[init|fini] needed for libslurmdb.so to work.
 -- Fix sacct from returning way more than requested when querying against a job
    array task id.
 -- Fix double read lock of tres when updating gres or licenses on a job.
 -- Make sure locks are always in place when calling
    assoc_mgr_make_tres_str_from_array.
 -- Prevent slurmctld SEGV when creating reservation with duplicated name.
 -- Consider QOS flags Partition[Min|Max]Nodes when doing backfill.
 -- Fix slurmdbd_defs.c to not have half symbols go to libslurm.so and the
    other half go to libslurmdb.so.
 -- Fix 'scontrol show jobs' to remove an errant newline when 'Switches' is
    printed.
 -- Better code for handling memory required by a task on a heterogeneous
    system.
 -- Fix regression in 17.02.0 with respects to GrpTresMins on a QOS or
    Association.
 -- Cleanup to make make dist work.
 -- Schedule interactive jobs quicker.
 -- Perl API - correct value of MEM_PER_CPU constant to correctly handle
    memory values.
 -- Fix 'flags' variable to be 32 bit from the old 16 bit value in the perl api.
 -- Export sched_nodes for a job in the perl api.
 -- Improve error output when updating a reservation that has already started.
 -- Fix --ntasks-per-node issue with srun so DenyOnLimit would work correctly.
 -- node_features/knl_cray plugin - Fix memory leak.
 -- Fix wrong cpu_per_task count issue on heterogeneous system when dealing with
    steps.
 -- Fix double free issue when removing usage from an association with sacctmgr.
 -- Fix issue with SPANK plugins attempting to set null values as environment
    variables, which leads to the command segfaulting on newer glibc versions.
 -- Fix race condition on slurmctld startup when plugins have not gone through
    init() ahead of the rpc_manager processing incoming messages.
 -- job_submit/lua - expose admin_comment field.
 -- Allow AdminComment field to be set by the job_submit plugin.
 -- Allow AdminComment field to be changed by any Administrator.
 -- Fix key words in jobcomp select.
 -- MYSQL - Streamline job flush sql when doing a clean start on the slurmctld.
 -- Fix potential infinite loop when talking to the DBD when shutting down
    the slurmctld.
 -- Fix MCS filter.
 -- Make it so pmix can be included in the plugin rpm without having to
    specify --with-pmix.
 -- MYSQL - Fix initial load when not using he DBD.
 -- Fix scontrol top to not make jobs priority 0 (held).
 -- Downgrade info message about exceeding partition time limit to a debug2.

* Changes in Slurm 17.02.1-2
============================
 -- Replace clock_gettime with time(NULL) for very old systems without the call.

* Changes in Slurm 17.02.1
==========================
 -- Modify pam module to work when configured NodeName and NodeHostname differ.
 -- Update to sbatch/srun man pages to explain the "filename pattern" clearer
 -- Add %x to sbatch/srun filename pattern to represent the job name.
 -- job_submit/lua - Add job "bitflags" field.
 -- Update slurm.spec file to note obsolete RPMs.
 -- Fix deadlock scenario when dumping configuration in the slurmctld.
 -- Remove unneeded job lock when running assoc_mgr cache.  This lock could
    cause potential deadlock when/if TRES changed in the database and the
    slurmctld wasn't made aware of the change.  This would be very rare.
 -- Fix missing locks in gres logic to avoid potential memory race.
 -- If gres is NULL on a job don't try to process it when returning detailed
    information about a job to scontrol.
 -- Fix print of consumed energy in sstat when no energy is being collected.
 -- Print formatted tres string when creating/updating a reservation.
 -- Fix issues with QOS flags Partition[Min|Max]Nodes to work correctly.
 -- Prevent manipulation of the cpu frequency and governor for batch or
    extern steps. This addresses an issue where the batch step would
    inadvertently set the cpu frequency maximum to the minimum value
    supported on the node.
 -- Convert a slurmctd power management data structure from array to list in
    order to eliminate the possibility of zombie child suspend/resume
    processes.
 -- Burst_buffer/cray - Prevent slurmctld daemon abort if "paths" operation
    fails. Now job will be held. Update job update time when held.
 -- Fix issues with QOS flags Partition[Min|Max]Nodes to work correctly.
 -- Refactor slurmctld agent logic to eliminate some pthreads.
 -- Added "SyscfgTimeout" parameter to knl.conf configuration file.
 -- Fix for CPU binding for job steps run under a batch job.

* Changes in Slurm 17.02.0
==========================
 -- job_submit/lua - Make "immediate" parameter available.
 -- Fix srun I/O race condtion to eliminate a error message that might be
    generated if the application exits with outstanding stdin.
 -- Fix regression when purging/archiving jobs/events.
 -- Add new job state JOB_OOM indicating Out Of Memory condition as detected
    by task/cgroup plugin.
 -- If QOS has been added to the system go refigure out Deny/AllowQOS on
    partitions.
 -- Deny job with duplicate GRES requested.
 -- Fix loading super old assoc_mgr usage without segfaulting.
 -- CRAY systems: Restore TaskPlugins order of task/cray before task/cgroup.
 -- Task/cray: Treat missing "mems" cgroup with "debug" messages rather than
    "error" messages. The file may be missing at step termination due to a
    change in how cgroups are released at job/step end.
 -- Fix for job constraint specification with counts, --ntasks-per-node value,
    and no node count.
 -- Fix ordering of step task allocation to fill in a socket before going into
    another one.
 -- Fix configure to not require C++
 -- job_submit/lua - Remove access to slurmctld internal reservation fields of
    job_pend_cnt and job_run_cnt.
 -- Prevent job_time_limit enforcement from blocking other internal operations
    if a large number of jobs need to be cancelled.
 -- Add 'preempt_youngest_order' option to preempt/partition_prio plugin.
 -- Fix controller being able to talk to a pre-released DBD.
 -- Added ability to override the invoking uid for "scontrol update job"
    by specifying "--uid=<uid>|-u <uid>".
 -- Changed file broadcast "offset" from 32 to 64 bits in order to support files
    over 2 GB.
 -- slurm.spec - do not install init scripts alongside systemd service files.

* Changes in Slurm 17.02.0rc1
==============================
 -- Add port info to 'sinfo' and 'scontrol show node'.
 -- Fix errant definition of USE_64BIT_BITSTR which can lead to core dumps.
 -- Move BatchScript to end of each job's information when using
    "scontrol -dd show job" to make it more readable.
 -- Add SchedulerParameters configuration parameter of "default_gbytes", which
    treats numeric only (no suffix) value for memory and tmp disk space as being
    in units of Gigabytes. Mostly for compatability with LSF.
 -- Fix race condtion in srun/sattach logic which would prevent srun from
    terminating.
 -- Bitstring operations are now 64bit instead of 32bit.
 -- Replace hweight() function in bitstring with faster version.
 -- scancel would treat a non-numeric argument as the name of jobs to be
    cancelled (a non-documented feature). Cancelling jobs by name now require
    the "--jobname=" command line argument.
 -- scancel modified to note that no jobs satisfy the filter options when the
    --verbose option is used along with one or more job filters (e.g. "--qos=").
 -- Change _pack_cred to use pack_bit_str_hex instead of pack_bit_fmt for
    better scalability and performance.
 -- Add BootTime configuration parameter to knl.conf file to optimize resource
    allocations with respect to required node reboots.
 -- Add node_features_p_boot_time() to node_features plugin to optimize
    scheduling with respect to node reboots.
 -- Avoid allocating resources to a job in the event that its run time plus boot
    time (if needed) extent into an advanced reservation.
 -- Burst_buffer/cray - Avoid stage-out operation if job never started.
 -- node_features/knl_cray - Add capability to detected Uncorrectable Memory
    Errors (UME) and if detected then log the event in all job and step stderr
    with a message of the form:
    error: *** STEP 1.2 ON tux1 UNCORRECTABLE MEMORY ERROR AT 2016-12-14T09:09:37 ***
    Similar logic added to node_features/knl_generic in version 17.02.0pre4.
 -- If job is allocated nodes which are powered down, then reset job start time
    when the nodes are ready and do not charge the job for power up time.
 -- Add the ability to purge transactions from the database.
 -- Add support for requeue'ing of federated jobs (BETA).
 -- Add support for interactive federated jobs (BETA).
 -- Add the ability to purge rolled up usage from the database.
 -- Properly set SLURM_JOB_GPUS environment variable for Prolog.

* Changes in Slurm 17.02.0pre4
==============================
 -- Add support for per-partitiion OverTimeLimit configuration.
 -- Add --mem_bind option of "sort" to run zonesort on KNL nodes at step start.
 -- Add LaunchParameters=mem_sort option to configure running of zonesort
    by default at step startup.
 -- Add "FreeSpace" information for each pool to the "scontrol show burstbuffer"
    output. Required changes to the burst_buffer_info_t data structure.
 -- Add new node state flag of NODE_STATE_REBOOT for node reboots triggered by
    "scontrol reboot" commands. Previous logic re-used NODE_STATE_MAINT flag,
    which could lead to inconsistencies. Add "ASAP" option to "scontrol reboot"
    command that will drain a node in order to reboot it as soon as possible,
    then return it to service.
 -- Allow unit conversion routine to convert 1024M to 1G.
 -- switch/cray plugin - change legacy spool directory location.
 -- Add new PriorityFlags option of INCR_ONLY, which prevents a job's priority
    from being decremented.
 -- Make it so we don't purge job start messages until after we purge step
    messages.  Hopefully this will reduce the number of messages lost when
    filling up memory when the database/DBD is down.
 -- Added SchedulingParameters option of "bf_job_part_count_reserve". Jobs below
    the specified threshold will not have resources reserved for them.
 -- If GRES are configured with file IDs, then "scontrol -d show node" will
    not only identify the count of currently allocated GRES, but their specific
    index numbers (e.g. "GresUsed=gpu:alpha:2(IDX:0,2),gpu:beta:0(IDX:N/A)").
    Ditto for job information with "scontrol -d show job".
 -- Add new mcs/account plugin.
 -- Add "GresEnforceBind=Yes" to "scontrol show job" output if so configured.
 -- Add support for SALLOC_CONSTRAINT, SBATCH_CONSTRAINT and SLURM_CONSTRAINT
    environment variables to set default constraints for salloc, sbatch and
    srun commands respectively.
 -- Provide limited support for the MemSpecLimit configuration parameter without
    the task/cgroup plugin.
 -- node_features/knl_generic - Add capability to detected Uncorrectable Memory
    Errors (UME) and if detected then log the event in all job and step stderr
    with a message of the form:
    error: *** STEP 1.2 ON tux1 UNCORRECTABLE MEMORY ERROR AT 2016-12-14T09:09:37 ***
 -- Add SLURM_JOB_GID to TaskProlog environment.
 -- burst_buffer/cray - Remove leading zeros from node ID lists passed to
    dw_wlm_cli program.
 -- Add "Partitions" field to "scontrol show node" output.
 -- Remove sched/wiki and sched/wiki2 plugins and associated code.
 -- Remove SchedulerRootFilter option and slurm_get_root_filter() API call.
 -- Add SchedulerParameters option of spec_cores_first to select specialized
    cores from the lowest rather than highest number cores and sockets.
 -- Add PrologFlags option of Serial to disable concurrent launch of
    Prolog and Epilog scripts.
 -- Fix security issue caused by insecure file path handling triggered by the
    failure of a Prolog script. To exploit this a user needs to anticipate or
    cause the Prolog to fail for their job. CVE-2016-10030.

* Changes in Slurm 17.02.0pre3
==============================
 -- Add srun host & PID to job step data structures.
 -- Avoid creating duplicate pending step records for the same srun command.
 -- Rewrite srun's logic for pending steps for better efficiency (fewer RPCs).
 -- Added new SchedulerParameters options step_retry_count and step_retry_time
    to control scheduling behaviour of job steps waiting for resources.
 -- Optimize resource allocation logic for --spread-job job option.
 -- Modify cpu_bind and mem_bind map and mask options to accept a repetition
    count to better support large task count. For example:
    "mask_mem:0x0f*2,0xf0*2" is equivalent to "mask_mem:0x0f,0x0f,0xf0,0xf0".
 -- Add support for --mem_bind=prefer option to prefer, but not restrict memory
    use to the identified NUMA node.
 -- Add mechanism to constrain kernel memory allocation using cgroups. New
    cgroup.conf parameters added: ConstrainKmemSpace, MaxKmemPercent, and
    MinKmemSpace.
 -- Correct invokation of man2html, which previously could cause FreeBSD builds
    to hang.
 -- MYSQL - Unconditionally remove 'ignore' clause from 'alter ignore'.
 -- Modify service files to not start Slurm daemons until after Munge has been
    started.
    NOTE: If you are not using Munge, but are using the "service" scripts to
    start Slurm daemons, then you will need to remove this check from the
    etc/slurm*service scripts.
 -- Do not process SALLOC_HINT, SBATCH_HINT or SLURM_HINT environment variables
    if any of the following salloc, sbatch or srun command line options are
    specified: -B, --cpu_bind, --hint, --ntasks-per-core, or --threads-per-core.
 -- burst_buffer/cray: Accept new jobs on backup slurmctld daemon without access
    to dw_wlm_cli command. No burst buffer actions will take place.
 -- Do not include SLURM_JOB_DERIVED_EC, SLURM_JOB_EXIT_CODE, or
    SLURM_JOB_EXIT_CODE in PrologSlurmctld environment (not available yet).
 -- Cray - set task plugin to fatal() if task/cgroup is not loaded after
    task/cray in the TaskPlugin settings.
 -- Remove separate slurm_blcr package. If Slurm is built with BLCR support,
    the files will now be part of the main Slurm packages.
 -- Replace sjstat, seff and sjobexit RPM packages with a single "contribs"
    package.
 -- Remove long since defunct slurmdb-direct scripts.
 -- Add SbcastParameters configuration option to control default file
    destination directory and compression algorithm.
 -- Add new SchedulerParameter (max_array_tasks) to limit the maximum number of
    tasks in a job array independently from the maximum task ID (MaxArraySize).
 -- Fix issue where number of nodes is not properly allocated when sbatch and
    salloc are requested with -n tasks < hosts from -w hostlist or from -N.
 -- Add infrastructure for submitting federated jobs.

* Changes in Slurm 17.02.0pre2
==============================
 -- Add new RPC (REQUEST_EVENT_LOG) so that slurmd and slurmstepd can log events
    through the slurmctld daemon.
 -- Remove sbatch --bb option. That option was never supported.
 -- Automatically clean up task/cgroup cpuset and devices cgroups after steps
    are completed.
 -- Add federation read/write locks.
 -- Limit job purge run time to 1 second at a time.
 -- The database index for jobs is now 64 bits.  If you happen to be close to
    4 billion jobs in your database you will want to update your slurmctld at
    the same time as your slurmdbd to prevent roll over of this variable as
    it is 32 bit previous versions of Slurm.
 -- Optionally lock slurmstepd in memory for performance reasons and to avoid
    possible SIGBUS if the daemon is paged out at the time of a Slurm upgrade
    (changing plugins). Controlled via new LaunchParameters options of
    slurmstepd_memlock and slurmstepd_memlock_all.
 -- Add event trigger on burst buffer errors (see strigger man page,
    --burst_buffer option).
 -- Add job AdminComment field which can only be set by a Slurm administrator.
 -- Add salloc, sbatch and srun option of --delay-boot=<time>, which will
    temporarily delay booting nodes into the desired state for a job in the
    hope of using nodes already in the proper state which will be available at
    a later time.
 -- Add job burst_buffer_state and delay_boot fields to scontrol and squeue
    output. Also add ability to modify delay_boot from scontrol.
 -- Fix for node's available TRES array getting filled in with configured GRES
    model types.
 -- Log if job --bb option contains any unrecognized content.
 -- Display configured and allocated TRES for nodes in scontrol show nodes.
 -- Change all memory values (in MB) to uint64_t to accommodate > 2TB per node.
 -- Add MailDomain configuration parameter to qualify email addresses.
 -- Refactor the persistent connections within the federation code to use
    the same logic that was found in the slurmdbd.  Now both functionalities
    share the same code.
 -- Remove BlueGene/L and BlueGene/P support.
 -- Add "flag" field to launch_tasks_request_msg. Remove the following fields
    (moved into flags): multi_prog, task_flags, user_managed_io, pty,
    buffered_stdio, and labelio.
 -- Add protocol version to slurmd startup communications for slurmstepd to
    permit changes in the protocol.

* Changes in Slurm 17.02.0pre1
==============================
 -- burst_buffer/cray - Add support for rounding up the size of a buffer reqeust
    if the DataWarp configuration "equalize_fragments" is used.
 -- Remove AIX support.
 -- Rename "in" to "input" in slurm_step_io_fds data structure defined in
    slurm.h. This is needed to avoid breaking Python with by using one of its
    keywords in a Slurm data structure.
 -- Remove eligible_time from jobcomp/elasticsearch.
 -- Enable the deletion of a QOS, even if no clusters have been added to the
    database.
 -- SlurmDBD - change all timestamps to bigint from int to solve Y2038 problem.
 -- Add salloc/sbatch/srun --spread-job option to distribute tasks over as many
    nodes as possible. This also treats the --ntasks-per-node option as a
    maximum value.
 -- Add ConstrainKmemSpace to cgroup.conf, defaulting to yes, to allow
    cgroup Kmem enforcement to be disabled while still using ConstrainRAMSpace.
 -- Add support for sbatch --bbf option to specify a burst buffer input file.
 -- Added burst buffer support for job arrays. Add new SchedulerParameters
    configuration parameter of bb_array_stage_cnt=# to indicate how many pending
    tasks of a job array should be made available for burst buffer resource
    allocation.
 -- Fix small memory leak when a job fails to load from state save.
 -- Fix invalid read when attempting to delete clusters from database with
    running jobs.
 -- Fix small memory leak when deleting clusters from database.
 -- Add SLURM_ARRAY_TASK_COUNT environment variable. Total number of tasks in a
    job array (e.g. "--array=2,4,8" will set SLURM_ARRAY_TASK_COUNT=3).
 -- Add new sacctmgr commands: "shutdown" (shutdown the server), "list stats"
    (get server statistics) "clear stats" (clear server statistics).
 -- Restructure job accounting query to use 'id_job in (1, 2, .. )' format
    instead of logically equivalent 'id_job = 1 || id_job = 2 || ..' .
 -- Added start_delay field to jobcomp/elasticsearch.
 -- In order to support federated jobs, the MaxJobID configuration parameter
    default value has been reduced from 2,147,418,112 to 67,043,328 and its
    maximum value is now 67,108,863. Upon upgrading, any pre-existing jobs that
    have a job ID above the new range will continue to run and new jobs will get
    job IDs in the new range.
 -- Added infrastructure for setting up federations in database and establishing
    connections between federation clusters.

* Changes in Slurm 16.05.12
===========================

* Changes in Slurm 16.05.11
===========================
 -- burst_buffer/cray - Add support for line continuation.
 -- If a job is cancelled by the user while it's allocated nodes are being
    reconfigured (i.e. the capmc_resume program is rebooting nodes for the job)
    and the node reconfiguration fails (i.e. the reboot fails), then don't
    requeue the job but leave it in a cancelled state.
 -- capmc_resume (Cray resume node script) - Do not disable changing a node's
    active features if SyscfgPath is configured in the knl.conf file.
 -- Fix memory error when updating a job's licenses.
 -- Fix double read lock of tres when updating gres or licenses on a job.
 -- Fix regression in 16.05.10 with respects to GrpTresMins on a QOS or
    Association.
 -- ALPS - Fix scheduling when ALPS doesn't agree with Slurm on what nodes
    are free.
 -- Fix seg fault if loading attempting to load non-existent burstbuffer plugin.
 -- Fix to backfill scheduling with respect to QOS and association limits. Jobs
    submitted to multiple partitions are most likley to be effected.
 -- Avoid erroneous errno set by the mariadb 10.2 api.
 -- Fix security issue in Prolog and Epilog by always prepending SPANK_ to
    all user-set environment variables. CVE-2017-15566.

* Changes in Slurm 16.05.10-2
=============================
 -- Replace clock_gettime with time(NULL) for very old systems without the call.

* Changes in Slurm 16.05.10
===========================
 -- Record job state as PREEMPTED instead of TIMEOUT when GraceTime is reached.
 -- task/cgroup - print warnings to stderr when --cpu_bind=verbose is enabled
    and the requested processor affinity cannot be set.
 -- power/cray - Disable power cap get and set operations on DOWN nodes.
 -- Jobs preempted with PreemptMode=REQUEUE were incorrectly recorded as
    REQUEUED in the accounting.
 -- PMIX - Use volatile specifier to avoid flag caching and lock the flag to
    make sure it is protected.
 -- PMIX/PMI2 - Make it possible to use %n or %h in a spool dir.
 -- burst_buffer/cray - Support default pool which is not the first pool
    reported by DataWarp and log in Slurm when pools that are added or removed
    from DataWarp.
 -- Insure job does not start running before PrologSlurmctld is complete and
    node is booted (all nodes for interactive job, at least first node for batch
    job without burst buffers).
 -- Fix minor memory leak in the slurmctld when removing a QOS.
 -- burst_buffer/cray - Do not execute "pre_run" operation until after all nodes
    are booted and ready for use.
 -- scontrol - return an error when attempting to use the +=/-+ syntax to
    update a field where this is not appropriate.
 -- Fix task/affinity to work correctly with --ntasks-per-socket.
 -- Honor --ntasks-per-node and --ntasks option when used with job constraints
    that contain node counts.
 -- Prevent deadlocked slurmstepd processes due to unsafe use of regcomp with
    older glibc versions.
 -- Fix squeue when SLURM_BITSTR_LEN=0 is set in the user environment.
 -- Fix comments in acct_policy.c to reflect actual variables instead of
    old ones.
 -- Fix correct variables when validating GrpTresMins on a QOS.
 -- Better debug output when a job is being held because of a GrpTRES[Run]Min
    limits.
 -- Fix correct state reason when job can't run 'safely' because of an
    association GrpWall limit.
 -- Squeue always loads new data if user_id option specified
 -- Fix for possible job ID parsing failure and abort.
 -- If node boot in progress when slurmctld daemon is restarted, then allow
    sufficient time for reboot to complete and not prematurely DOWN the node as
    "Not responding".
 -- For job resize, correct logic to build "resize" script with new values.
    Previously the scripts were based upon the original job size.
 -- Fix squeue to not limit the size of partition, burst_buffer, exec_host, or
    reason to 32 chars.
 -- Fix potential packing error when packing a NULL slurmdb_clus_res_rec_t.
 -- Fix potential packing errors when packing a NULL slurmdb_reservation_cond_t.
 -- Burst_buffer/cray - Prevent slurmctld daemon abort if "paths" operation
    fails. Now job will be held. Update job update time when held.
 -- Fix issues with QOS flags Partition[Min|Max]Nodes to work correctly.
 -- Increase number of ResumePrograms that can be managed without leaving
    zombie/orphan processes from 10 to 100.
 -- Refactor slurmctld agent logic to eliminate some pthreads.

* Changes in Slurm 16.05.9
==========================
 -- Fix parsing of SBCAST_COMPRESS environment variable in sbcast.
 -- Change some debug messages to errors in task/cgroup plugin.
 -- backfill scheduler: Stop trying to determine expected start time for a job
    after 2 seconds of wall time. This can happen if there are many running jobs
    and a pending job can not be started soon.
 -- Improve performance of cr_sort_part_rows() in cons_res plugin.
 -- CRAY - Fix dealock issue when updating accounting in the slurmctld and
    scheduling a Datawarp job.
 -- Correct the job state accounting information for jobs requeued due to burst
    buffer errors.
 -- burst_buffer/cray - Avoid "pre_run" operation if not using buffer (i.e.
    just creating or deleting a persistent burst buffer).
 -- Fix slurm.spec file support for BlueGene builds.
 -- Fix missing TRES read lock in acct_policy_job_runnable_pre_select() code.
 -- Fix debug2 message printing value using wrong array index in
    _qos_job_runnable_post_select().
 -- Prevent job timeout on node power up.
 -- MYSQL - Fix minor memory leak when querying steps and the sql fails.
 -- Make it so sacctmgr accepts column headers like MaxTRESPU and not MaxTRESP.
 -- Only look at SLURM_STEP_KILLED_MSG_NODE_ID on startup, to avoid race
    condition later when looking at a steps env.
 -- Make backfill scheduler behave like regular scheduler in respect to
    'assoc_limit_stop'.
 -- Allow a lower version client command to talk to a higher version contoller
    using the multi-cluster options (e.g. squeue -M<clsuter>).
 -- slurmctld/agent race condition fix: Prevent job launch while PrologSlurmctld
    daemon is running or node boot in progress.
 -- MYSQL - Fix a few other minor memory leaks when uncommon failures occur.
 -- burst_buffer/cray - Fix race condition that could cause multiple batch job
    launch requests resulting in drained nodes.
 -- Correct logic to purge old reservations.
 -- Fix DBD cache restore from previous versions.
 -- Fix to logic for getting expected start time of existing job ID with
    explicit begin time that is in the past.
 -- Clear job's reason of "BeginTime" in a more timely fashion and/or prevents
    them from being stuck in a PENDING state.
 -- Make sure acct policy limits imposed on a job are correct after requeue.

* Changes in Slurm 16.05.8
==========================
 -- Remove StoragePass from being printed out in the slurmdbd log at debug2
    level.
 -- Defer PATH search for task program until launch in slurmstepd.
 -- Modify regression test1.89 to avoid leaving vestigial job. Also reduce
    logging to reduce likelyhood of Expect buffer overflow.
 -- Do not PATH search for mult-prog launches if LaunchParamters=test_exec is
    enabled.
 -- Fix for possible infinite loop in select/cons_res plugin when trying to
    satisfy a job's ntasks_per_core or socket specification.
 -- If job is held for bad constraints make it so once updated the job doesn't
    go into JobAdminHeld.
 -- sched/backfill - Fix logic to reserve resources for jobs that require a
    node reboot (i.e. to change KNL mode) in order to start.
 -- When unpacking a node or front_end record from state and the protocol
    version is lower than the min version, set it to the min.
 -- Remove redundant lookup for part_ptr when updating a reservation's nodes.
 -- Fix memory and file descriptor leaks in slurmd daemon's sbcast logic.
 -- Do not allocate specialized cores to jobs using the --exclusive option.
 -- Cancel interactive job if Prolog failure with "PrologFlags=contain" or
    "PrologFlags=alloc" configured. Send new error prolog failure message to
    the salloc or srun command as needed.
 -- Prevent possible out-of-bounds read in slurmstepd on an invalid #! line.
 -- Fix check for PluginDir within slurmctld to work with multiple directories.
 -- Cancel interactive jobs automatically on communication error to launching
    srun/salloc process.
 -- Fix security issue caused by insecure file path handling triggered by the
    failure of a Prolog script. To exploit this a user needs to anticipate or
    cause the Prolog to fail for their job. CVE-2016-10030.

* Changes in Slurm 16.05.7
==========================
 -- Fix issue in the priority/multifactor plugin where on a slurmctld restart,
    where more time is accounted for than should be allowed.
 -- cray/busrt_buffer - If total_space in a pool decreases, reset used_space
    rather than trying to account for buffer allocations in progress.
 -- cray/busrt_buffer - Fix for double counting of used_space at slurmctld
    startup.
 -- Fix regression in 16.05.6 where if you request multiple cpus per task (-c2)
    and request --ntasks-per-core=1 and only 1 task on the node
    the slurmd would abort on an infinite loop fatal.
 -- cray/busrt_buffer - Internally track both allocated and unusable space.
    The reported UsedSpace in a pool is now the allocated space (previously was
    unusable space). Base available space on whichever value leaves least free
    space.
 -- cray/burst_buffer - Preserve job ID and don't translate to job array ID.
 -- cray/burst_buffer - Update "instance" parsing to match updated dw_wlm_cli
    output.
 -- sched/backfill - Insure we don't try to start a job that was already started
    and requeued by the main scheduling logic.
 -- job_submit/lua - add access to the job features field in job_record.
 -- select/linear plugin modified to better support heterogeneous clusters when
    topology/none is also configured.
 -- Permit cancellation of jobs in configuring state.
 -- acct_gather_energy/rapl - prevent segfault in slurmd from race to gather
    data at slurmd startup.
 -- Integrate node_feature/knl_generic with "hbm" GRES information.
 -- Fix output routines to prevent rounding the TRES values for memory or BB.
 -- switch/cray plugin - fix use after free error.
 -- docs - elaborate on how way to clear TRES limits in sacctmgr.
 -- knl_cray plugin - Avoid abort from backup slurmctld at start time.
 -- cgroup plugins - fix two minor memory leaks.
 -- If a node is booting for some job, don't allocate additional jobs to the
    node until the boot completes.
 -- testsuite - fix job id output in test17.39.
 -- Modify backfill algorithm to improve performance with large numbers of
    running jobs. Group running jobs that end in a "similar" time frame using a
    time window that grows exponentially rather than linearly. After one second
    of wall time, simulate the termination of all remaining running jobs in
    order to respond in a reasonable time frame.
 -- Fix slurm_job_cpus_allocated_str_on_node_id() API call.
 -- sched/backfill plugin: Make malloc match data type (defined as uint32_t and
    allocated as int).
 -- srun - prevent segfault when terminating job step before step has launched.
 -- sacctmgr - prevent segfault when trying to reset usage for an invalid
    account name.
 -- Make the openssl crypto plugin compile with openssl >= 1.1.
 -- Fix SuspendExcNodes and SuspendExcParts on slurmctld reconfiguration.
 -- sbcast - prevent segfault in slurmd due to race condition between file
    transfers from separate jobs using zlib compression
 -- cray/burst_buffer - Increase time to synchronize operations between threads
    from 5 to 60 seconds ("setup" operation time observed over 17 seconds).
 -- node_features/knl_cray - Fix possible race condition when changing node
    state that could result in old KNL mode as an active features.
 -- Make sure if a job can't run because of resources we also check accounting
    limits after the node selection to make sure it doesn't violate those limits
    and if it does change the reason for waiting so we don't reserve resources
    on jobs violating accounting limits.
 -- NRT - Make it so a system running against IBM's PE will work with PE
    version 1.3.
 -- NRT - Make it so protocols pgas and test are allowed to be used.
 -- NRT - Make it so you can have more than 1 protocol listed in MP_MSG_API.
 -- cray/burst_buffer - If slurmctld daemon restarts with pending job and burst
    buffer having unknown file stage-in status, teardown the buffer, defer the
    job, and start stage-in over again.
 -- On state restore in the slurmctld don't overwrite the mem_spec_limit given
    from the slurm.conf when using FastSchedule=0.
 -- Recognize a KNL's proper NUMA count (rather than setting it to the value
    in slurm.conf) when using FastSchedule=0.
 -- Fix parsing in regression test1.92 for some prompts.
 -- sbcast - use slurmd's gid cache rather than a separate lookup.
 -- slurmd - return error if setgroups() call fails in _drop_privileges().
 -- Remove error messages about gres counts changing when a job is resized on
    a slurmctld restart or reconfig, as they aren't really error messages.
 -- Fix possible memory corruption if a job is using GRES and changing size.
 -- jobcomp/elasticsearch - fix printf format for a value on 32-bit builds.
 -- task/cgroup - Change error message if CPU binding can not take place to
    better identify the root cause of the problem.
 -- Fix issue where task/cgroup would not always honor --cpu_bind=threads.
 -- Fix race condition in with getgrouplist() in slurmd that can lead to
    user accounts being granted access to incorrect group memberships during
    job launch.

* Changes in Slurm 16.05.6
==========================
 -- Docs - the correct default value for GroupUpdateForce is 0.
 -- mpi/pmix - improve point to point communication performance.
 -- SlurmDB - include pending jobs in search during 'sacctmgr show runawayjobs'.
 -- Add client side out-of-range checks to --nice flag.
 -- Fix support for sbatch "-W" option, previously eeded to use "--wait".
 -- node_features/knl_cray plugin and capmc_suspend/resume programs modified to
    sleep and retry capmc operations if the Cray State Manager is down. Added
    CapmcRetries configuration parameter to knl_cray.conf.
 -- node_features/knl_cray plugin: Remove any KNL MCDRAM or NUMA features from
    node's configuration if capmc does NOT report the node as being KNL.
 -- node_features/knl_cray plugin: drain any node not reported by
    "capmc node_status" on startup or reconfig.
 -- node_features/knl_cray plugin: Substantially streamline and speed up logic
    to load current node state on reconfigure failure or unexpected node boot.
 -- node_features/knl_cray plugin: Add separate thread to interact with capmc
    in response to unexpected node reboots.
 -- node_features plugin - Add "mode" argument to node_features_p_node_xlate()
    function to fix some bugs updating a node's features using the node update
    RPC.
 -- node_features/knl_cray plugin: If the reconfiguration of nodes for an
    interactive job fails, kill the job (it can't be requeued like a batch job).
 -- Testsuite - Added srun/salloc/sbatch tests with --use-min-nodes option.
 -- Fix typo when an error occurs when discovering pmix version on
    configure.
 -- Fix configuring pmix support when you have your lib dir symlinked to lib64.
 -- Fix waiting reason if a job is waiting for a specific limit instead of
    always just AccountingPolicy.
 -- Correct SchedulerParameters=bf_busy_nodes logic with respect to the job's
    minimum node count. Previous logic would not decremement counter in some
    locations and reject valid job request for not reaching minimum node count.
 -- Fix FreeBSD-11 build by using llabs() function in place of abs().
 -- Cray: The slurmd can manipulate the socket/core/thread values reported based
    upon the configuration. The logic failed to consider select/cray with
    SelectTypeParameters=other_cons_res as equivalent to select/cons_res.
 -- If a node's socket or core count are changed at registration time (e.g. a
    KNL node's NUMA mode is changed), change it's board count to match.
 -- Prevent possible divide by zero in select/cons_res if a node's board count
    is higher than it's socket count.
 -- Allow an advanced reservation to contain a license count of zero.
 -- Preserve non-KNL node features when updating the KNL node features for a
    multi-node job in which the non-KNL node features vary by node.
 -- task/affinity plugin: Honor a job's --ntasks-per-socket and
    --ntasks-per-core options in task binding.
 -- slurmd - do not print ClusterName when using 'slurmd -C'.
 -- Correct a bitmap test function (used only by the select/bluegene plugin).
 -- Do not propagate SLURM_UMASK environment variable to batch script.
 -- Added node_features/knl_generic plugin for KNL support on non-Cray systems.
 -- Cray: Prevent abort in backfill scheduling logic for requeued job that has
    been cancelled while NHC is running.
 -- Improve reported estimates of start and end times for pending jobs.
 -- pbsnodes: Show OS value as "unknown" for down nodes.
 -- BlueGene - correctly scale node counts when enforcing MaxNodes limit take 2.
 -- Fix "sbatch --hold" to set JobHeldUser correctly instead of JobHeldAdmin.
 -- Cray - print warning that task/cgroup is required, and must be after
    task/cray in the TaskPlugin settings.
 -- Document that node Weight takes precedence over load with LLN scheduling.
 -- Fix issue where gang scheduling could happen even with OverSubscribe=NO.
 -- Expose JOB_SHARED_* values to job_submit/lua plugin.
 -- Fix issue where number of nodes is not properly allocated when srun is
    requested with -n tasks < hosts from -w hostlist.
 -- Update srun documentation for -N, -w and -m arbitrary.
 -- Fix bug that was clearing MAINT mode on nodes scheduled for reboot (bug
    introduced in version 16.05.5 to address bug in overlapping reservations).
 -- Add logging of node reboot requests.
 -- Docs - remove recommendation for ReleaseAgent setting in cgroup.conf.
 -- Make sure a job cleans up completely if it has a node fail.  Mostly an
    issue with gang scheduling.

* Changes in Slurm 16.05.5
==========================
 -- Fix accounting for jobs requeued after the previous job was finished.
 -- slurmstepd modified to pre-load all relevant plugins at startup to avoid
    the possibility of modified plugins later resulting in inconsistent API
    or data structures and a failure of slurmstepd.
 -- Export functions from parse_time.c in libslurm.so.
 -- Export unit convert functions from slurm_protocol_api.c in libslurm.so.
 -- Fix scancel to allow multiple steps from a job to be cancelled at once.
 -- Update and expand upgrade guide (in Quick Start Administrator web page).
 -- burst_buffer/cray: Requeue, but do not hold a job which fails the pre_run
    operation.
 -- Insure reported expected job start time is not in the past for pending jobs.
 -- Add support for PMIx v2.
 -- mpi/pmix: support for passing TMPDIR path through info key
 -- Cray: update slurmconfgen_smw.py script to correctly identify service nodes
    versus compute nodes.
 -- FreeBSD - fix build issue in knl_cray plugin.
 -- Corrections to gres.conf parsing logic.
 -- Make partition State independent of EnforcePartLimits value.
 -- Fix multipart srun submission with EnforcePartLimits=NO and job violating
    the partition limits.
 -- Fix problem updating job state_reason.
 -- pmix - Provide HWLOC topology in the job-data if Slurm was configured
    with hwloc.
 -- Cray - Fix issue restoring jobs when blade count increases due to hardware
    reconfiguration.
 -- burst_buffer/cray - Hold job after 3 failed pre-run operations.
 -- sched/backfill - Check that a user's QOS is allowed to use a partition
    before trying to schedule resources on that partition for the job.
 -- sacctmgr - Fix displaying nodenames when printing out events or
    reservations.
 -- Fix mpiexec wrapper to accept task count with more than one digit.
 -- Add mpiexec man page to the script.
 -- Add salloc_wait_nodes option to the SchedulerParameters parameter in the
    slurm.conf file controlling when the salloc command returns in relation to
    when nodes are ready for use (i.e. booted).
 -- Handle case when slurmctld daemon restart while compute node reboot in
    progress. Return node to service rather than setting DOWN.
 -- Preserve node "RESERVATION" state when one of multiple overlapping
    reservations ends.
 -- Restructure srun command locking for task_exit processing logic for improved
    parallelism.
 -- Modify srun task completion handling to only build the task/node string for
    logging purposes if it is needed. Modified for performance purposes.
 -- Docs - update salloc/sbatch/srun man pages to mention corresponding
    environment variables for --mem/--mem-per-cpu and allowed suffixes.
 -- Silence srun warning when overriding the job ntasks-per-node count
    with a lower task count for the step.
 -- Docs - assorted spelling fixes.
 -- node_features/knl_cray: Fix bug where MCDRAM state could be taken from
    capmc rather than cnselect.
 -- node_features/knl_cray: If a node is rebooted outside of Slurm's direction,
    update it's active features with current MCDRAM and NUMA mode information.
 -- Restore ability to manually power down nodes, broken in 15.08.12.
 -- Don't log error for job end_time being zero if node health check is still
    running.
 -- When powering up a node to change it's state (e.g. KNL NUMA or MCDRAM mode)
    then pass to the ResumeProgram the job ID assigned to the nodes in the
    SLURM_JOB_ID environment variable.
 -- Allow a node's PowerUp state flag to be cleared using update_node RPC.
 -- capmc_suspend/resume - If a request modify NUMA or MCDRAM state on a set of
    nodes or reboot a set of nodes fails then just requeue the job and abort the
    entire operation rather than trying to operate on individual nodes.
 -- node_features/knl_cray plugin: Increase default CapmcTimeout parameter from
    10 to 60 seconds.
 -- Fix squeue filter by job license when a job has requested more than 1
    license of a certain type.
 -- Fix bug in PMIX_Ring in the pmi2 plugin so that it supports singleton mode.
    It also updates the testpmixring.c test program so it can be used to check
    singleton runs.
 -- Automically clean up task/cgroup cpuset and devices cgroups after steps are
    completed.
 -- Testsuite - Fix test1.83 to handle gaps in node names properly.
 -- BlueGene - correctly scale node counts when enforcing MaxNodes limit.
 -- Make sure no attempt is made to schedule a requeued job until all steps are
    cleaned (Node Health Check completes for all steps on a Cray).
 -- KNL: Correct task affinity logic for some NUMA modes.
 -- Add salloc/sbatch/srun --priority option of "TOP" to set job priority to
    the highest possible value. This option is only available to Slurm operators
    and administrators.
 -- Add salloc/sbatch/srun option --use-min-nodes to prefer smaller node counts
    when a range of node counts is specified (e.g. "-N 2-4").
 -- Validate salloc/sbatch --wait-all-nodes argument.
 -- Add "sbatch_wait_nodes" to SchedulerParameters to control default sbatch
    behaviour with respect to waiting for all allocated nodes to be ready for
    use. Job can override the configuration option using the --wait-all-nodes=#
    option.
 -- Prevent partition group access updates from resetting last_part_update when
    no changes have been made. Prevents backfill scheduler from restarting
    mid-cycle unnecessarily.
 -- Cray - add NHC_ABSOLUTELY_NO to never run NHC, even on certain edge cases
    that it would otherwise be run on with NHC_NO.
 -- Ignore GRES/QOS updates that maintain the same value as before.
 -- mpi/pmix - prepare temp directory for application.
 -- Fix display for the nice and priority values in sprio/scontrol/squeue.

* Changes in Slurm 16.05.4
==========================
 -- Fix potential deadlock if running with message aggregation.
 -- Streamline when schedule() is called when running with message aggregation
    on batch script completes.
 -- Fix incorrect casting when [un]packing derived_ec on slurmdb_job_rec_t.
 -- Document that persistent burst buffers can not be created or destroyed using
    the salloc or srun --bb options.
 -- Add support for setting the SLURM_JOB_ACCOUNT, SLURM_JOB_QOS and
    SLURM_JOB_RESERVAION environment variables are set for the salloc command.
    Document the same environment variables for the salloc, sbatch and srun
    commands in their man pages.
 -- Fix issue where sacctmgr load cluster.cfg wouldn't load associations
    that had a partition in them.
 -- Don't return the extern step from sstat by default.
 -- In sstat print 'extern' instead of 4294967295 for the extern step.
 -- Make advanced reservations work properly with core specialization.
 -- Fix race condition in the account_gather plugin that could result in job
    stuck in COMPLETING state.
 -- Regression test fixes if SelectTypePlugin not managing memory and no node
    memory size set (defaults to 1 MB per node).
 -- Add missing partition write locks to _slurm_rpc_dump_nodes/node_single to
    prevent a race condition leading to inconsistent sinfo results.
 -- Fix task:CPU binding logic for some processors. This bug was introduced
    in version 16.05.1 to address KNL bunding problem.
 -- Fix two minor memory leaks in slurmctld.
 -- Improve partition-specific limit logging from slurmctld daemon.
 -- Fix incorrect access check when using MaxNodes setting on the partition.
 -- Fix issue with sacctmgr when specifying a list of clusters to query.
 -- Fix issue when calculating future StartTime for a job.
 -- Make EnforcePartLimit support logic work with any ordering of partitions
    in job submit request.
 -- Prevent restoration of wrong CPU governor and frequency when using
    multiple task plugins.
 -- Prevent slurmd abort if hwloc library fails to populate the "children"
    arrays (observed with hwloc version "dev-333-g85ea6e4").
 -- burst_buffer/cray: Add "--groupid" to DataWarp "setup" command.
 -- Fix lustre profiling putting it in the Filesystem dataset instead of the
    Network dataset.
 -- Fix profiling documentation and code to match be consistent with
    Filesystem instead of Lustre.
 -- Correct the way watts is calculated in the rapl plugin when using a poll
    frequency other than AcctGatherNodeFreq.
 -- Don't about step launch if job reaches expected end time while node is
    configuring/booting (NOTE: The job end time will be adjusted after node
    becomes ready for use).
 -- Fix several print routines to respect a custom output delimiter when
    printing NO_VAL or INFINITE.
 -- Correct documented configurations where --ntasks-per-core and
    --ntasks-per-socket are supported.
 -- task/affinity plugin buffer allocated too small, can corrupt memory.

* Changes in Slurm 16.05.3
==========================
 -- Make it so the extern step uses a reverse tree when cleaning up.
 -- If extern step doesn't get added into the proctrack plugin make sure the
    sleep is killed.
 -- Fix areas the slurmctld can segfault if an extern step is in the system
    cleaning up on a restart.
 -- Prevent possible incorrect counting of GRES of a given type if a node has
    the multiple "types" of a given GRES "name", which could over-subscribe
    GRES of a given type.
 -- Add web links to Slurm Diamond Collectors (from Harvard University) and
    collectd (from EDF).
 -- Add job_submit plugin for the "reboot" field.
 -- Make some more Slurm constants (INFINITE, NO_VAL64, etc.) available to
    job_submit/lua plugins.
 -- Send in a -1 for a taskid into spank_task_post_fork for the extern_step.
 -- MYSQL - Sightly better logic if a job completion comes in with an end time
    of 0.
 -- task/cgroup plugin is configured with ConstrainRAMSpace=yes, then set soft
    memory limit to allocated memory limit (previously no soft limit was set).
 -- Document limitations in burst buffer use by the salloc command (possible
    access problems from a login node).
 -- Fix proctrack plugin to only add the pid of a process once
    (regression in 16.05.2).
 -- Fix for sstat to print correct info when requesting jobid.batch as part of
    a comma-separated list.
 -- CRAY - Fix issue if pid has already been added to another job container.
 -- CRAY - Fix add of extern step to AELD.
 -- burstbufer/cray: avoid batch submit error condition if waiting for stagein.
 -- CRAY - Fix for reporting steps lingering after they are already finished.
 -- Testsuite - fix test1.29 / 17.15 for limits with values above 32-bits.
 -- CRAY - Simplify when a NHC is called on a step that has unkillable
    processes.
 -- CRAY - If trying to kill a step and you have NHC_NO_STEPS set run NHC
    anyway to attempt to log the backtraces of the potential
    unkillable processes.
 -- Fix gang scheduling and license release logic if single node job killed on
    bad node.
 -- Make scontrol show steps show the extern step correctly.
 -- Do not scheduled powered down nodes in FAILED state.
 -- Do not start slurmctld power_save thread until partition information is read
    in order to prevent race condition that can result invalid pointer when
    trying to resolve configured SuspendExcParts.
 -- Add SLURM_PENDING_STEP id so it won't be confused with SLURM_EXTERN_CONT.
 -- Fix for core selection with job --gres-flags=enforce-binding option.
    Previous logic would in some cases allocate a job zero cores, resulting in
    slurmctld abort.
 -- Minimize preempted jobs for configurations with multiple jobs per node.
 -- Improve partition AllowGroups caching. Update the table of UIDs permitted to
    use a partition based upon it's AllowGroups configuration parameter as new
    valid UIDs are found rather than looking up that user's group information
    for every job they submit. If the user is now allowed to use the partition,
    then do not check that user's group access again for 5 seconds.
 -- Add routing queue information to Slurm FAQ web page.
 -- Do not select_g_step_finish() a SLURM_PENDING_STEP step, as nothing has
    been allocated for the step yet.
 -- Fixed race condition in PMIx Fence logic.
 -- Prevent slurmctld abort if job is killed or requeued while waiting for
    reboot of its allocated compute nodes.
 -- Treat invalid user ID in AllowUserBoot option of knl.conf file as error
    rather than fatal (log and do not exit).
 -- qsub - When doing the default output files for an array in qsub style
    make them using the master job ID instead of the normal job ID.
 -- Create the extern step while creating the job instead of waiting until the
    end of the job to do it.
 -- Always report a 0 exit code for the extern step instead of being canceled
    or failed based on the signal that would always be killing it.
 -- Fix to allow users to update QOS of pending jobs.
 -- CRAY - Fix minor memory leak in switch plugin.
 -- CRAY - Change slurmconfgen_smw.py to skip over disabled nodes.
 -- Fix eligible_time for elasticsearch as well as add queue_wait
    (difference between start of job and when it was eligible).


* Changes in Slurm 16.05.2
==========================
 -- CRAY - Fix issue where the proctrack plugin could hang if the container
    id wasn't able to be made.
 -- Move test for job wait reason value of BurstBufferResources and
    BurstBufferStageIn later in the scheduling logic.
 -- Document which srun options apply to only job, only step, or job and step
    allocations.
 -- Use more compatible function to get thread name (>= 2.6.11).
 -- Fix order of job then step id when noting cleaning flag being set.
 -- Make it so the extern step sends a message with accounting information
    back to the slurmctld.
 -- Make it so the extern step calls the select_g_step_start|finish functions.
 -- Don't print error when extern step is canceled because job is ending.
 -- Handle a few error codes when dealing with the extern step to make sure
    we have the pids added to the system correctly.
 -- Add support for job dependencies with job array expressions. Previous logic
    required listing each task of job array individually.
 -- Make sure tres_cnt is set before creating a slurmdb_assoc_usage_t.
 -- Prevent backfill scheduler from starting a second "singleton" job if another
    one started during a backfill sleep.
 -- Fix for invalid array pointer when creating advanced reservation when job
    allocations span heterogeneous nodes (differing core or socket counts).
 -- Fix hostlist_ranged_string_xmalloc_dims to correctly not put brackets on
    hostlists when brackets == 0.
 -- Make sure we don't get brackets when making a range of reserved ports
    for a step.
 -- Change fatal to an error if port ranges aren't correct when reading state
    for steps.

* Changes in Slurm 16.05.1
==========================
 -- Fix __cplusplus macro in spank.h to allow compilation with C++.
 -- Fix compile issue with older glibc < 2.12
 -- Fix for starting batch step with mpi/pmix plugin.
 -- Fix for "scontrol -dd show job" with respect to displaying the specific
    CPUs allocated to a job on each node. Prior logic would only display
    the CPU information for the first node in the job allocation.
 -- Print correct return code on failure to update active node features
    through sview.
 -- Allow QOS timelimit to override partition timelimit when EnforcePartLimits
    is set to all/any.
 -- Make it so qsub will do a "basename" on a wrapped command for the output
    and error files.
 -- Fix issue where slurmd could core when running the ipmi energy plugin.
 -- Documentation - clean up typos.
 -- Add logic so that slurmstepd can be launched under valgrind.
 -- Increase buffer size to read /proc/*/stat files.
 -- Fix for tracking job resource allocation when slurmctld is reconfigured
    while Cray Node Health Check (NHC) is running. Previous logic would fail to
    record the job's allocation then perform release operation upon NHC
    completion, resulting in underflow error messages.
 -- Make "scontrol show daemons" work with long node names.
 -- CRAY - Collect energy using a uint64_t instead of uint32_t.
 -- Fix incorrect if statements when determining if the user has a default
    account or wckey.
 -- Prevent job stuck in configuring state if slurmctld daemon restarted while
    PrologSlurmctld is running. Also re-issue burst_buffer/pre-load operation
    as needed.
 -- Correct task affinity support for FreeBSD.
 -- Fix for task affinity on KNL in SNC2/Flat mode.
 -- Recalculate a job's memory allocation after node reboot if job requests all
    of a node's memory and FastSchedule=0 is configured. Intel KNL memory size
    can change on reboot with various MCDRAM modes.
 -- Fix small memory leak when printing HealthCheckNodeState.
 -- Eliminate memory leaks when AuthInfo is configured.
 -- Improve sdiag output description in man page.
 -- Cray/capmc_resume script modify a node's features (as needed) when the
    reinit (reboot) command is issued rather than wait for the nodes to change
    to the "on" state.
 -- Correctly print ranges when using step values in job arrays.
 -- Allow from file names / paths over 256 characters when launching steps,
    as well as spaces in the executable name.
 -- job_submit.license.lua example modified to send message back to user.
 -- Document job --mem=0 option means all memory on a node.
 -- Set SLURM_JOB_QOS environment variable to QOS name instead of description.
 -- knl_cray.conf file option of CnselectPath added.
 -- node_features/knl_cray plugin modified to get current node NUMA and MCDRAM
    modes using cnselect command rather than capmc command.
 -- liblua - add SLES12 paths to runtime search list.
 -- Fix qsub default output and error files for task arrays.
 -- Fix qsub to set job_name correctly when wrapping a script (-b y)
 -- Cray - set EnforcePartLimits=any in slurm.conf template.

* Changes in Slurm 16.05.0
==========================
 -- Update seff to fix warnings with ncpus, and list slurm-perlapi dependency
    in spec file.
 -- Fix testsuite to consistent use /usr/bin/env {bash,expect} construct.
 -- Cray - Ensure that step completion messages get to the database.
 -- Fix step cpus_per_task calculation for heterogeneous job allocation.
 -- Fix --with-json= configure option to use specified path.
 -- Add back thread_id to "thread_id" LogTimeFormat to distinguish between
    mutliple threads with the same name. Now displays thread name and id.
 -- Change how Slurm determines the NUMA count of a node. Ignore KNL NUMA
    that only include memory.
 -- Cray - Fix node list parsing in capmc_suspend/resume programs.
 -- Fix sbatch #BSUB parsing for -W and -M options.
 -- Fix GRES task layout bug that could cause slurmctld to abort.
 -- Fix to --gres-flags=enforce-binding logic when multiple sockets needed.

* Changes in Slurm 16.05.0rc2
=============================
 -- Cray node shutdown/reboot scripts, perform operations on all nodes in one
    capmc command. Only if that fails, issue the operations in parallel on
    individual nodes. Required for scalability.
 -- Cleanup two minor Coverity warnings.
 -- Make it so the tres units in a job's formatted string are converted like
    they are in a step.
 -- Correct partition's MaxCPUsPerNode enforcement when nodes are shared by
    multiple partitions.
 -- node_feature/knl_cray - Prevent slurmctld GRES errors for "hbm" references.
 -- Display thread name instead of thread id and remove process name in stderr
    logging for "thread_id" LogTimeFormat.
 -- Log IP address of bad incomming message to slurmctld.
 -- If a user requests tasks, nodes and ntasks-per-node and
    tasks-per-node/nodes != tasks print warning and ignore ntasks-per-node.
 -- Release CPU "owner" file locks.
 -- Fix for job step memory allocation: Reject invalid step at submit time
    rather than leaving it queued.
 -- Whenever possible, avoid allocating nodes that require a reboot.

* Changes in Slurm 16.05.0rc1
==============================
 -- Remove the SchedulerParameters option of "assoc_limit_continue", making it
    the default value. Add option of "assoc_limit_stop". If "assoc_limit_stop"
    is set and a job cannot start due to association limits, then do not attempt
    to initiate any lower priority jobs in that partition. Setting this can
    decrease system throughput and utlization, but avoid potentially starving
    larger jobs by preventing them from launching indefinitely.
 -- Update a node's socket and cores per socket counts as needed after a node
    boot to reflect configuration changes which can occur on KNL processors.
    Note that the node's total core count must not change, only the distribution
    of cores across varying socket counts (KNL NUMA nodes treated as sockets by
    Slurm).
 -- Rename partition configuration from "Shared" to "OverSubscribe". Rename
    salloc, sbatch, srun option from "--shared" to "--oversubscribe". The old
    options will continue to function. Output field names also changed in
    scontrol, sinfo, squeue and sview.
 -- Add SLURM_UMASK environment variable to user job.
 -- knl_conf: Added new configuration parameter of CapmcPollFreq.
 -- squeue: remove errant spaces in column formats for "squeue -o %all".
 -- Add ARRAY_TASKS mail option to send emails to each task in a job array.
 -- Change default compression library for sbcast to lz4.
 -- select/cray - Initiate step node health check at start of step termination
    rather than after application completely ends so that NHC can capture
    information about hung (non-killable) processes.
 -- Add --units=[KMGTP] option to sacct to display values in specific unit type.
 -- Modify sacct and sacctmgr to display TRES values in converted units.
 -- Modify sacctmgr to accept TRES values with [KMGTP] suffixes.
 -- Replace hash function with more modern SipHash functions.
 -- Add "--with-cray_dir" build/configure option.
 -- BB- Only send stage_out email when stage_out is set in script.
 -- Add r/w locking to file_bcast receive functions in slurmd.
 -- Add TopologyParam option of "TopoOptional" to optimize network topology
    only for jobs requesting it.
 -- Fix build on FreeBSD.
 -- Configuration parameter "CpuFreqDef" used to set default governor for job
    step not specifying --cpu-freq (previously the parameter was unused).
 -- Fix sshare -o<format> to correctly display new lengths.
 -- Update documentation to rename Shared option to OverSubscribe.
 -- Update documentation to rename partition Priority option to PriorityTier.
 -- Prevent changing of QOS on running jobs.
 -- Update accounting when changing QOS on pending jobs.
 -- Add support to ntasks_per_socket in task/affinity.
 -- Generate init.d and systemd service scripts in etc/ through Make rather
    than at configure time to ensure all variable substitutions happen.
 -- Use TaskPluginParam for default task binding if no user specified CPU
    binding. User --cpu_bind option takes precident over default. No longer
    any error if user --cpu_bind option does not match TaskPluginParam.
 -- Make sacct and sattach work with older slurmd versions.
 -- Fix protocol handling between 15.08 and 16.05 for 'scontrol show config'.
 -- Enable prefixes (e.g. info, debug, etc.) in slurmstepd debugging.

* Changes in Slurm 16.05.0pre2
==============================
 -- Split partition's "Priority" field into "PriorityTier" (used to order
    partitions for scheduling and preemption) plus "PriorityJobFactor" (used by
    priority/multifactor plugin in calculating job priority, which is used to
    order jobs within a partition for scheduling).
 -- Revert call to getaddrinfo, restoring gethostbyaddr (introduced in Slurm
    16.05.0pre1) which was failing on some systems.
 -- knl_cray.conf - Added AllowMCDRAM, AllowNUMA and ALlowUserBoot
    configuration options.
 -- Add node_features_p_user_update() function to node_features plugin.
 -- Don't print Weight=1 lines in 'scontrol write config' (its the default).
 -- Remove PARAMS macro from slurm.h.
 -- Remove BEGIN_C_DECLS and END_C_DECLS macros.
 -- Check that PowerSave mode configured for node_features/knl_cray plugin.
    It is required to reconfigure and reboot nodes.
 -- Update documentation to reflect new cgroup default location change from
    /cgroup to /sys/fs/cgroup.
 -- If NodeHealthCheckProgram configured HealthCheckInterval is non-zero, then
    modify slurmd to run it before registering with slurmctld.
 -- Fix for tasks being packed onto cores when the requested --cpus-per-task is
    greater than the number of threads on a core and --ntasks-per-core is 1.
 -- Make it so jobs/steps track ':' named gres/tres, before hand gres/gpu:tesla
    would only track gres/gpu, now it will track both gres/gpu and
    gres/gpu:tesla as separate gres if configured like
    AccountingStorageTRES=gres/gpu,gres/gpu:tesla
 -- Added new job dependency type of "aftercorr" which will start a task of a
    job array after the corresponding task of another job array completes.
 -- Increase default MaxTasksPerNode configuration parameter from 128 to 512.
 -- Enable sbcast data compression logic (compress option previously ignored).
 -- Add --compress option to srun command for use with --bcast option.
 -- Add TCPTimeout option to slurm[dbd].conf. Decouples MessageTimeout from TCP
    connections.
 -- Don't call primary controller for every RPC when backup is in control.
 -- Add --gres-flags=enforce-binding option to salloc, sbatch and srun commands.
    If set, the only CPUs available to the job will be those bound to the
    selected GRES (i.e. the CPUs identifed in the gres.conf file will be
    strictly enforced rather than advisory).
 -- Change how a node's allocated CPU count is calculated to avoid double
    counting CPUs allocated to multiple jobs at the same time.
 -- Added SchedulingParameters option of "bf_min_prio_reserve". Jobs below
    the specified threshold will not have resources reserved for them.
 -- Added "sacctmgr show lostjobs" to report any orphaned jobs in the database.
 -- When a stepd is about to shutdown and send it's response to srun
    make the wait to return data only hit after 500 nodes and configurable
    based on the TcpTimeout value.
 -- Add functionality to reset the lft and rgt values of the association table
    with the slurmdbd.
 -- Add SchedulerParameter no_env_cache, if set no env cache will be use when
    launching a job, instead the job will fail and drain the node if the env
    isn't loaded normally.
 -- burst_buffer/cray - Plug small memory leak on DataWarp create_persistent
    buffer error.
 -- burst_buffer/cray - Do not purge a job record if it's stage-out operation
    fails. The description of the failure will be in the job's "Reason" field.
 -- burst_buffer/cray - Append information about errors to job's AdminComments
    field.
 -- DBD - When using LogTimeFormat=thread_id fill in the cluster name before
    printing anything for a connection.
 -- Have srun read in modern env var's instead of obsolete ones
 -- mpi/pmix: add the thresholds for the parameters of micro-benchmarks.

* Changes in Slurm 16.05.0pre1
==============================
 -- Add sbatch "--wait" option that waits for job completion before exiting.
    Exit code will match that of spawned job.
 -- Modify advanced reservation save/restore logic for core reservations to
    support configuration changes (changes in configured nodes or cores counts).
 -- Allow ControlMachine, BackupController, DbdHost and DbdBackupHost to be
    either short or long hostname.
 -- Job output and error files can now contain "%" character by specifying
    a file name with two consecutive "%" characters. For example,
    "sbatch -o "slurm.%%.%j" for job ID 123 will generate an output file named
    "slurm.%.123".
 -- Pass user name in Prolog RPC from controller to slurmd when using
    PrologFlags=Alloc. Allows SLURM_JOB_USER env variable to be set when using
    Native Slurm on a Cray.
 -- Add "NumTasks" to job information visible to Slurm commands.
 -- Add mail wrapper script "smail" that will include job statistics in email
    notification messages.
 -- Remove vestigial "SICP" job option (inter-cluster job option). Completely
    different logic will be forthcoming.
 -- Fix case where the primary and backup dbds would both be performing rollup.
 -- Add an ack reply from slurmd to slurmstepd when job setup is done and the
    job is ready to be executed.
 -- Removed support for authd. authd has not been developed and supported since
    several years. 
 -- Introduce a new parameter requeue_setup_env_fail in SchedulerParameters.
    A job that fails to setup the environment will be requeued and the node
    drained.
 -- Add ValidateTimeout and OtherTimeout to "scontrol show burst" output.
 -- Increase default sbcast buffer size from 512KB to 8MB.
 -- Enable the hdf5 profiling of the batch step.
 -- Eliminate redundant environment and script files for job arrays.
 -- Stop searching sbatch scripts for #PBS directives after 100 lines of
    non-comments. Stop parsing #PBS or #SLURM directives after 1024 characters
    into a line. Required for decent perforamnce with huge scripts.
 -- Add debug flag for timing Cray portions of the code.
 -- Remove all *.la files from RPMs.
 -- Add Multi-Category Security (MCS) infrastructure to permit nodes to be bound
    to specific users or groups.
 -- Install the pmi2 unix sockets in slurmd spool directory instead of /tmp.
 -- Implement the getaddrinfo and getnameinfo instead of gethostbyaddr and
    gethostbyname.
 -- Finished PMIx implementation.
 -- Implemented the --without=package option for configure.
 -- Fix sshare to show each individual cluster with -M,--clusters option.
 -- Added --deadline option to salloc, sbatch and srun. Jobs which can not be
    completed by the user specified deadline will be terminated with a state of
    "Deadline" or "DL".
 -- Implemented and documented PMIX protocol which is used to bootstrap an
    MPI job. PMIX is an alternative to PMI and PMI2.
 -- Change default CgroupMountpoint (in cgroup.conf) from "/cgroup" to
    "/sys/fs/cgroup" to match current standard.
 -- Add #BSUB options to sbatch to read in from the batch script.
 -- HDF: Change group name of node from nodename to nodeid.
 -- The partition-specific SelectTypeParameters parameter can now be used to
    change the memory allocation tracking specification in the global
    SelectTypeParameters configuration parameter. Supported partition-specific
    values are CR_Core, CR_Core_Memory, CR_Socket and CR_Socket_Memory. If the
    global SelectTypeParameters value includes memory allocation management and
    the partition-specific value does not, then memory allocation management for
    that partition will NOT be supported (i.e. memory can be over-allocated).
    Likewise the global SelectTypeParameters might not include memory management
    while the partition-specific value does.
 -- Burst buffer/cray - Add support for multiple buffer pools including support
    for different resource granularity by pool.
 -- Burst buffer advanced reservation units treated as bytes (per documentation)
    rather than GB.
 -- Add an "scontrol top <jobid>" command to re-order the priorities of a user's
    pending jobs. May be disabled with the "disable_user_top" option in the
    SchedulerParameters configuration parameter.
 -- Modify sview to display negative job nice values.
 -- Increase job's nice value field from 16 to 32 bits.
 -- Remove deprecated job_submit/cnode plugin.
 -- Enhance slurm.conf option EnforcePartLimit to include options like "ANY" and
    "ALL".  "Any" is equivalent to "Yes" and "All" will check all partitions
    a job is submitted to and if any partition limit is violated the job will
    be rejected even if it could possibly run on another partition.
 -- Add "features_act" field (currently active features) to the node
    information. Output of scontrol, sinfo, and sview changed accordingly.
    The field previously displayed as "Features" is now "AvailableFeatures"
    while the new field is displayed as "ActiveFeatures".
 -- Remove Sun Constellation, IBM Federation Switches (replaced by NRT switch
    plugin) and long-defunct Quadrics Elan support.
 -- Add -M<clusters> option to sreport.
 -- Rework group caching to work better in environments with
    enumeration disabled. Removed CacheGroups config directive, group
    membership lists are now always cached, controlled by
    GroupUpdateTime parameter. GroupUpdateForce parameter default
    value changed to 1.
 -- Add reservation flag of "purge_comp" which will purge an advanced
    reservation once it has no more active (pending, suspended or running) jobs.
 -- Add new configuration parameter "KNLPlugins" and plugin infrastructure.
 -- Add optional job "features" to node reboot RPC.
 -- Add slurmd "-b" option to report node rebooted at daemon start time. Used
    for testing purposes.
 -- contribs/cray: Add framework for powering nodes up and down.
 -- For job constraint, convert comma separator to "&".
 -- Add Max*PerAccount options for QOS.
 -- Protect slurm_mutex_* calls with abort() on failure.

* Changes in Slurm 15.08.14
===========================
 -- For job resize, correct logic to build "resize" script with new values.
    Previously the scripts were based upon the original job size.

* Changes in Slurm 15.08.13
===========================
 -- Fix issue where slurmd could core when running the ipmi energy plugin.
 -- Print correct return code on failure to update node features through sview.
 -- Documentation - cleanup typos.
 -- Add logic so that slurmstepd can be launched under valgrind.
 -- Increase buffer size to read /proc/*/stat files.
 -- MYSQL - Handle ER_HOST_IS_BLOCKED better by failing when it occurs instead
    of continuously printing the message over and over as the problem will
    most likely not resolve itself.
 -- Add --disable-bluegene to configure.  This will make it so Slurm
    can work on a BGAS node.
 -- Prevent job stuck in configuring state if slurmctld daemon restarted while
    PrologSlurmctld is running.
 -- Handle association correctly if using FAIR_TREE as well as shares=Parent
 -- Fix race condition when setting priority of a job and the association
    doesn't have a parent.
 -- MYSQL - Fix issue with adding a reservation if the name has single quotes in
    it.
 -- Correctly print ranges when using step values in job arrays.
 -- Fix for invalid array pointer when creating advanced reservation when job
    allocations span heterogeneous nodes (differing core or socket counts).
 -- Fix for sstat to print correct info when requesting jobid.batch as part of
    a comma-separated list.
 -- Cray - Fix issue restoring jobs when blade count increases due to hardware
    reconfiguration.
 -- Ignore warnings about depricated functions. This is primarily there for
    new glibc 2.24+ that depricates readdir_r.
 -- Fix security issue caused by insecure file path handling triggered by the
    failure of a Prolog script. To exploit this a user needs to anticipate or
    cause the Prolog to fail for their job. CVE-2016-10030.

* Changes in Slurm 15.08.12
===========================
 -- Do not attempt to power down a node which has never responded if the
    slurmctld daemon restarts without state.
 -- Fix for possible slurmstepd segfault on invalid user ID.
 -- MySQL - Fix for possible race condition when archiving multiple clusters
    at the same time.
 -- Fix compile for when you don't have hwloc.
 -- Fix issue where daemons would only listen on specific address given in
    slurm.conf instead of all.  If looking for specific addresses use
    TopologyParam options No*InAddrAny.
 -- Cray - Better robustness when dealing with the aeld interface.
 -- job_submit.lua - add array_inx value for job arrays.
 -- Perlapi - Remove unneeded/undefined mutex.
 -- Fix issue when TopologyParam=NoInAddrAny is set the responses wouldn't
    make it to the slurmctld when using message aggregation.
 -- MySQL - Fix potential memory leak when rolling up data.
 -- Fix issue with clustername file when running on NFS with root_squash.
 -- Fix race condition with respects to cleaning up the profiling threads
    when in use.
 -- Fix issues when building on NetBSD.
 -- Fix jobcomp/elasticsearch build when libcurl is installed in a
    non-standard location.
 -- Fix MemSpecLimit to explicitly require TaskPlugin=task/cgroup and
    ConstrainRAMSpace set in cgroup.conf.
 -- MYSQL - Fix order of operations issue where if the database is locked up
    and the slurmctld doesn't wait long enough for the response it would give
    up leaving the connection open and create a situation where the next message
    sent could receive the response of the first one.
 -- Fix CFULL_BLOCK distribution type.
 -- Prevent sbatch from trying to enable debug messages when using job arrays.
 -- Prevent sbcast from enabling "--preserve" when specifying a jobid.
 -- Prevent wrong error message from spank plugin stack on GLOB_NOSPACE error.
 -- Fix proctrack/lua plugin to prevent possible deadlock.
 -- Prevent infinite loop in slurmstepd if execve fails.
 -- Prevent multiple responses to REQUEST_UPDATE_JOB_STEP message.
 -- Prevent possible deadlock in acct_gather_filesystem/lustre on error.
 -- Make it so --mail-type=NONE didn't throw an invalid error.
 -- If no default account is given for a user when creating (only a list of
    accounts) no default account is printed, previously NULL was printed.
 -- Fix for tracking a node's allocated CPUs with gang scheduling.
 -- Fix Hidden error during _rpc_forward_data call.
 -- Fix bug resulting from wrong order-of-operations in _connect_srun_cr(),
    and two others that cause incorrect debug messages.
 -- Fix backwards compatibility with sreport going to <= 14.11 coming from
    >= 15.08 for some reports.

* Changes in Slurm 15.08.11
===========================
 -- Fix for job "--contiguous" option that could cause job allocation/launch
    failure or slurmctld crash.
 -- Fix to setup logs for single-character program names correctly.
 -- Backfill scheduling performance enhancement with large number of running
    jobs.
 -- Reset job's prolog_running counter on slurmctld restart or reconfigure.
 -- burst_buffer/cray - Update job's prolog_running counter if pre_run fails.
 -- MYSQL - Make the error message more specific when removing a reservation
    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.
 -- power/cray - Fix bug introduced in 15.08.10 preventin operation in many
    cases.
 -- Prevent deadlock for flow of data to the slurmdbd when sending reservation
    that wasn't set up correctly.
 -- burst_buffer/cray - Don't call Datawarp "paths" function if script includes
    only create or destroy of persistent burst buffer. Some versions of Datawarp
    software return an error for such scripts, causing the job to be held.
 -- Fix potential issue when adding and removing TRES which could result
    in the slurmdbd segfaulting.
 -- Add cast to memory limit calculation to prevent integer overflow for
    very large memory values.
 -- Bluegene - Fix issue with reservations resizing under the covers on a
    restart of the slurmctld.
 -- Avoid error message of "Requested cpu_bind option requires entire node to
    be allocated; disabling affinity" being generated in some cases where
    task/affinity and task/cgroup plugins used together.
 -- Fix version issue when packing GRES information between 2 different versions
    of Slurm.
 -- Fix for srun hanging with OpenMPI and PMIx
 -- Better initialization of node_ptr when dealing with protocol_version.
 -- Fix incorrect type when initializing header of a message.
 -- MYSQL - Fix incorrect usage of limit and union.
 -- MYSQL - Remove 'ignore' from alter ignore when updating a table.
 -- Documentation - update prolog_epilog page to reflect current behavior
    if the Prolog fails.
 -- Documentation - clarify behavior of 'srun --export=NONE' in man page.
 -- Fix potential gres underflow on restart of slurmctld.
 -- Fix sacctmgr to remove a user who has no associations.

* Changes in Slurm 15.08.10
===========================
 -- Fix issue where if a slurmdbd rollup lasted longer than 1 hour the
    rollup would effectively never run again.
 -- Make error message in the pmi2 code to debug as the issue can be expected
    and retries are done making the error message a little misleading.
 -- Power/cray: Don't specify NID list to Cray APIs. If any of those nodes are
    not in a ready state, the API returned an error for ALL nodes rather than
    valid data for nodes in ready state.
 -- Fix potential divide by zero when tree_width=1.
 -- checkpoint/blcr plugin: Fix memory leak.
 -- If using PrologFlags=contain: Don't launch the extern step if a job is
    cancelled while launching.
 -- Remove duplicates from AccountingStorageTRES
 -- Fix backfill scheduler race condition that could cause invalid pointer in
    select/cons_res plugin. Bug introduced in 15.08.9.
 -- Avoid double calculation on partition QOS if the job is using the same QOS.
 -- Do not change a job's time limit when updating unrelated field in a job.
 -- Fix situation on a heterogeneous memory cluster where the order of
    constraints mattered in a job.

* Changes in Slurm 15.08.9
==========================
 -- BurstBuffer/cray - Defer job cancellation or time limit while "pre-run"
    operation in progress to avoid inconsistent state due to multiple calls
    to job termination functions.
 -- Fix issue with resizing jobs and limits not be kept track of correctly.
 -- BGQ - Remove redeclaration of job_read_lock.
 -- BGQ - Tighter locks around structures when nodes/cables change state.
 -- Make it possible to change CPUsPerTask with scontrol.
 -- Make it so scontrol update part qos= will take away a partition QOS from
    a partition.
 -- Fix issue where SocketsPerBoard didn't translate to Sockets when CPUS=
    was also given.
 -- Add note to slurm.conf man page about setting "--cpu_bind=no" as part
    of SallocDefaultCommand if a TaskPlugin is in use.
 -- Set correct reason when a QOS' MaxTresMins is violated.
 -- Insure that a job is completely launched before trying to suspend it.
 -- Remove historical presentations and design notes. Only distribute
    maintained doc/html and doc/man directories.
 -- Remove duplicate xmalloc() in task/cgroup plugin.
 -- Backfill scheduler to validate correct job partition for job submitted to
    multiple partitions.
 -- Force close on exec on first 256 file descriptors when launching a
    slurmstepd to close potential open ones.
 -- Step GRES value changed from type "int" to "int64_t" to support larger
    values.
 -- Fix getting reservations to database when database is down.
 -- Fix issue with sbcast not doing a correct fanout.
 -- Fix issue where steps weren't always getting the gres/tres involved.
 -- Fixed double read lock on getting job's gres/tres.
 -- Fix display for RoutePlugin parameter to display the correct value.
 -- Fix route/topology plugin to prevent segfault in sbcast when in use.
 -- Fix Cray slurmconfgen_smw.py script to use nid as nid, not nic.
 -- Fix Cray NHC spawning on job requeue. Previous logic would leave nodes
    allocated to a requeued job as non-usable on job termination.
 -- burst_buffer/cray plugin: Prevent a requeued job from being restarted while
    file stage-out is still in progress. Previous logic could restart the job
    and not perform a new stage-in.
 -- Fix job array formatting to allow return [0-100:2] display for arrays with
    step functions rather than [0,2,4,6,8,...] .
 -- FreeBSD - replace Linux-specific set_oom_adj to avoid errors in slurmd log.
 -- Add option for TopologyParam=NoInAddrAnyCtld to make the slurmctld listen
    on only one port like TopologyParam=NoInAddrAny does for everything else.
 -- Fix burst buffer plugin to prevent corruption of the CPU TRES data when bb
    is not set as an AccountingStorageTRES type.
 -- Surpress error messages in acct_gather_energy/ipmi plugin after repeated
    failures.
 -- Change burst buffer use completion email message from
    "SLURM Job_id=1360353 Name=tmp Staged Out, StageOut time 00:01:47" to
    "SLURM Job_id=1360353 Name=tmp StageOut/Teardown time 00:01:47"
 -- Generate burst buffer use completion email immediately afer teardown
    completes rather than at job purge time (likely minutes later).
 -- Fix issue when adding a new TRES to AccountingStorageTRES for the first
    time.
 -- Update gang scheduling tables when job manually suspended or resumed. Prior
    logic could mess up job suspend/resume sequencing.
 -- Update gang scheduling data structures when job changes in size.
 -- Associations - prevent hash table corruption if uid initially unset for
    a user, which can cause slurmctld to crash if that user is deleted.
 -- Avoid possibly aborting srun on SIGSTOP while creating the job step due to
    threading bug.
 -- Fix deadlock issue with burst_buffer/cray when a newly created burst
    buffer is found.
 -- burst_buffer/cray: Set environment variables just before starting job rather
    than at job submission time to reflect persistent buffers created or
    modified while the job is pending.
 -- Fix check of per-user qos limits on the initial run by a user.
 -- Fix gang scheduling resource selection bug which could prevent multiple jobs
    from being allocated the same resources. Bug was introduced in 15.08.6.
 -- Don't print the Rgt value of an association from the cache as it isn't
    kept up to date.
 -- burst_buffer/cray - If the pre-run operation fails then don't issue
    duplicate job cancel/requeue unless the job is still in run state. Prevents
    jobs hung in COMPLETING state.
 -- task/cgroup - Fix bug in task binding to CPUs.

* Changes in Slurm 15.08.8
==========================
 -- Backfill scheduling properly synchronized with Cray Node Health Check.
    Prior logic could result in highest priority job getting improperly
    postponed.
 -- Make it so daemons also support TopologyParam=NoInAddrAny.
 -- If scancel is operating on large number of jobs and RPC responses from
    slurmctld daemon are slow then introduce a delay in sending the cancel job
    requests from scancel in order to reduce load on slurmctld.
 -- Remove redundant logic when updating a job's task count.
 -- MySQL - Fix querying jobs with reservations when the id's have rolled.
 -- Perl - Fix use of uninitialized variable in slurm_job_step_get_pids.
 -- Launch batch job requsting --reboot after the boot completes.
 -- Move debug messages like "not the right user" from association manager
    to debug3 when trying to find the correct association.
 -- Fix incorrect logic when querying assoc_mgr information.
 -- Move debug messages to debug3 notifying a gres_bit_alloc was NULL for
    gres types without a file.
 -- Sanity Check Patch to setup variables for RAPL if in a race for it.
 -- GRES - Fix minor typecast issues.
 -- burst_buffer/cray - Increase size of intermediate variable used to store
    buffer byte size read from DW instance from 32 to 64-bits to avoid overflow
    and reporting invalid buffer sizes.
 -- Allow an existing reservation with running jobs to be modified without
    Flags=IGNORE_JOBS.
 -- srun - don't attempt to execve() a directory with a name matching the
    requested command
 -- Do not automatically relocate an advanced reservation for individual cores
    that spans multiple nodes when nodes in that reservation go down (e.g.
    a 1 core reservation on node "tux1" will be moved if node "tux1" goes
    down, but a reservation containing 2 cores on node "tux1" and 3 cores on
    "tux2" will not be moved node "tux1" goes down). Advanced reservations for
    whole nodes will be moved by default for down nodes.
 -- Avoid possible double free of memory (and likely abort) for slurmctld in
    background mode.
 -- contribs/cray/csm/slurmconfgen_smw.py - avoid including repurposed compute
    nodes in configs.
 -- Support AuthInfo in slurmdbd.conf that is different from the value in
    slurm.conf.
 -- Fix build on FreeBSD 10.
 -- Fix hdf5 build on ppc64 by using correct fprintf formatting for types.
 -- Fix cosmetic printing of NO_VALs in scontrol show assoc_mgr.
 -- Fix perl api for newer perl versions.
 -- Fix for jobs requesting cpus-per-task (eg. -c3) that exceed the number of
    cpus on a core.
 -- Remove unneeded perl files from the .spec file.
 -- Flesh out filters for scontrol show assoc_mgr.
 -- Add function to remove assoc_mgr_info_request_t members without freeing
    structure.
 -- Fix build on some non-glibc systems by updating includes.
 -- Add new PowerParameters options of get_timeout and set_timeout. The default
    set_timeout was increased from 5 seconds to 30 seconds. Also re-read current
    power caps periodically or after any failed "set" operation.
 -- Fix slurmdbd segfault when listing users with blank user condition.
 -- Save the ClusterName to a file in SaveStateLocation, and use that to
    verify the state directory belongs to the given cluster at startup to avoid
    corruption from multiple clusters attempting to share a state directory.
 -- MYSQL - Fix issue when rerolling monthly data to work off correct time
    period.  This would only hit you if you rerolled a 15.08 prior to this
    commit.
 -- If FastSchedule=0 is used make sure TRES are set up correctly in accounting.
 -- Fix sreport's truncation of columns with large TRES and not using
    a parsing option.
 -- Make sure count of boards are restored when slurmctld has option -R.
 -- When determine if a job can fit into a TRES time limit after resources
    have been selected set the time limit appropriately if the job didn't
    request one.
 -- Fix inadequate locks when updating a partition's TRES.
 -- Add new assoc_limit_continue flag to SchedulerParameters.
 -- Avoid race in acct_gather_energy_cray if energy requested before available.
 -- MYSQL - Avoid having multiple default accounts when a user is added to
    a new account and making it a default all at once.

* Changes in Slurm 15.08.7
==========================
 -- sched/backfill: If a job can not be started within the configured
    backfill_window, set it's start time to 0 (unknown) rather than the end
    of the backfill_window.
 -- Remove the 1024-character limit on lines in batch scripts.
 -- burst_buffer/cray: Round up swap size by configured granularity.
 -- select/cray: Log repeated aeld reconnects.
 -- task/affinity: Disable core-level task binding if more CPUs required than
    available cores.
 -- Preemption/gang scheduling: If a job is suspended at slurmctld restart or
    reconfiguration time, then leave it suspended rather than resume+suspend.
 -- Don't use lower weight nodes for job allocation when topology/tree used.
 -- BGQ - If a cable goes into error state remove the under lying block on
    a dynamic system and mark the block in error on a static/overlap system.
 -- BGQ - Fix regression in 9cc4ae8add7f where blocks would be deleted on
    static/overlap systems when some hardware issue happens when restarting
    the slurmctld.
 -- Log if CLOUD node configured without a resume/suspend program or suspend
    time.
 -- MYSQL - Better locking around g_qos_count which was previously unprotected.
 -- Correct size of buffer used for jobid2str to avoid truncation.
 -- Fix allocation/distribution of tasks across multiple nodes when
    --hint=nomultithread is requested.
 -- If a reservation's nodes value is "all" then track the current nodes in the
    system, even if those nodes change.
 -- Fix formatting if using "tree" option with sreport.
 -- Make it so sreport prints out a line for non-existent TRES instead of
    error message.
 -- Set job's reason to "Priority" when higher priority job in that partition
    (or reservation) can not start rather than leaving the reason set to
    "Resources".
 -- Fix memory corruption when a new non-generic TRES is added to the
    DBD for the first time.  The corruption is only noticed at shutdown.
 -- burst_buffer/cray - Improve tracking of allocated resources to handle race
    condition when reading state while buffer allocation is in progress.
 -- If a job is submitted only with -c option and numcpus is updated before
    the job starts update the cpus_per_task appropriately.
 -- Update salloc/sbatch/srun documentation to mention time granularity.
 -- Fixed memory leak when freeing assoc_mgr_info_msg_t.
 -- Prevent possible use of empty reservation core bitmap, causing abort.
 -- Remove unneeded pack32's from qos_rec when qos_rec is NULL.
 -- Make sacctmgr print MaxJobsPerUser when adding/altering a QOS.
 -- Correct dependency formatting to print array task ids if set.
 -- Update sacctmgr help with current QOS options.
 -- Update slurmstepd to initialize authentication before task launch.
 -- burst_cray/cray: Eliminate need for dedicated nodes.
 -- If no MsgAggregationParams is set don't set the internal string to
    anything.  The slurmd will process things correctly after the fact.
 -- Fix output from api when printing job step not found.
 -- Don't allow user specified reservation names to disrupt the normal
    reservation sequeuece numbering scheme.
 -- Fix scontrol to be able to accept TRES as an option when creating
    a reservation.
 -- contrib/torque/qstat.pl - return exit code of zero even with no records
    printed for 'qstat -u'.
 -- When a reservation is created or updated, compress user provided node names
    using hostlist functions (e.g. translate user input of "Nodes=tux1,tux2"
    into "Nodes=tux[1-2]").
 -- Change output routines for scontrol show partition/reservation to handle
    unexpectedly large strings.
 -- Add more partition fields to "scontrol write config" output file.
 -- Backfill scheduling fix: If a job can't be started due to a "group" resource
    limit, rather than reserve resources for it when the next job ends, don't
    reserve any resources for it.
 -- Avoid slurmstepd abort if malloc fails during accounting gather operation.
 -- Fix nodes from being overallocated when allocation straddles multiple nodes.
 -- Fix memory leak in slurmctld job array logic.
 -- Prevent decrementing of TRESRunMins when AccountingStorageEnforce=limits is
    not set.
 -- Fix backfill scheduling bug which could postpone the scheduling of jobs due
    to avoidance of nodes in COMPLETING state.
 -- Properly account for memory, CPUs and GRES when slurmctld is reconfigured
    while there is a suspended job. Previous logic would add the CPUs, but not
    memory or GPUs. This would result in underflow/overflow errors in select
    cons_res plugin.
 -- Strip flags from a job state in qstat wrapper before evaluating.
 -- Add missing job states from the qstat wrapper.
 -- Cleanup output routines to reduce number of fixed-sized buffer function
    calls and allow for unexpectedly large strings.

* Changes in Slurm 15.08.6
==========================
 -- In slurmctld log file, log duplicate job ID found by slurmd. Previously was
    being logged as prolog/epilog failure.
 -- If a job is requeued while in the process of being launch, remove it's
    job ID from slurmd's record of active jobs in order to avoid generating a
    duplicate job ID error when launched for the second time (which would
    drain the node).
 -- Cleanup messages when handling job script and environment variables in
    older directory structure formats.
 -- Prevent triggering gang scheduling within a partition if configured with
    PreemptType=partition_prio and PreemptMode=suspend,gang.
 -- Decrease parallelism in job cancel request to prevent denial of service
    when cancelling huge numbers of jobs.
 -- If all ephemeral ports are in use, try using other port numbers.
 -- Revert way lib lua is handled when doing a dlopen, fixing a regression in
    15.08.5.
 -- Set the debug level of the rmdir message in xcgroup_delete() to debug2.
 -- Fix the qstat wrapper when user is removed from the system but still
    has running jobs.
 -- Log the request to terminate a job at info level if DebugFlags includes
    the Steps keyword.
 -- Fix potential memory corruption in _slurm_rpc_epilog_complete as well as
    _slurm_rpc_complete_job_allocation.
 -- Fix cosmetic display of AccountingStorageEnforce option "nosteps" when
    in use.
 -- If a job can never be started due to unsatisfied job dependencies, report
    the full original job dependency specification rather than the dependencies
    remaining to be satisfied (typically NULL).
 -- Refactor logic to synchronize active batch jobs and their script/environment
    files, reducing overhead dramatically for large numbers of active jobs.
 -- Avoid hard-link/copy of script/environment files for job arrays. Use the
    master job record file for all tasks of the job array.
    NOTE: Job arrays submitted to Slurm version 15.08.6 or later will fail if
    the slurmctld daemon is downgraded to an earlier version of Slurm.
 -- Move slurmctld mail handler to separate thread for improved performance.
 -- Fix containment of adopted processes from pam_slurm_adopt.
 -- If a pending job array has multiple reasons for being in a pending state,
    then print all reasons in a comma separated list.

* Changes in Slurm 15.08.5
==========================
 -- Prevent "scontrol update job" from updating jobs that have already finished.
 -- Show requested TRES in "squeue -O tres" when job is pending.
 -- Backfill scheduler: Test association and QOS node limits before reserving
    resources for pending job.
 -- burst_buffer/cray: If teardown operations fails, sleep and retry.
 -- Clean up the external pids when using the PrologFlags=Contain feature
    and the job finishes.
 -- burst_buffer/cray: Support file staging when job lacks job-specific buffer
    (i.e. only persistent burst buffers).
 -- Added srun option of --bcast to copy executable file to compute nodes.
 -- Fix for advanced reservation of burst buffer space.
 -- BurstBuffer/cray: Add logic to terminate dw_wlm_cli child processes at
    shutdown.
 -- If job can't be launch or requeued, then terminate it.
 -- BurstBuffer/cray: Enable clearing of burst buffer string on completed job
    as a means of recovering from a failure mode.
 -- Fix wrong memory free when parsing SrunPortRange=0-0 configuration.
 -- BurstBuffer/cray: Fix job record purging if cancelled from pending state.
 -- BGQ - Handle database throw correctly when syncing users on blocks.
 -- MySQL - Make sure we don't have a NULL string returned when not
    requesting any specific association.
 -- sched/backfill: If max_rpc_cnt is configured and the backlog of RPCs has
    not cleared after yielding locks, then continue to sleep.
 -- Preserve the job dependency description displayed in 'scontrol show job'
    even if the dependee jobs was terminated and cleaned causing the
    dependent to never run because of DependencyNeverSatisfied.
 -- Correct job task count calculation if only node count and ntasks-per-node
    options supplied.
 -- Make sure the association manager converts any string to be lower case
    as all the associations from the database will be lower case.
 -- Sanity check for xcgroup_delete() to verify incoming parameter is valid.
 -- Fix formatting for sacct with variables that switched from uint32_t to
    uint64_t.
 -- Fix a typo in sacct man page.
 -- Set up extern step to track any children of an ssh if it leaves anything
    else behind.
 -- Prevent slurmdbd divide by zero if no associations defined at rollup time.
 -- Multifactor - Add sanity check to make sure pending jobs are handled
    correctly when PriorityFlags=CALCULATE_RUNNING is set.
 -- Add slurmdb_find_tres_count_in_string() to slurm db perl api.
 -- Make lua dlopen() conditional on version found at build.
 -- sched/backfill - Delay backfill scheduler for completing jobs only if
    CompleteWait configuration parameter is set (make code match documentation).
 -- Release a job's allocated licenses only after epilog runs on all nodes
    rather than at start of termination process.
 -- Cray job NHC delayed until after burst buffer released and epilog completes
    on all allocated nodes.
 -- Fix abort of srun if using PrologFlags=NoHold
 -- Let devices step_extern cgroup inherit attributes of job cgroup.
 -- Add new hook to Task plugin to be able to put adopted processes in the
    step_extern cgroups.
 -- Fix AllowUsers documentation in burst_buffer.conf man page. Usernames are
    comma separated, not colon delimited.
 -- Fix issue with time limit not being set correctly from a QOS when a job
    requests no time limit.
 -- Various CLANG fixes.
 -- In both sched/basic and backfill: If a job can not be started due to some
    account/qos limit, then don't start other jobs which could delay jobs. The
    old logic would skip the job and start other jobs, which could delay the
    higher priority job.
 -- select/cray: Prevent NHC from running more than once per job or step.
 -- Fix fields not properly printed when adding an account through sacctmgr.
 -- Update LBNL Node Health Check (NHC) link on FAQ.
 -- Fix multifactor plugin to prevent slurmctld from getting segmentation fault
    should the tres_alloc_cnt be NULL.
 -- sbatch/salloc - Move nodelist logic before the time min_nodes is used
    so we can set it correctly before tasks are set.

* Changes in Slurm 15.08.4
==========================
 -- Fix typo for the "devices" cgroup subsystem in pam_slurm_adopt.c
 -- Fix TRES_MAX flag to work correctly.
 -- Improve the systemd startup files.
 -- Added burst_buffer.conf flag parameter of "TeardownFailure" which will
    teardown and remove a burst buffer after failed stage-in or stage-out.
    By default, the buffer will be preserved for analysis and manual teardown.
 -- Prevent a core dump in srun if the signal handler runs during the job
    allocation causing the step context to be NULL.
 -- Don't fail job if multiple prolog operations in progress at slurmctld
    restart time.
 -- Burst_buffer/cray: Fix to purge terminated jobs with burst buffer errors.
 -- Burst_buffer/cray: Don't stall scheduling of other jobs while a stage-in
    is in progress.
 -- Make it possible to query 'extern' step with sstat.
 -- Make 'extern' step show up in the database.
 -- MYSQL - Quote assoc table name in mysql query.
 -- Make SLURM_ARRAY_TASK_MIN, SLURM_ARRAY_TASK_MAX, and SLURM_ARRAY_TASK_STEP
    environment variables available to PrologSlurmctld and EpilogSlurmctld.
 -- Fix slurmctld bug in which a pending job array could be canceled
    by a user different from the owner or the administrator.
 -- Support taking node out of FUTURE state with "scontrol reconfig" command.
 -- Sched/backfill: Fix to properly enforce SchedulerParameters of
    bf_max_job_array_resv.
 -- Enable operator to reset sdiag data.
 -- jobcomp/elasticsearch plugin: Add array_job_id and array_task_id fields.
 -- Remove duplicate #define IS_NODE_POWER_UP.
 -- Added SchedulerParameters option of max_script_size.
 -- Add REQUEST_ADD_EXTERN_PID option to add pid to the slurmstepd's extern
    step.
 -- Add unique identifiers to anchor tags in HTML generated from the man pages.
 -- Add with_freeipmi option to spec file.
 -- Minor elasticsearch code improvements

* Changes in Slurm 15.08.3
==========================
 -- Correct Slurm's RPM build if Munge is not installed.
 -- Job array termination status email ExitCode based upon highest exit code
    from any task in the job array rather than the last task. Also change the
    state from "Ended" or "Failed" to "Mixed" where appropriate.
 -- Squeue recombines pending job array records only if their name and partition
    are identical.
 -- Fix some minor leaks in the job info and step info API.
 -- Export missing QOS id when filling in association with the association
    manager.
 -- Fix invalid reference if a lua job_submit plugin references a default qos
    when a user doesn't exist in the database.
 -- Use association enforcement in the lua plugin.
 -- Fix a few spots missing defines of accounting_enforce or acct_db_conn
    in the plugins.
 -- Show requested TRES in scontrol show jobs when job is pending.
 -- Improve sched/backfill support for job features, especially XOR construct.
 -- Correct scheduling logic for job features option with XOR construct that
    could delay a job's initiation.
 -- Remove unneeded frees when creating a tres string.
 -- Send a tres_alloc_str for the batch step
 -- Fix incorrect check for slurmdb_find_tres_count_in_string in various places,
    it needed to check for INFINITE64 instead of zero.
 -- Don't allow scontrol to create partitions with the name "DEFAULT".
 -- burst_buffer/cray: Change error from "invalid request" to "permssion denied"
    if a non-authorized user tries to create/destroy a persistent buffer.
 -- PrologFlags work: Setting a flag of "Contain" implicitly sets the "Alloc"
    flag. Fix code path which could prevent execution of the Prolog when the
    "Alloc" or "Contain" flag were set.
 -- Fix for acct_gather_energy/cray|ibmaem to work with missed enum.
 -- MYSQL - When inserting a job and begin_time is 0 do not set it to
    submit_time.  0 means the job isn't eligible yet so we need to treat it so.
 -- MYSQL - Don't display ineligible jobs when querying for a window of time.
 -- Fix creation of advanced reservation of cores on nodes which are DOWN.
 -- Return permission denied if regular user tries to release job held by an
    administrator.
 -- MYSQL - Fix rollups for multiple jobs running by the same association
    in an hour counting multiple times.
 -- Burstbuffer/Cray plugin - Fix for persistent burst buffer use.
    Don't call paths if no #DW options.
 -- Modifications to pam_slurm_adopt to work correctly for the "extern" step.
 -- Alphabetize debugflags when printing them out.
 -- Fix systemd's slurmd service from killing slurmstepds on shutdown.
 -- Fixed counter of not indexed jobs, error_cnt post-increment changed to
    pre-increment.

* Changes in Slurm 15.08.2
==========================
 -- Fix for tracking node state when jobs that have been allocated exclusive
    access to nodes (i.e. entire nodes) and later relinquish some nodes. Nodes
    would previously appear partly allocated and prevent use by other jobs.
 -- Correct some cgroup paths ("step_batch" vs. "step_4294967294", "step_exter"
    vs. "step_extern", and "step_extern" vs. "step_4294967295").
 -- Fix advanced reservation core selection logic with network topology.
 -- MYSQL - Remove restriction to have to be at least an operator to query TRES
    values.
 -- For pending jobs have sacct print 0 for nnodes instead of the bogus 2.
 -- Fix for tracking node state when jobs that have been allocated exclusive
    access to nodes (i.e. entire nodes) and later relinquish some nodes. Nodes
    would previously appear partly allocated and prevent use by other jobs.
 -- Fix updating job in db after extending job's timelimit past partition's
    timelimit.
 -- Fix srun -I<timeout> from flooding the controller with step create requests.
 -- Requeue/hold batch job launch request if job already running (possible if
    node went to DOWN state, but jobs remained active).
 -- If a job's CPUs/task ratio is increased due to configured MaxMemPerCPU,
    then increase it's allocated CPU count in order to enforce CPU limits.
 -- Don't mark powered down node as not responding. This could be triggered by
    race condition of the node suspend and ping logic, preventing use of the
    node.
 -- Don't requeue RPC going out from slurmctld to DOWN nodes (can generate
    repeating communication errors).
 -- Propagate sbatch "--dist=plane=#" option to srun.
 -- Add acct_gather_energy/ibmaem plugin for systems with IBM Systems Director
    Active Energy Manager.
 -- Fix spec file to look for mariadb or mysql devel packages for build
    requirements.
 -- MySQL - Improve the code with asking for jobs in a suspended state.
 -- Fix slurcmtld allowing root to see job steps using squeues -s.
 -- Do not send burst buffer stage out email unless the job uses burst buffers.
 -- Fix sacct to not return all jobs if the -j option is given with a trailing
    ','.
 -- Permit job_submit plugin to set a job's priority.
 -- Fix occasional srun segfault.
 -- Fix issue with sacct, printing 0_0 for array's that had finished in the
    database but the start record hadn't made it yet.
 -- sacctmgr - Don't allow default account associations to be removed
    from a user.
 -- Fix sacct -j, (nothing but a comma) to not return all jobs.
 -- Fixed slurmctld not sending cold-start messages correctly to the database
    when a cold-start (-c) happens to the slurmctld.
 -- Fix case where if the backup slurmdbd has existing connections when it gives
    up control that the it would be killed.
 -- Fix task/cgroup affinity to work correctly with multi-socket
    single-threaded cores.  A regression caused only 1 socket to be used on
    this kind of node instead of all that were available.
 -- MYSQL - Fix minor issue after an index was added to the database it would
    previously take 2 restarts of the slurmdbd to make it stick correctly.
 -- Add hv_to_qos_cond() and qos_rec_to_hv() functions to the Perl interface.
 -- Add new burst_buffer.conf parameters: ValidateTimeout and OtherTimeout.
    See man page for details.
 -- Fix burst_buffer/cray support for interactive allocations >4GB.
 -- Correct backfill scheduling logic for job with INFINITE time limit.
 -- Fix issue on a scontrol reconfig all available GRES/TRES would be zeroed
    out.
 -- Set SLURM_HINT environment variable when --hint is used with sbatch or
    salloc.
 -- Add scancel -f/--full option to signal all steps including batch script and
    all of its child processes.
 -- Fix salloc -I to accept an argument.
 -- Avoid reporting more allocated CPUs than exist on a node. This can be
    triggered by resuming a previosly suspended job, resulting in
    oversubscription of CPUs.
 -- Fix the pty window manager in slurmstepd not to retry IO operation with
    srun if it read EOF from the connection with it.
 -- sbatch --ntasks option to take precedence over --ntasks-per-node plus node
    count, as documented. Set SLURM_NTASKS/SLURM_NPROCS environment variables
    accordingly.
 -- MYSQL - Make sure suspended time is only subtracted from the CPU TRES
    as it is the only TRES that can be given to another job while suspended.
 -- Clarify how TRESBillingWeights operates on memory and burst buffers.
 -- Add report AccountUtilizationByQOS to sreport. AccountUtilizationByUser is
    also able to be filtered by QOS as well.

* Changes in Slurm 15.08.1
==========================
 -- Fix test21.30 and 21.34 to check grpwall better.
 -- Add time to the partition QOS the job is running on instead of just the
    job QOS.
 -- Print usage for GrpJobs, GrpSubmitJobs and GrpWall even if there is no
    limit.
 -- If AccountingEnforce=safe is set make sure a job can finish before going
    over the limit with grpwall on a QOS or association.
 -- burst_buffer/cray - Major updates based upon recent Cray changes.
 -- Improve clean up logic of pmi2 plugin.
 -- Improve job state reason string when required nodes not available.
 -- Fix missing else when packing an update partition message
 -- Fix srun from inheriting the SLURM_CPU_BIND and SLURM_MEM_BIND environment
    variables when running in an existing srun (e.g. an srun within an salloc).
 -- Fix missing else when packing an update partition message.
 -- Use more flexible mechnanism to find json installation.
 -- Make sure safe_limits was initialized before processing limits in the
    slurmctld.
 -- Fix for burst_buffer/cray to parse type option correctly.
 -- Fix memory error and version number in the nonstop plugin and reservation
    code.
 -- When requesting GRES in a step check for correct variable for the count.
 -- Fix issue with GRES in steps so that if you have multiple exclusive steps
    and you use all the GRES up instead of reporting the configuration isn't
    available you hold the requesting step until the GRES is available.
 -- MYSQL - Change debug to print out with DebugFlags=DB_Step instead of debug4
 -- Simplify code when user is selecting a job/step/array id and removed
    anomaly when only asking for 1 (task_id was never set to INFINITE).
 -- MYSQL - If user is requesting various task_ids only return requested steps.
 -- Fix issue when tres cnt for energy is 0 for total reported.
 -- Resolved scalability issues of power adaptive scheduling with layouts.
 -- Burst_buffer/cray bug - Fix teardown race condition that can result in
    infinite loop.
 -- Add support for --mail-type=NONE option.
 -- Job "--reboot" option automatically, set's exclusive node mode.
 -- Fix memory leak when using PrologFlags=Alloc.
 -- Fix truncation of job reason in squeue.
 -- If a node is in DOWN or DRAIN state, leave it unavailable for allocation
    when powered down.
 -- Update the slurm.conf man page documenting better nohold_on_prolog_fail
    variable.
 -- Don't trucate task ID information in "squeue --array/-r" or "sview".
 -- Fix a bug which caused scontrol to core dump when releasing or
    holding a job by name.
 -- Fix unit conversion bug in slurmd which caused wrong memory calculation
    for cgroups.
 -- Fix issue with GRES in steps so that if you have multiple exclusive steps
    and you use all the GRES up instead of reporting the configuration isn't
    available you hold the requesting step until the GRES is available.
 -- Fix slurmdbd backup to use DbdAddr when contacting the primary.
 -- Fix error in MPI documentation.
 -- Fix to handle arrays with respect to number of jobs submitted.  Previously
    only 1 job was accounted (against MaxSubmitJob) for when an array was
    submitted.
 -- Correct counting for job array limits, job count limit underflow possible
    when master cancellation of master job record.
 -- Combine 2 _valid_uid_gid functions into a single function to avoid
    diversion.
 -- Pending job array records will be combined into single line by default,
    even if started and requeued or modified.
 -- Fix sacct --format=nnodes to print out correct information for pending
    jobs.
 -- Make is so 'scontrol update job 1234 qos='' will set the qos back to
    the default qos for the association.
 -- Add [Alloc|Req]Nodes to sacct to be more like cpus.
 -- Fix sacct documentation about [Alloc|Req]TRES
 -- Put node count in TRES string for steps.
 -- Fix issue with wrong protocol version when using the srun --no-allocate
    option.
 -- Fix TRES counts on GRES on a clean start of the slurmctld.
 -- Add ability to change a job array's maximum running task count:
    "scontrol update jobid=# arraytaskthrottle=#"

* Changes in Slurm 15.08.0
==========================
 -- Fix issue with frontend systems (outside ALPs or BlueGene) where srun
    wouldn't get the correct protocol version to launch a step.
 -- Fix for message aggregation return rpcs where none of the messages are
    intended for the head of the tree.
 -- Fix segfault in sreport when there was no response from the dbd.
 -- ALPS - Fix compile to not link against -ljob and -lexpat with every lib
    or binary.
 -- Fix testing for CR_Memory when CR_Memory and CR_ONE_TASK_PER_CORE are used
    with select/linear.
 -- When restarting or reconfiging the slurmctld, if job is completing handle
    accounting correctly to avoid meaningless errors about overflow.
 -- Add AccountingStorageTRES to scontrol show config
 -- MySQL - Fix minor memory leak if a connection ever goes away whist using it.
 -- ALPS - Make it so srun --hint=nomultithread works correctly.
 -- Make MaxTRESPerUser work in sacctmgr.
 -- Fix handling of requeued jobs with steps that are still finishing.
 -- Cleaner copy for PriorityWeightTRES, it also fixes a core dump when trying
    to free it otherwise.
 -- Add environment variables SLURM_ARRAY_TASK_MAX, SLURM_ARRAY_TASK_MIN,
    SLURM_ARRAY_TASK_STEP for job arrays.
 -- Fix srun to use the NoInAddrAny TopologyParam option.
 -- Change QOS flag name from PartitionQOS to OverPartQOS to be a better
    description.
 -- Fix rpmbuild issue on Centos7.

* Changes in Slurm 15.08.0rc1
==============================
 -- Added power_cpufreq layout.
 -- Make complete_batch_script RPC work with message aggregation.
 -- Do not count slurmctld threads waiting in a "throttle" lock against the
    daemon's thread limit as they are not contending for resources.
 -- Modify slurmctld outgoing RPC logic to support more parallel tasks (up to
    85 RPCs and 256 pthreads; the old logic supported up to 21 RPCs and 256
    threads). This change can dramatically improve performance for RPCs
    operating on small node counts.
 -- Increase total backfill scheduler run time in stats_info_response_msg data
    structure from 32 to 64 bits in order to prevent overflow.
 -- Add NoInAddrAny option to TopologyParam in the slurm.conf which allows to
    bind to the interface of return of gethostname instead of any address on
    the node which avoid RSIP issues in Cray systems.  This is most likely
    useful in other systems as well.
 -- Fix memory leak in Slurm::load_jobs perl api call.
 -- Added --noconvert option to sacct, sstat, squeue and sinfo which allows
    values to be displayed in their original unit types (e.g. 2048M won't be
    converted to 2G).
 -- Fix spelling of node_rescrs to node_resrcs in Perl API.
 -- Fix node state race condition, UNKNOWN->IDLE without configuration info.
 -- Cray: Disable LDAP references from slurmstepd on job launch due for
    improved scalability.
 -- Remove srun "read header error" due to application termination race
    condition.
 -- Optimize sacct queries with additional db indexes.
 -- Add SLURM_TOPO_LEN env variable for scontrol show topology.
 -- Add free_mem to node information.
 -- Fix abort of batch launch if prolog is running, wait for prolog instead.
 -- Fix case where job would get the wrong cpu count when using
    --ntasks-per-core and --cpus-per-task together.
 -- Add TRESBillingWeights to partitions in slurm.conf which allows taking into
    consideration any TRES Type when calculating the usage of a job.
 -- Add PriorityWeightTRES slurm.conf option to be able to configure priority
    factors for TRES types.

* Changes in Slurm 15.08.0pre6
==============================
 -- Add scontrol options to view and modify layouts tables.
 -- Add MsgAggregationParams which controls a reverse tree to the slurmctld
    which can be used to aggregate messages to the slurmctld into a single
    message to reduce communication to the slurmctld.  Currently only epilog
    complete messages and node registration messages use this logic.
 -- Add sacct and squeue options to print trackable resources.
 -- Add sacctmgr option to display trackable resources.
 -- If an salloc or srun command is executed on a "front-end" configuration,
    that job will be assigned a slurmd shepherd daemon on the same host as used
    to execute the command when possible rather than an slurmd daemon on an
    arbitrary front-end node.
 -- Add srun --accel-bind option to control how tasks are bound to GPUs and NIC
    Generic RESources (GRES).
 -- gres/nic plugin modified to set OMPI_MCA_btl_openib_if_include environment
    variable based upon allocated devices (usable with OpenMPI and Melanox).
 -- Make it so info options for srun/salloc/sbatch print with just 1 -v instead
    of 4.
 -- Add "no_backup_scheduling" SchedulerParameter to prevent jobs from being
    scheduled when the backup takes over. Jobs can be submitted, modified and
    cancelled while the backup is in control.
 -- Enable native Slurm backup controller to reside on an external Cray node
    when the "no_backup_scheduling" SchedulerParameter is used.
 -- Removed TICKET_BASED fairshare. Consider using the FAIR_TREE algorithm.
 -- Disable advanced reservation "REPLACE" option on IBM Bluegene systems.
 -- Add support for control distribution of tasks across cores (in addition
    to existing support for nodes and sockets, (e.g. "block", "cyclic" or
    "fcyclic" task distribution at 3 levels in the hardware rather than 2).
 -- Create db index on <cluster>_assoc_table.acct. Deleting accounts that didn't
    have jobs in the job table could take a long time.
 -- The performance of Profiling with HDF5 is improved. In addition, internal
    structures are changed to make it easier to add new profile types,
    particularly energy sensors. sh5util will continue to work with either
    format.
 -- Add partition information to sshare output if the --partition option
    is specified on the sshare command line.
 -- Add sreport -T/--tres option to identify Trackable RESources (TRES) to
    report.
 -- Display job in sacct when single step's cpus are different from the job
    allocation.
 -- Add association usage information to "scontrol show cache" command output.
 -- MPI/MVAPICH plugin now requires Munge for authentication.
 -- job_submit/lua: Add default_qos fields. Add job record qos.  Add partition
    record allow_qos and qos_char fields.

* Changes in Slurm 15.08.0pre5
==============================
 -- Add jobcomp/elasticsearch plugin. Libcurl is required for build. Configure
    the server as follows: "JobCompLoc=http://YOUR_ELASTICSEARCH_SERVER:9200".
 -- Scancel logic large re-written to better support job arrays.
 -- Added a slurm.conf parameter PrologEpilogTimeout to control how long
    prolog/epilog can run.
 -- Added TRES (Trackable resources) to track Mem, GRES, license, etc
    utilization.
 -- Add re-entrant versions of glibc time functions (e.g. localtime) to Slurm
    in order to eliminate rare deadlock of slurmstepd fork and exec calls.
 -- Constrain kernel memory (if available) in cgroups.
 -- Add PrologFlags option of "Contain" to create a proctrack container at
    job resource allocation time.
 -- Disable the OOM Killer in slurmd and slurmstepd's memory cgroup when using
    MemSpecLimit.

* Changes in Slurm 15.08.0pre4
==============================
 -- Burst_buffer/cray - Convert logic to use new commands/API names (e.g.
    "dws_setup" rather than "bbs_setup").
 -- Remove the MinJobAge size limitation. It can now exceed 65533 as it
    is represented using an unsigned integer.
 -- Verify that all plugin version numbers are identical to the component
    attempting to load them. Without this verification, the plugin can reference
    Slurm functions in the caller which differ (e.g. the underlying function's
    arguments could have changed between Slurm versions).
    NOTE: All plugins (except SPANK) must be built against the identical
    version of Slurm in order to be used by any Slurm command or daemon. This
    should eliminate some very difficult to diagnose problems due to use of old
    plugins.
 -- Increase the MAX_PACK_MEM_LEN define to avoid PMI2 failure when fencing
    with large amount of ranks (to 1GB).
 -- Requests by normal user to reset a job priority (even to lower it) will
    result in an error saying to change the job's nice value instead.
 -- SPANK naming changes: For environment variables set using the
    spank_job_control_setenv() function, the values were available in the
    slurm_spank_job_prolog() and slurm_spank_job_epilog() functions using
    getenv where the name was given a prefix of "SPANK_". That prefix has
    been removed for consistency with the environment variables available in
    the Prolog and Epilog scripts.
 -- Major additions to the layouts framework code.
 -- Add "TopologyParam" configuration parameter. Optional value of "dragonfly"
    is supported.
 -- Optimize resource allocation for systems with dragonfly networks.
 -- Add "--thread-spec" option to salloc, sbatch and srun commands. This is
    the count of threads reserved for system use per node.
 -- job_submit/lua: Enable reading and writing job environment variables.
    For example: if (job_desc.environment.LANGUAGE == "en_US") then ...
 -- Added two new APIs slurm_job_cpus_allocated_str_on_node_id()
    and slurm_job_cpus_allocated_str_on_node() to print the CPUs id
    allocated to a job.
 -- Specialized memory (a node's MemSpecLimit configuration parameter) is not
    available for allocation to jobs.
 -- Modify scontrol update job to allow jobid specification without
    the = sign. 'scontrol update job=123 ...' and 'scontrol update job 123 ...'
    are both valid syntax.
 -- Archive a month at a time when there are lots of records to archive.
 -- Introduce new sbatch option '--kill-on-invalid-dep=yes|no' which allows
    users to specify which behavior they want if a job dependency is not
    satisfied.
 -- Add Slurmdb::qos_get() interface to perl api.
 -- If a job fails to start set the requeue reason to be:
    job requeued in held state.
 -- Implemented a new MPI key,value PMIX_RING() exchange algorithm as
    an alternative to PMI2.
 -- Remove possible deadlocks in the slurmctld when the slurmdbd is busy
    archiving/purging.
 -- Add DB_ARCHIVE debug flag for filtering out debug messages in the slurmdbd
    when the slurmdbd is archiving/purging.
 -- Fix some power_save mode issues: Parsing of SuspendTime in slurm.conf was
    bad, powered down nodes would get set non-responding if there was an
    in-flight message, and permit nodes to be powered down from any state.
 -- Initialize variables in consumable resource plugin to prevent core dump.

* Changes in Slurm 15.08.0pre3
==============================
 -- CRAY - addition of acct_gather_energy/cray plugin.
 -- Add job credential to "Run Prolog" RPC used with a configuration of
    PrologFlags=alloc. This allows the Prolog to be passed identification of
    GPUs allocated to the job.
 -- Add SLURM_JOB_CONSTAINTS to environment variables available to the Prolog.
 -- Added "--mail=stage_out" option to job submission commands to notify user
    when burst buffer state out is complete.
 -- Require a "Reason" when using scontrol to set a node state to DOWN.
 -- Mail notifications on job BEGIN, END and FAIL now apply to a job array as a
    whole rather than generating individual email messages for each task in the
    job array.
 -- task/affinity - Fix memory binding to NUMA with cpusets.
 -- Display job's estimated NodeCount based off of partition's configured
    resources rather than the whole system's.
 -- Add AuthInfo option of "cred_expire=#" to specify the lifetime of a job
    step credential. The default value was changed from 1200 to 120 seconds.
 -- Set the delay time for job requeue to the job credential lifetime (120
    seconds by default). This insures that prolog runs on every node when a
    job is requeued. (This change will slow down launch of re-queued jobs).
 -- Add AuthInfo option of "cred_expire=#" to specify the lifetime of a job
    step credential.
 -- Remove srun --max-launch-time option. The option has not been functional
    since Slurm version 2.0.
 -- Add sockets and cores to TaskPluginParams' autobind option.
 -- Added LaunchParameters configuration parameter. Have srun command test
    locally for the executable file if LaunchParameters=test_exec or the
    environment variable SLURM_TEST_EXEC is set. Without this an invalid
    command will generate one error message per task launched.
 -- Fix the slurm /etc/init.d script to return 0 upon stopping the
    daemons and return 1 in case of failure.
 -- Add the ability for a compute node to be allocated to multiple jobs, but
    restricted to a single user. Added "--exclusive=user" option to salloc,
    sbatch and srun commands. Added "owner" field to node record, visible using
    the scontrol and sview commands. Added new partition configuration parameter
    "ExclusiveUser=yes|no".

* Changes in Slurm 15.08.0pre2
==============================
 -- Add the environment variables SLURM_JOB_ACCOUNT, SLURM_JOB_QOS
    and SLURM_JOB_RESERVATION in the batch/srun jobs.
 -- Add sview burst buffer display.
 -- Properly enforce partition Shared=YES option. Previously oversubscribing
    resources required gang scheduling to be configured.
 -- Enable per-partition gang scheduling resource resolution (e.g. the partition
    can have SelectTypeParameters=CR_CORE, while the global value is CR_SOCKET).
 -- Make it so a newer version of a slurmstepd can talk to an older srun.
    allocation. Nodes could have been added while waiting for an allocation.
 -- Expanded --cpu-freq parameters to include min-max:governor specifications.
    --cpu-freq now supported on salloc and sbatch.
 -- Add support for optimized job allocations with respect to SGI Hypercube
    topology.
    NOTE: Only supported with select/linear plugin.
    NOTE: The program contribs/sgi/netloc_to_topology can be used to build
    Slurm's topology.conf file.
 -- Remove 64k validation of incoming RPC nodelist size. Validated at 64MB
    when unpacking.
 -- In slurmstepd() add the user primary group if it is not part of the
    groups sent from the client.
 -- Added BurstBuffer field to advanced reservations.
 -- For advanced reservation, replace flag "License_only" with flag "Any_Nodes".
    It can be used to indicate the an advanced reservation resources (licenses
    and/or burst buffers) can be used with any compute nodes.
 -- Allow users to specify the srun --resv-ports as 0 in which case no ports
    will be reserved. The default behaviour is to allocate one port per task.
 -- Interpret a partition configuration of "Nodes=ALL" in slurm.conf as
    including all nodes defined in the cluster.
 -- Added new configuration parameters PowerParameters and PowerPlugin.
 -- Added power management plugin infrastructure.
 -- If job already exceeded one of its QOS/Accounting limits do not
    return error if user modifies QOS unrelated job settings.
 -- Added DebugFlags value of "Power".
 -- When caching user ids of AllowGroups use both getgrnam_r() and getgrent_r()
    then remove eventual duplicate entries.
 -- Remove rpm dependency between slurm-pam and slurm-devel.
 -- Remove support for the XCPU (cluster management) package.
 -- Add Slurmdb::jobs_get() interface to perl api.
 -- Performance improvement when sending data from srun to stepds when
    processing fencing.
 -- Add the feature to specify arbitrary field separator when running
    sacct -p or sacct -P. The command line option is --separator.
 -- Introduce slurm.conf parameter to use Proportional Set Size (PSS) instead
    of RSS to determinate the memory footprint of a job.
    Add an slurm.conf option not to kill jobs that is over memory limit.
 -- Add job submission command options: --sicp (available for inter-cluster
    dependencies) and --power (specify power management options) to salloc,
    sbatch, and srun commands.
 -- Add DebugFlags option of SICP (inter-cluster option logging).
 -- In order to support inter-cluster job dependencies, the MaxJobID
    configuration parameter default value has been reduced from 4,294,901,760
    to 2,147,418,112 and it's maximum value is now 2,147,463,647.
    ANY JOBS WITH A JOB ID ABOVE 2,147,463,647 WILL BE PURGED WHEN SLURM IS
    UPGRADED FROM AN OLDER VERSION!
 -- Add QOS name to the output of a partition in squeue/scontrol/sview/smap.

* Changes in Slurm 15.08.0pre1
==============================
 -- Add sbcast support for file transfer to resources allocated to a job step
    rather than a job allocation.
 -- Change structures with association in them to assoc to save space.
 -- Add support for job dependencies jointed with OR operator (e.g.
    "--depend=afterok:123?afternotok:124").
 -- Add "--bb" (burst buffer specification) option to salloc, sbatch, and srun.
 -- Added configuration parameters BurstBufferParameters and BurstBufferType.
 -- Added burst_buffer plugin infrastructure (needs many more functions).
 -- Make it so when the fanout logic comes across a node that is down we abandon
    the tree to avoid worst case scenarios when the entire branch is down and
    we have to try each serially.
 -- Add better error reporting of invalid partitions at submission time.
 -- Move will-run test for multiple clusters from the sbatch code into the API
    so that it can be used with DRMAA.
 -- If a non-exclusive allocation requests --hint=nomultithread on a
    CR_CORE/SOCKET system lay out tasks correctly.
 -- Avoid including unused CPUs in a job's allocation when cores or sockets are
    allocated.
 -- Added new job state of STOPPED indicating processes have been stopped with a
    SIGSTOP (using scancel or sview), but retain its allocated CPUs. Job state
    returns to RUNNING when SIGCONT is sent (also using scancel or sview).
 -- Added EioTimeout parameter to slurm.conf. It is the number of seconds srun
    waits for slurmstepd to close the TCP/IP connection used to relay data
    between the user application and srun when the user application terminates.
 -- Remove slurmctld/dynalloc plugin as the work was never completed, so it is
    not worth the effort of continued support at this time.
 -- Remove DynAllocPort configuration parameter.
 -- Add advance reservation flag of "replace" that causes allocated resources
    to be replaced with idle resources. This maintains a pool of available
    resources that maintains a constant size (to the extent possible).
 -- Added SchedulerParameters option of "bf_busy_nodes". When selecting
    resources for pending jobs to reserve for future execution (i.e. the job
    can not be started immediately), then preferentially select nodes that are
    in use. This will tend to leave currently idle resources available for
    backfilling longer running jobs, but may result in allocations having less
    than optimal network topology. This option is currently only supported by
    the select/cons_res plugin.
 -- Permit "SuspendTime=NONE" as slurm.conf value rather than only a numeric
    value to match "scontrol show config" output.
 -- Add the 'scontrol show cache' command which displays the associations
    in slurmctld.
 -- Test more frequently for node boot completion before starting a job.
    Provides better responsiveness.
 -- Fix PMI2 singleton initialization.
 -- Permit PreemptType=qos and PreemptMode=suspend,gang to be used together.
    A high-priority QOS job will now oversubscribe resources and gang schedule,
    but only if there are insufficient resources for the job to be started
    without preemption. NOTE: That with PreemptType=qos, the partition's
    Shared=FORCE:# configuration option will permit one job more per resource
    to be run than than specified, but only if started by preemption.
 -- Remove the CR_ALLOCATE_FULL_SOCKET configuration option.  It is now the
    default.
 -- Fix a race condition in PMI2 when fencing counters can be out of sync.
 -- Increase the MAX_PACK_MEM_LEN define to avoid PMI2 failure when fencing
    with large amount of ranks.
 -- Add QOS option to a partition.  This will allow a partition to have
    all the limits a QOS has.  If a limit is set in both QOS the partition
    QOS will override the job's QOS unless the job's QOS has the
    OverPartQOS flag set.
 -- The task_dist_states variable has been split into "flags" and "base"
    components. Added SLURM_DIST_PACK_NODES and SLURM_DIST_NO_PACK_NODES values
    to give user greater control over task distribution. The srun --dist options
    has been modified to accept a "Pack" and "NoPack" option. These options can
    be used to override the CR_PACK_NODE configuration option.

* Changes in Slurm 14.11.12
===========================
 -- Correct dependency formatting to print array task ids if set.
 -- Fix for configuration of "AuthType=munge" and "AuthInfo=socket=..." with
    alternate munge socket path.
 -- BGQ - Remove redeclaration of job_read_lock.
 -- BGQ - Tighter locks around structures when nodes/cables change state.
 -- Fix job array formatting to allow return [0-100:2] display for arrays with
    step functions rather than [0,2,4,6,8,...] .
 -- Associations - prevent hash table corruption if uid initially unset for
    a user, which can cause slurmctld to crash if that user is deleted.
 -- Add cast to memory limit calculation to prevent integer overflow for
    very large memory values.
 -- Fix test cases to have proper int return signature.

* Changes in Slurm 14.11.11
===========================
 -- Fix systemd's slurmd service from killing slurmstepds on shutdown.
 -- Fix the qstat wrapper when user is removed from the system but still
    has running jobs.
 -- Log the request to terminate a job at info level if DebugFlags includes
    the Steps keyword.
 -- Fix potential memory corruption in _slurm_rpc_epilog_complete as well as
    _slurm_rpc_complete_job_allocation.
 -- Fix incorrectly sized buffer used by jobid2str which will cause buffer
    overflow in slurmctld. (Bug 2295.)

* Changes in Slurm 14.11.10
===========================
 -- Fix truncation of job reason in squeue.
 -- If a node is in DOWN or DRAIN state, leave it unavailable for allocation
    when powered down.
 -- Update the slurm.conf man page documenting better nohold_on_prolog_fail
    variable.
 -- Don't trucate task ID information in "squeue --array/-r" or "sview".
 -- Fix a bug which caused scontrol to core dump when releasing or
    holding a job by name.
 -- Fix unit conversion bug in slurmd which caused wrong memory calculation
    for cgroups.
 -- Fix issue with GRES in steps so that if you have multiple exclusive steps
    and you use all the GRES up instead of reporting the configuration isn't
    available you hold the requesting step until the GRES is available.
 -- Fix slurmdbd backup to use DbdAddr when contacting the primary.
 -- Fix error in MPI documentation.
 -- Fix to handle arrays with respect to number of jobs submitted.  Previously
    only 1 job was accounted (against MaxSubmitJob) for when an array was
    submitted.
 -- Correct counting for job array limits, job count limit underflow possible
    when master cancellation of master job record.
 -- For pending jobs have sacct print 0 for nnodes instead of the bogus 2.
 -- Fix for tracking node state when jobs that have been allocated exclusive
    access to nodes (i.e. entire nodes) and later relinquish some nodes. Nodes
    would previously appear partly allocated and prevent use by other jobs.
 -- Fix updating job in db after extending job's timelimit past partition's
    timelimit.
 -- Fix srun -I<timeout> from flooding the controller with step create requests.
 -- Requeue/hold batch job launch request if job already running (possible if
    node went to DOWN state, but jobs remained active).
 -- If a job's CPUs/task ratio is increased due to configured MaxMemPerCPU,
    then increase it's allocated CPU count in order to enforce CPU limits.
 -- Don't mark powered down node as not responding. This could be triggered by
    race condition of the node suspend and ping logic.
 -- Don't requeue RPC going out from slurmctld to DOWN nodes (can generate
    repeating communication errors).
 -- Propagate sbatch "--dist=plane=#" option to srun.
 -- Fix sacct to not return all jobs if the -j option is given with a trailing
    ','.
 -- Permit job_submit plugin to set a job's priority.
 -- Fix occasional srun segfault.
 -- Fix issue with sacct, printing 0_0 for array's that had finished in the
    database but the start record hadn't made it yet.
 -- Fix sacct -j, (nothing but a comma) to not return all jobs.
 -- Prevent slurmstepd from core dumping if /proc/<pid>/stat has
    unexpected format.

* Changes in Slurm 14.11.9
==========================
 -- Correct "sdiag" backfill cycle time calculation if it yields locks. A
    microsecond value was being treated as a second value resulting in an
    overflow in the calcuation.
 -- Fix segfault when updating timelimit on jobarray task.
 -- Fix to job array update logic that can result in a task ID of 4294967294.
 -- Fix of job array update, previous logic could fail to update some tasks
    of a job array for some fields.
 -- CRAY - Fix seg fault if a blade is replaced and slurmctld is restarted.
 -- Fix plane distribution to allocate in blocks rather than cyclically.
 -- squeue - Remove newline from job array ID value printed.
 -- squeue - Enable filtering for job state SPECIAL_EXIT.
 -- Prevent job array task ID being inappropriately set to NO_VAL.
 -- MYSQL - Make it so you don't have to restart the slurmctld
    to gain the correct limit when a parent account is root and you
    remove a subaccount's limit which exists on the parent account.
 -- MYSQL - Close chance of setting the wrong limit on an association
    when removing a limit from an association on multiple clusters
    at the same time.
 -- MYSQL - Fix minor memory leak when modifying an association but no
    change was made.
 -- srun command line of either --mem or --mem-per-cpu will override both the
    SLURM_MEM_PER_CPU and SLURM_MEM_PER_NODE environment variables.
 -- Prevent slurmctld abort on update of advanced reservation that contains no
    nodes.
 -- ALPS - Revert commit 2c95e2d22 which also removes commit 2e2de6a4 allowing
    cray with the SubAllocate option to work as it did with 2.5.
 -- Properly parse CPU frequency data on POWER systems.
 -- Correct sacct.a man pages describing -i option.
 -- Capture salloc/srun information in sdiag statistics.
 -- Fix bug in node selection with topology optimization.
 -- Don't set distribution when srun requests 0 memory.
 -- Read in correct number of nodes from SLURM_HOSTFILE when specifying nodes
    and --distribution=arbitrary.
 -- Fix segfault in Bluegene setups where RebootQOSList is defined in
    bluegene.conf and accounting is not setup.
 -- MYSQL - Update mod_time when updating a start job record or adding one.
 -- MYSQL - Fix issue where if an association id ever changes on at least a
    portion of a job array is pending after it's initial start in the
    database it could create another row for the remain array instead
    of using the already existing row.
 -- Fix scheduling anomaly with job arrays submitted to multiple partitions,
    jobs could be started out of priority order.
 -- If a host has suspened jobs do not reboot it. Reboot only hosts
    with no jobs in any state.
 -- ALPS - Fix issue when using --exclusive flag on srun to do the correct
    thing (-F exclusive) instead of -F share.
 -- Fix various memory leaks in the Perl API.
 -- Fix a bug in the controller which display jobs in CF state as RUNNING.
 -- Preserve advanced _core_ reservation when nodes added/removed/resized on
    slurmctld restart. Rebuild core_bitmap as needed.
 -- Fix for non-standard Munge port location for srun/pmi use.
 -- Fix gang scheduling/preemption issue that could cancel job at startup.
 -- Fix a bug in squeue which prevented squeue -tPD to print array jobs.
 -- Sort job arrays in job queue according to array_task_id when priorities are
    equal.
 -- Fix segfault in sreport when there was no response from the dbd.
 -- ALPS - Fix compile to not link against -ljob and -lexpat with every lib
    or binary.
 -- Fix testing for CR_Memory when CR_Memory and CR_ONE_TASK_PER_CORE are used
    with select/linear.
 -- MySQL - Fix minor memory leak if a connection ever goes away whist using it.
 -- ALPS - Make it so srun --hint=nomultithread works correctly.
 -- Prevent job array task ID from being reported as NO_VAL if last task in the
    array gets requeued.
 -- Fix some potential deadlock issues when state files don't exist in the
    association manager.
 -- Correct RebootProgram logic when executed outside of a maintenance
    reservation.
 -- Requeue job if possible when slurmstepd aborts.

* Changes in Slurm 14.11.8
==========================
 -- Eliminate need for user to set user_id on job_update calls.
 -- Correct list of unavailable nodes reported in a job's "reason" field when
    that job can not start.
 -- Map job --mem-per-cpu=0 to --mem=0.
 -- Fix squeue -o %m and %d unit conversion to Megabytes.
 -- Fix issue with incorrect time calculation in the priority plugin when
    a job runs past it's time limit.
 -- Prevent users from setting job's partition to an invalid partition.
 -- Fix sreport core dump when requesting
    'job SizesByAccount grouping=individual'.
 -- select/linear: Correct count of CPUs allocated to job on system with
    hyperthreads.
 -- Fix race condition where last array task might not get updated in the db.
 -- CRAY - Remove libpmi from rpm install
 -- Fix squeue -o %X output to correctly handle NO_VAL and suffix.
 -- When deleting a job from the system set the job_id to 0 to avoid memory
    corruption if thread uses the pointer basing validity off the id.
 -- Fix issue where sbatch would set ntasks-per-node to 0 making any srun
    afterward cause a divide by zero error.
 -- switch/cray: Refine logic to set PMI_CRAY_NO_SMP_ENV environment variable.
 -- When sacctmgr loads archives with version less than 14.11 set the array
    task id to NO_VAL, so sacct can display the job ids correctly.
 -- When using memory cgroup if a task uses more memory than requested
    the failures are logged into memory.failcnt count file by cgroup
    and the user is notified by slurmstepd about it.
 -- Fix scheduling inconsistency with GRES bound to specific CPUs.
 -- If user belongs to a group which has split entries in /etc/group
    search for its username in all groups.
 -- Do not consider nodes explicitly powered up as DOWN with reason of "Node
    unexpected rebooted".
 -- Use correct slurmd spooldir when creating cpu-frequency locks.
 -- Note that TICKET_BASED fairshare will be deprecated in the future. Consider
    using the FAIR_TREE algorithm instead.
 -- Set job's reason to BadConstaints when job can't run on any node.
 -- Prevent abort on update of reservation with no nodes (licenses only).
 -- Prevent slurmctld from dumping core if job_resrcs is missing in the
    job data structure.
 -- Fix squeue to print array task ids according to man page when
    SLURM_BITSTR_LEN is defined in the environment.
 -- In squeue, sort jobs based on array job ID if available.
 -- Fix the calculation of job energy by not including the NO_VAL values.
 -- Advanced reservation fixes: enable update of bluegene reservation, avoid
    abort on multi-core reservations.
 -- Set the totalview_stepid to the value of the job step instead of NO_VAL.
 -- Fix slurmdbd core dump if the daemon does not have connection with
    the database.
 -- Display error message when attempting to modify priority of a held job.
 -- Backfill scheduler: The configured backfill_interval value (default 30
    seconds) is now interpretted as a maximum run time for the backfill
    scheduler. Once reached, the scheduler will build a new job queue and
    start over, even if not all jobs have been tested.
 -- Backfill scheduler now considers OverTimeLimit and KillWait configuration
    parameters to estimate when running jobs will exit.
 -- Correct task layout with CR_Pack_Node option and more than 1 CPU per task.
 -- Fix the scontrol man page describing the release argument.
 -- When job QOS is modified, do so before attempting to change partition in
    order to validate the partition's Allow/DenyQOS parameter.

* Changes in Slurm 14.11.7
==========================
 -- Initialize some variables used with the srun --no-alloc option that may
    cause random failures.
 -- Add SchedulerParameters option of sched_min_interval that controls the
    minimum time interval between any job scheduling action. The default value
    is zero (disabled).
 -- Change default SchedulerParameters=max_sched_time from 4 seconds to 2.
 -- Refactor scancel so that all pending jobs are cancelled before starting
    cancellation of running jobs. Otherwise they happen in parallel and the
    pending jobs can be scheduled on resources as the running jobs are being
    cancelled.
 -- ALPS - Add new cray.conf variable NoAPIDSignalOnKill.  When set to yes this
    will make it so the slurmctld will not signal the apid's in a batch job.
    Instead it relies on the rpc coming from the slurmctld to kill the job to
    end things correctly.
 -- ALPS - Have the slurmstepd running a batch job wait for an ALPS release
    before ending the job.
 -- Initialize variables in consumable resource plugin to prevent core dump.
 -- Fix scancel bug which could return an error on attempt to signal a job step.
 -- In slurmctld communication agent, make the thread timeout be the configured
    value of MessageTimeout rather than 30 seconds.
 -- sshare -U/--Users only flag was used uninitialized.
 -- Cray systems, add "plugstack.conf.template" sample SPANK configuration file.
 -- BLUEGENE - Set DB2NOEXITLIST when starting the slurmctld daemon to avoid
    random crashing in db2 when the slurmctld is exiting.
 -- Make full node reservations display correctly the core count instead of
    cpu count.
 -- Preserve original errno on execve() failure in task plugin.
 -- Add SLURM_JOB_NAME env variable to an salloc's environment.
 -- Overwrite SLURM_JOB_NAME in an srun when it gets an allocation.
 -- Make sure each job has a wckey if that is something that is tracked.
 -- Make sure old step data is cleared when job is requeued.
 -- Load libtinfo as needed when building ncurses tools.
 -- Fix small memory leak in backup controller.
 -- Fix segfault when backup controller takes control for second time.
 -- Cray - Fix backup controller running native Slurm.
 -- Provide prototypes for init_setproctitle()/fini_setproctitle on NetBSD.
 -- Add configuration test to find out the full path to su command.
 -- preempt/job_prio plugin: Fix for possible infinite loop when identifying
    preemptable jobs.
 -- preempt/job_prio plugin: Implement the concept of Warm-up Time here. Use
    the QoS GraceTime as the amount of time to wait before preempting.
    Basically, skip preemption if your time is not up.
 -- Make srun wait KillWait time when a task is cancelled.
 -- switch/cray: Revert logic added to 14.11.6 that set "PMI_CRAY_NO_SMP_ENV=1"
    if CR_PACK_NODES is configured.

* Changes in Slurm 14.11.6
==========================
 -- If SchedulerParameters value of bf_min_age_reserve is configured, then
    a newly submitted job can start immediately even if there is a higher
    priority non-runnable job which has been waiting for less time than
    bf_min_age_reserve.
 -- qsub wrapper modified to export "all" with -V option
 -- RequeueExit and RequeueExitHold configuration parameters modified to accept
    numeric ranges. For example "RequeueExit=1,2,3,4" and "RequeueExit=1-4" are
    equivalent.
 -- Correct the job array specification parser to accept brackets in job array
    expression (e.g. "123_[4,7-9]").
 -- Fix for misleading job submit failure errors sent to users. Previous error
    could indicate why specific nodes could not be used (e.g. too small memory)
    when other nodes could be used, but were not for another reason.
 -- Fix squeue --array to display correctly the array elements when the
    % separator is specified at the array submission time.
 -- Fix priority from not being calculated correctly due to memory issues.
 -- Fix a transient pending reason 'JobId=job_id has invalid QOS'.
 -- A non-administrator change to job priority will not be persistent except
    for holding the job. User's wanting to change a job priority on a persistent
    basis should reset it's "nice" value.
 -- Print buffer sizes as unsigned values when failed to pack messages.
 -- Fix race condition where sprio would print factors without weights applied.
 -- Document the sacct option JobIDRaw which for arrays prints the jobid instead
    of the arrayTaskId.
 -- Allow users to modify MinCPUsNode, MinMemoryNode and MinTmpDiskNode of
    their own jobs.
 -- Increase the jobid print field in SQUEUE_FORMAT in
    opt_modulefiles_slurm.in.
 -- Enable compiling without optimizations and with debugging symbols by
    default. Disable this by configuring with --disable-debug.
 -- job_submit/lua plugin: Add mail_type and mail_user fields.
 -- Correct output message from sshare.
 -- Use standard statvfs(2) syscall if available, in preference to
    non-standard statfs.
 -- Add a new option -U/--Users to sshare to display only users
    information, parent and ancestors are not printed.
 -- Purge 50000 records at a time so that locks can released periodically.
 -- Fix potentially uninitialized variables
 -- ALPS - Fix issue where a frontend node could become unresponsive and never
    added back into the system.
 -- Gate epilog complete messages as done with other messages
 -- If we have more than a certain number of agents (50) wait longer when gating
    rpcs.
 -- FrontEnd - ping non-responding or down nodes.
 -- switch/cray: If CR_PACK_NODES is configured, then set the environment
    variable "PMI_CRAY_NO_SMP_ENV=1"
 -- Fix invalid memory reference in SlurmDBD when putting a node up.
 -- Allow opening of plugstack.conf even when a symlink.
 -- Fix scontrol reboot so that rebooted nodes will not be set down with reason
    'Node xyz unexpectedly rebooted' but will be correctly put back to service.
 -- CRAY - Throttle the post NHC operations as to not hog the job write lock
    if many steps/jobs finish at once.
 -- Disable changes to GRES count while jobs are running on the node.
 -- CRAY - Fix issue with scontrol reconfig.
 -- slurmd: Remove wrong reporting of "Error reading step  ... memory limit".
    The logic was treating success as an error.
 -- Eliminate "Node ping apparently hung" error messages.
 -- Fix average CPU frequency calculation.
 -- When allocating resources with resolution of sockets, charge the job for all
    CPUs on allocated sockets rather than just the CPUs on used cores.
 -- Prevent slurmdbd error if cluster added or removed while rollup in progress.
    Removing a cluster can cause slurmdbd to abort. Adding a cluster can cause
    the slurmdbd rollup to hang.
 -- sview - When right clicking on a tab make sure we don't display the page
    list, but only the column list.
 -- FRONTEND - If doing a clean start make sure the nodes are brought up in the
    database.
 -- MySQL - Fix issue when using the TrackSlurmctldDown and nodes are down at
    the same time, don't double bill the down time.
 -- MySQL - Various memory leak fixes.
 -- sreport - Fix Energy displays
 -- Fix node manager logic to keep unexpectedly rebooted node in state
    NODE_STATE_DOWN even if already down when rebooted.
 -- Fix for array jobs submitted to multiple partitions not starting.
 -- CRAY - Enable ALPs mpp compatibility code in sbatch for native Slurm.
 -- ALPS - Move basil_inventory to less confusing function.
 -- Add SchedulerParameters option of "sched_max_job_start="  to limit the
    number of jobs that can be started in any single execution of the main
    scheduling logic.
 -- Fixed compiler warnings generated by gcc version >= 4.6.
 -- sbatch to stop parsing script for "#SBATCH" directives after first command,
    which matches the documentation.
 -- Overwrite the SLURM_JOB_NAME in sbatch if already exist in the environment
    and use the one specified on the command line --job-name.
 -- Remove xmalloc_nz from unpack functions.  If the unpack ever failed the
    free afterwards would not have zeroed out memory on the variables that
    didn't get unpacked.
 -- Improve database interaction from controller.
 -- Fix for data shift when loading job archives.
 -- ALPS - Added new SchedulerParameters=inventory_interval to specify how
    often an inventory request is handled.
 -- ALPS - Don't run a release on a reservation on the slurmctld for a batch
    job.  This is already handled on the stepd when the script finishes.

* Changes in Slurm 14.11.5
==========================
 -- Correct the squeue command taking into account that a node can
    have NULL name if it is not in DNS but still in slurm.conf.
 -- Fix slurmdbd regression which would cause a segfault when a node is set
    down with no reason.
 -- BGQ - Fix issue with job arrays not being handled correctly
    in the runjob_mux plugin.
 -- Print FAIR_TREE, if configured, in "scontrol show config" output for
    PriorityFlags.
 -- Add SLURM_JOB_GPUS environment variable to those available in the Prolog.
 -- Load lua-5.2 library if using lua5.2 for lua job submit plugin.
 -- GRES logic: Prevent bad node_offset due to not preserving no_consume flag.
 -- Fix wrong variables used in the wrapper functions needed for systems that
    don't support strong_alias
 -- Fix code for apple computers SOL_TCP is not defined
 -- Cray/BASIL - Check for mysql credentials in /root/.my.cnf.
 -- Fix sprio showing wrong priority for job arrays until priority is
    recalculated.
 -- Account to batch step all CPUs that are allocated to a job not
    just one since the batch step has access to all CPUs like other steps.
 -- Fix job getting EligibleTime set before meeting dependency requirements.
 -- Correct the initialization of QOS MinCPUs per job limit.
 -- Set the debug level of information messages in cgroup plugin to debug2.
 -- For job running under a debugger, if the exec of the task fails, then
    cancel its I/O and abort immediately rather than waiting 60 seconds for
    I/O timeout.
 -- Fix associations not getting default qos set until after a restart.
 -- Set the value of total_cpus not to be zero before invoking
    acct_policy_job_runnable_post_select.
 -- MySQL - When requesting cluster resources, only return resources for the
    cluster(s) requested.
 -- Add TaskPluginParam=autobind=threads option to set a default binding in the
    case that "auto binding" doesn't find a match.
 -- Introduce a new SchedulerParameters variable nohold_on_prolog_fail.
    If configured don't requeue jobs on hold is a Prolog fails.
 -- Make it so sched_params isn't read over and over when an epilog complete
    message comes in
 -- Fix squeue -L <licenses> not filtering out jobs with licenses.
 -- Changed the implementation of xcpuinfo_abs_to_mac() be identical
    _abs_to_mac() to fix CPUs allocation using cpuset cgroup.
 -- Improve the explanation of the unbuffered feature in the
    srun man page.
 -- Make taskplugin=cgroup work for core spec.  needed to have task/cgroup
    before.
 -- Fix reports not using the month usage table.
 -- BGQ - Sanity check given for translating small blocks into slurm bg_records.
 -- Fix bug preventing the requeue/hold or requeue/special_exit of job from the
    completing state.
 -- Cray - Fix for launching batch step within an existing job allocation.
 -- Cray - Add ALPS_APP_ID_ENV environment variable.
 -- Increase maximum MaxArraySize configuration parameter value from 1,000,001
    to 4,000,001.
 -- Added new SchedulerParameters value of bf_min_age_reserve. The backfill
    scheduler will not reserve resources for pending jobs until they have
    been pending for at least the specified number of seconds. This can be
    valuable if jobs lack time limits or all time limits have the same value.
 -- Fix support for --mem=0 (all memory of a node) with select/cons_res plugin.
 -- Fix bug that can permit someone to kill job array belonging to another user.
 -- Don't set the default partition on a license only reservation.
 -- Show a NodeCnt=0, instead of NO_VAL, in "scontrol show res" for a license
    only reservation.
 -- BGQ - When using static small blocks make sure when clearing the job the
    block is set up to it's original state.
 -- Start job allocation using lowest numbered sockets for block task
    distribution for consistency with cyclic distribution.

* Changes in Slurm 14.11.4
==========================
 -- Make sure assoc_mgr locks are initialized correctly.
 -- Correct check of enforcement when filling in an association.
 -- Make sacctmgr print out classification correctly for clusters.
 -- Add array_task_str to the perlapi job info.
 -- Fix for slurmctld abort with GRES types configured and no CPU binding.
 -- Fix for GRES scheduling where count > 1 per topology type (or GRES types).
 -- Make CR_ONE_TASK_PER_CORE work correctly with task/affinity.
 -- job_submit/pbs - Fix possible deadlock.
 -- job_submit/lua - Add "alloc_node" to job information available.
 -- Fix memory leak in mysql accounting when usage rollup happens.
 -- If users specify ALL together with other variables using the
    --export sbatch/srun command line option, propagate the users'
    environ to the execution side.
 -- Fix job array scheduling anomaly that can stop scheduling of valid tasks.
 -- Fix perl api tests for libslurmdb to work correctly.
 -- Remove some misleading logs related to non-consumable GRES.
 -- Allow --ignore-pbs to take effect when read as an #SBATCH argument.
 -- Fix Slurmdb::clusters_get() in perl api from not returning information.
 -- Fix TaskPluginParam=Cpusets from logging error message about not being able
    to remove cpuset dir which was already removed by the release_agent.
 -- Fix sorting by time left in squeue.
 -- Fix the file name substitution for job stderr when %A, %a %j and %u
    are specified.
 -- Remove minor warning when compiling slurmstepd.
 -- Fix database resources so they can add new clusters to them after they have
    initially been added.
 -- Use the slurm_getpwuid_r wrapper of getpwuid_r to handle possible
    interrupts.
 -- Correct the scontrol man page and command listing which node states can
    be set by the command.
 -- Stop sacct from printing non-existent stat information for
    Front End systems.
 -- Correct srun and acct_gather.conf man pages, mention Filesystem instead
    of Lustre.
 -- When a job using multiple partition starts send to slurmdbd only
    the partition in which the job runs.
 -- ALPS - Fix depth for MemoryAllocation in BASIL with CLE 5.2.3.
 -- Fix assoc_mgr hash to deal with users that don't have a uid yet when making
    reservations.
 -- When a job uses multiple partition set the environment variable
    SLURM_JOB_PARTITION to be the one in which the job started.
 -- Print spurious message about the absence of cgroup.conf at log level debug2
    instead of info.
 -- Enable CUDA v7.0+ use with a Slurm configuration of TaskPlugin=task/cgroup
    ConstrainDevices=yes (in cgroup.conf). With that configuration
    CUDA_VISIBLE_DEVICES will start at 0 rather than the device number.
 -- Fix job array logic that can cause slurmctld to abort.
 -- Report job "shared" field properly in scontrol, squeue, and sview.
 -- If a job is requeued because of RequeueExit or RequeueExitHold sent event
    REQUEUED to slurmdbd.
 -- Fix build if hwloc is in non-standard location.
 -- Fix slurmctld job recovery logic which could cause the last task in a job
    array to be lost.
 -- Fix slurmctld initialization problem which could cause requeue of the last
    task in a job array to fail if executed prior to the slurmctld loading
    the maximum size of a job array into a variable in the job_mgr.c module.
 -- Fix fatal in controller when deleting a user association of a user which
    had been previously removed from the system.
 -- MySQL - If a node state and reason are the same on a node state change
    don't insert a new row in the event table.
 -- Fix issue with "sreport cluster AccountUtilizationByUser" when using
    PrivateData=users.
 -- Fix perlapi tests for libslurm perl module.
 -- MySQL - Fix potential issue when PrivateData=Usage and a normal user
    runs certain sreport reports.

* Changes in Slurm 14.11.3
==========================
 -- Prevent vestigial job record when canceling a pending job array record.
 -- Fixed squeue core dump.
 -- Fix job array hash table bug, could result in slurmctld infinite loop or
    invalid memory reference.
 -- In srun honor ntasks_per_node before looking at cpu count when the user
    doesn't request a number of tasks.
 -- Fix ghost job when submitting job after all jobids are exhausted.
 -- MySQL - Enhanced coordinator security checks.
 -- Fix for task/affinity if an admin configures a node for having threads
    but then sets CPUs to only represent the number of cores on the node.
 -- Make it so previous versions of salloc/srun work with newer versions
    of Slurm daemons.
 -- Avoid delay on commit for PMI rank 0 to improve performance with some
    MPI implementations.
 -- auth/munge - Correct logic to read old format AccountingStoragePass.
 -- Reset node "RESERVED" state as appropriate when deleting a maintenance
    reservation.
 -- Prevent a job manually suspended from being resumed by gang scheduler once
    free resources are available.
 -- Prevent invalid job array task ID value if a task is started using gang
    scheduling.
 -- Fixes for clean build on FreeBSD.
 -- Fix documentation bugs in slurm.conf.5. DenyAccount should be DenyAccounts.
 -- For backward compatibility with older versions of OMPI not compiled
    with --with-pmi restore the SLURM_STEP_RESV_PORTS in the job environment.
 -- Update the html documentation describing the integration with openmpi.
 -- Fix sacct when searching by nodelist.
 -- Fix cosmetic info statements when dealing with a job array task instead of
    a normal job.
 -- Fix segfault with job arrays.
 -- Correct the sbatch pbs parser to process -j.
 -- BGQ - Put print statement under a DebugFlag.  This was just an oversight.
 -- BLUEGENE - Remove check that would erroneously remove the CONFIGURING
    flag from a job while the job is waiting for a block to boot.
 -- Fix segfault in slurmstepd when job exceeded memory limit.
 -- Fix race condition that could start a job that is dependent upon a job array
    before all tasks of that job array complete.
 -- PMI2 race condition fix.

* Changes in Slurm 14.11.2
==========================
 -- Fix Centos5 compile errors.
 -- Fix issue with association hash not getting the correct index which
    could result in seg fault.
 -- Fix salloc/sbatch -B segfault.
 -- Avoid huge malloc if GRES configured with "Type" and huge "Count".
 -- Fix jobs from starting in overlapping reservations that won't finish before
    a "maint" reservation begins.
 -- When node gets drained while in state mixed display its status as draining
    in sinfo output.
 -- Allow priority/multifactor to work with sched/wiki(2) if all priorities
    have no weight.  This allows for association and QOS decay limits to work.
 -- Fix "squeue --start" to override SQUEUE_FORMAT env variable.
 -- Fix scancel to be able to cancel multiple jobs that are space delimited.
 -- Log Cray MPI job calling exit() without mpi_fini(), but do not treat it as
    a fatal error. This partially reverts logic added in version 14.03.9.
 -- sview - Fix displaying of suspended steps elapsed times.
 -- Increase number of messages that get cached before throwing them away
    when the DBD is down.
 -- Fix jobs from starting in overlapping reservations that won't finish before
    a "maint" reservation begins.
 -- Restore GRES functionality with select/linear plugin. It was broken in
    version  14.03.10.
 -- Fix bug with GRES having multiple types that can cause slurmctld abort.
 -- Fix squeue issue with not recognizing "localhost" in --nodelist option.
 -- Make sure the bitstrings for a partitions Allow/DenyQOS are up to date
    when running from cache.
 -- Add smap support for job arrays and larger job ID values.
 -- Fix possible race condition when attempting to use QOS on a system running
    accounting_storage/filetxt.
 -- Fix issue with accounting_storage/filetxt and job arrays not being printed
    correctly.
 -- In proctrack/linuxproc and proctrack/pgid, check the result of strtol()
    for error condition rather than errno, which might have a vestigial error
    code.
 -- Improve information recording for jobs deferred due to advanced
    reservation.
 -- Exports eio_new_initial_obj to the plugins and initialize kvs_seq on
    mpi/pmi2 setup to support launching.

* Changes in Slurm 14.11.1
==========================
 -- Get libs correct when doing the xtree/xhash make check.
 -- Update xhash/tree make check to work correctly with current code.
 -- Remove the reference 'experimental' for the jobacct_gather/cgroup
    plugin.
 -- Add QOS manipulation examples to the qos.html documentation page.
 -- If 'squeue -w node_name' specifies an unknown host name print
    an error message and return 1.
 -- Fix race condition in job_submit plugin logic that could cause slurmctld to
    deadlock.
 -- Job wait reason of "ReqNodeNotAvail" expanded to identify unavailable nodes
    (e.g. "ReqNodeNotAvail(Unavailable:tux[3-6])").

* Changes in Slurm 14.11.0
==========================
 -- ALPS - Fix issue with core_spec warning.
 -- Allow multiple partitions to be specified in sinfo -p.
 -- Install the service files in /usr/lib/systemd/system.
 -- MYSQL - Add id_array_job and id_resv keys to $CLUSTER_job_table.  THIS
    COULD TAKE A WHILE TO CREATE THE KEYS SO BE PATIENT.
 -- CRAY - Resize bitmaps on a restart and find we have more blades
    than before.
 -- Add new eio API function for removing unused connections.
 -- ALPS - Fix issue where batch allocations weren't correctly confirmed or
    released.
 -- Define DEFAULT_MAX_TASKS_PER_NODE based on MAX_TASKS_PER_NODE from
    slurm.h as per documentation.
 -- Update the FAQ about relocating slurmctld.
 -- In the memory cgroup enable memory.use_hierarchy in the cgroup root.
 -- Export eio.c functions for use by MPI/PMI2.
 -- Add SLURM_CLUSTER_NAME to job environment.

* Changes in Slurm 14.11.0rc3
=============================
 -- Allow envs to override autotools binaries in autogen.sh
 -- Added system services files.
 -- If the jobs pends with DependencyNeverSatisfied keep it pending even after
    the job which it was depending upon was cleaned.
 -- Let operators (in addition to user root and SlurmUser) see job script for
    other user's jobs.
 -- Perl API modified to return node state of MIXED rather than ALLOCATED if
    only some CPUs allocated.
 -- Double Munge connect retry timeout from 1 to 2 seconds.
 -- sview - Remove unneeded code that was resolved globally in commit
    98e24b0dedc.
 -- Collect and report the accounting of the batch step and its children.
 -- Add configure checks for faccessat and eaccess, and make use of one of
    them if available.
 -- Make configure --enable-developer also set --enable-debug
 -- Introduce a SchedulerParameters variable kill_invalid_depend, if set
    then jobs pending with invalid dependency are going to be terminated.
 -- Move spank_user_task() call in slurmstepd after the task_g_pre_launch()
    so that the task affinity information is available to spank.
 -- Make /etc/init.d/slurm script return value 3 when the daemon is
    not running. This is required by Linux Standard Base Core
    Specification 3.1

* Changes in Slurm 14.11.0rc2
=============================
 -- Logs for jobs which are explicitly requeued will say so rather than saying
    that a node in their allocation failed.
 -- Updated the documentation about the remote licenses served by
    the Slurm database.
 -- Insure that slurm_spank_exit() is only called once from srun.
 -- Change the signature of net_set_low_water() to use 4 bytes instead of 8.
 -- Export working_cluster_rec in libslurmdb.so as well as move some function
    definitions needed for drmaa.
 -- If using cons_res or serial cause a fatal in the plugin instead of causing
    the SelectTypeParameters to magically set to CR_CPU.
 -- Enhance task/affinity auto binding to consider tasks * cpus-per-task.
 -- Fix regression the priority/multifactor which would cause memory corruption.
    Issue is only in rc1.
 -- Add PrivateData value of "cloud". If set, powered down nodes in the cloud
    will be visible.
 -- Sched/backfill - Eliminate clearing start_time of running jobs.
 -- Fix various backwards compatibility issues.
 -- If failed to launch a batch job, requeue it in hold.

* Changes in Slurm 14.11.0rc1
=============================
 -- When using cgroup name the batch step as step_batch instead of
    batch_4294967294
 -- Changed LEVEL_BASED priority to be "Fair_Tree"
 -- Port to NetBSD.
 -- BGQ - Add cnode based reservations.
 -- Alongside totalview_jobid implement totalview_stepid available
    to sattach.
 -- Add ability to include other files in slurm.conf based upon the ClusterName.
 -- Update strlcpy to latest upstream version.
 -- Add reservation information in the sacct and sreport output.
 -- Add job priority calculation check for overflow and fix memory leak.
 -- Add SchedulerParameters option of pack_serial_at_end to put serial jobs at
    the end of the available nodes rather than using a best fit algorithm.
 -- Allow regular users to view default sinfo output when
    privatedata=reservations is set.
 -- PrivateData=reservation modified to permit users to view the reservations
    which they have access to (rather then preventing them from seeing ANY
    reservation).
 -- job_submit/lua: Fix job_desc set field logic

* Changes in Slurm 14.11.0pre5
==============================
 -- Fix sbatch --export=ALL, it was treated by srun as a request to explicitly
    export only the environment variable named "ALL".
 -- Improve scheduling of jobs in reservations that overlap other reservations.
 -- Modify sgather to make global file systems easier to configure.
 -- Added sacctmgr reconfig to reread the slurmdbd.conf in the slurmdbd.
 -- Modify scontrol job operations to accept comma delimited list of job IDs.
    Applies to job update, hold, release, suspend, resume, requeue, and
    requeuehold operations.
 -- Refactor job_submit/lua interface. LUA FUNCTIONS NEED TO CHANGE! The
    lua script no longer needs to explicitly load meta-tables, but information
    is available directly using names slurm.reservations, slurm.jobs,
    slurm.log_info, etc. Also, the job_submit.lua script is reloaded when
    updated without restarting the slurmctld daemon.
 -- Allow users to specify --resv_ports to have value 0.
 -- Cray MPMD (Multiple-Program Multiple-Data) support completed.
 -- Added ability for "scontrol update" to references jobs by JobName (and
    filtered optionally by UserID).
 -- Add support for an advanced reservation start time that remains constant
    relative to the current time. This can be used to prevent the starting of
    longer running jobs on select nodes for maintenance purpose. See the
    reservation flag "TIME_FLOAT" for more information.
 -- Enlarge the jobid field to 18 characters in squeue output.
 -- Added "scontrol write config" option to save a copy of the current
    configuration in a file containing a time stamp.
 -- Eliminate native Cray specific port management. Native Cray systems must
    now use the MpiParams configuration parameter to specify ports to be used
    for commmunications. When upgrading Native Cray systems from version 14.03,
    all running jobs should be killed and the switch_cray_state file (in
    SaveStateLocation of the nodes where the slurmctld daemon runs) must be
    explicitly deleted.

* Changes in Slurm 14.11.0pre4
==============================
 -- Added job array data structure and removed 64k array size restriction.
 -- Added SchedulerParameters options of bf_max_job_array_resv to control how
    many tasks of a job array should have resources reserved for them.
 -- Added more validity checking of incoming job submit requests.
 -- Added srun --export option to set/export specific environment variables.
 -- Scontrol modified to print separate error messages for job arrays with
    different exit codes on the different tasks of the job array. Applies to
    job suspend and resume operations.
 -- Fix race condition in CPU frequency set with job preemption.
 -- Always call select plugin on step termination, even if the job is also
    complete.
 -- Srun executable names beginning with "." will be resolved based upon the
    working directory and path on the compute node rather than the submit node.
 -- Add node state string suffix of "$" to identify nodes in maintenance
    reservation or scheduled for reboot. This applies to scontrol, sinfo,
    and sview commands.
 -- Enable scontrol to clear a nodes's scheduled reboot by setting its state
    to "RESUME".
 -- As per sbatch and srun documentation when the --signal option is used
    signal only the steps and unless, in the case, of a batch job B is
    specified in which case signal only the batch script.
 -- Modify AuthInfo configuration parameter to accept credential lifetime
    option.
 -- Modify crypto/munge plugin to use socket and timeout specified in AuthInfo.
 -- If we have a state for a step on completion put that in the database
    instead of guessing off the exit_code.
 -- Added squeue -P/--priority option that can be used to display pending jobs
    in the same order as used by the Slurm scheduler even if jobs are submitted
    to multiple partitions (job is reported once per usable partition).
 -- Improve the pending reason description for various QOS limits. For each
    QOS limit that causes a job to be pending print its specific reason.
    For example if job pends because of GrpCpus the squeue command will
    print QOSGrpCpuLimit as pending reason.
 -- sched/backfill - Set expected start time of job submitted to multiple
    partitions to the earliest start time on any of the partitions.
 -- Introduce a MAX_BATCH_REQUEUE define that indicates how many times a job
    can be requeued upon prolog failure. When the number is reached the job
    is put on hold with reason JobHoldMaxRequeue.
 -- Add sbatch job array option to limit the number of simultaneously running
    tasks from a job array (e.g. "--array=0-15%4").
 -- Implemented a new QOS limit MinCPUs. Users running under a QOS must
    request a minimum number of CPUs which is at least MinCPUs otherwise
    their job will pend.
 -- Introduced a new pending reason WAIT_QOS_MIN_CPUS to reflect the new QOS
    limit.
 -- Job array dependency based upon state is now dependent upon the state of
    the array as a whole (e.g. afterok requires ALL tasks to complete
    sucessfully, afternotok is true if ANY tasks does not complete successfully,
    and after requires all tasks to at least be started).
 -- The srun -u/--unbuffered options set the stdout of the task launched
    by srun to be line buffered.
 -- The srun options -/--label and -u/--unbuffered can be specified together.
    This limitation has been removed.
 -- Provide sacct display of gres accounting information per job.
 -- Change the node status size from uin16_t to uint32_t.

* Changes in Slurm 14.11.0pre3
==============================
 -- Move xcpuinfo.[c|h] to the slurmd since it isn't needed anywhere else
    and will avoid the need for all the daemons to link to libhwloc.
 -- Add memory test to job_submit/partition plugin.
 -- Added new internal Slurm functions xmalloc_nz() and xrealloc_nz(), which do
    not initialize the allocated memory to zero for improved performance.
 -- Modify hostlist function to dynamically allocate buffer space for improved
    performance.
 -- In the job_submit plugin: Remove all slurmctld locks prior to job_submit()
    being called for improved performance. If any slurmctld data structures are
    read or modified, add locks directly in the plugin.
 -- Added PriorityFlag LEVEL_BASED described in doc/html/level_based.shtml
 -- If Fairshare=parent is set on an account, that account's children will be
    effectively reparented for fairshare calculations to the first parent of
    their parent that is not Fairshare=parent.  Limits remain the same,
    only it's fairshare value is affected.

* Changes in Slurm 14.11.0pre2
==============================
 -- Added AllowSpecResourcesUsage configuration parameter in slurm.conf. This
    allows jobs to use specialized resources on nodes allocated to them if the
    job designates --core-spec=0.
 -- Add new SchedulerParameters option of build_queue_timeout to throttle how
    much time can be consumed building the job queue for scheduling.
 -- Added HealthCheckNodeState option of "cycle" to cycle through the compute
    nodes over the course of HealthCheckInterval rather than running all at
    the same time.
 -- Add job "reboot" option for Linux clusters. This invokes the configured
    RebootProgram to reboot nodes allocated to a job before it begins execution.
 -- Added squeue -O/--Format option that makes all job and step fields available
    for printing.
 -- Improve database slurmctld entry speed dramatically.
 -- Add "CPUs" count to output of "scontrol show step".
 -- Add support for lua5.2
 -- scancel -b signals only the batch step neither any other step nor any
    children of the shell script.
 -- MySQL - enforce NO_ENGINE_SUBSTITUTION
 -- Added CpuFreqDef configuration parameter in slurm.conf to specify the
    default CPU frequency and governor to be set at job end.
 -- Added support for job email triggers: TIME_LIMIT, TIME_LIMIT_90 (reached
    90% of time limit), TIME_LIMIT_80 (reached 80% of time limit), and
    TIME_LIMIT_50 (reached 50% of time limit). Applies to salloc, sbatch and
    srun commands.
 -- In slurm.conf add the parameter SrunPortRange=min-max. If this is configured
    then srun will use its dynamic ports only from the configured range.
 -- Make debug_flags 64 bit to handle more flags.

* Changes in Slurm 14.11.0pre1
==============================
 -- Modify etc/cgroup.release_common.example to set specify full path to the
    scontrol command. Also find cgroup mount point by reading cgroup.conf file.
 -- Improve qsub wrapper support for passing environment variables.
 -- Modify sdiag to report Slurm RPC traffic by user, type, count and time
    consumed.
 -- In select plugins, stop triggering extra logging based upon the debug flag
    CPU_Bind and use SelectType instead.
 -- Added SchedulerParameters options of bf_yield_interval and bf_yield_sleep
    to control how frequently and for how long the backfill scheduler will
    relinquish its locks.
 -- To support larger numbers of jobs when the StateSaveDirectory is on a
    file system that supports a limited number of files in a directory, add a
    subdirectory called "hash.#" based upon the last digit of the job ID.
 -- More gracefully handle missing batch script file. Just kill the job and do
    not drain the compute node.
 -- Add support for allocation of GRES by model type for heterogeneous systems
    (e.g. request a Kepler GPU, a Tesla GPU, or a GPU of any type).
 -- Record and enable display of nodes anticipated to be used for pending jobs.
 -- Modify squeue --start option to print the nodes expected to be used for
    pending job (in addition to expected start time, etc.).
 -- Add association hash to the assoc_mgr.
 -- Better logic to handle resized jobs when the DBD is down.
 -- Introduce MemLimitEnforce yes|no in slurm.conf. If set no Slurm will
    not terminate jobs if they exceed requested memory.
 -- Add support for non-consumable generic resources for resources that are
    limited, but can be shared between jobs.
 -- Introduce 5 new Slurm errors in slurm_errno.h related to job to better
    report error conditions.
 -- Modify scontrol to print error message for each array task when updating
    the entire array.
 -- Added gres_drain and gres_used fields to node_info_t.
 -- Added PriorityParameters configuration parameter in slurm.conf.
 -- Introduce automatic job requeue policy based on exit value. See RequeueExit
    and RequeueExitHold descriptions in slurm.conf man page.
 -- Modify slurmd to cache launched job IDs for more responsive job suspend and
    gang scheduling.
 -- Permit jobs steps full control over cpu_bind options if specialized cores
    are included in the job allocation.
 -- Added ChosLoc configuration parameter to specifiy the pathname of the
    Chroot OS tool.
 -- Sent SIGCONT/SIGTERM when a job is selected for preemption with GraceTime
    configured rather than waiting for GraceTime to be reached before notifying
    the job.
 -- Do not resume a job with specialized cores on a node running another job
    with specialized cores (only one can run at a time).
 -- Add specialized core count to job suspend/resume calls.
 -- task/affinity and task/cgroup - Correct specialized core task binding with
    user supplied invalid CPU mask or map.
 -- Add srun --cpu-freq options to set the CPU governor (OnDemand, Performance,
    PowerSave or UserSpace).
 -- Add support for a job step's CPU governor and/or frequency to be reset on
    suspend/resume (or gang scheduling). The default for an idle CPU will now
    be "ondemand" rather than "userspace" with the lowest frequency (to recover
    from hard slurmd failures and support gang scheduling).
 -- Added PriorityFlags option of Calulate_Running to continue recalculating
    the priority of running jobs.
 -- Replace round-robin front-end node selection with least-loaded algorithm.
 -- CRAY - Improve support of XC30 systems when running natively.
 -- Add new node configuration parameters CoreSpecCount, CPUSpecList and
    MemSpecLimit which support the reservation of resources for system use
    with Linux cgroup.
 -- Add child_forked() function to the slurm_acct_gather_profile plugin to
    close open files, leaving application with no extra open file descriptors.
 -- Cray/ALPS system - Enable backup controller to run outside of the Cray to
    accept new job submissions and most other operations on the pending jobs.
 -- Have sacct print job and task array id's for job arrays.
 -- Smooth out fanout logic
 -- If <sys/prctl.h> is present name major threads in slurmctld, for
    example backfill
    thread: slurmctld_bckfl, the rpc manager: slurmctld_rpcmg etc.
    The name can be seen for example using top -H.
 -- sview - Better job_array support.
 -- Provide more precise error message when job allocation can not be satisfied
    (e.g. memory, disk, cpu count, etc. rather than just "node configuration
    not available").
 -- Create a new DebugFlags named TraceJobs in slurm.conf to print detailed
    information about jobs in slurmctld. The information include job ids, state
    and node count.
 -- When a job dependency can never be satisfied do not cancel the job but keep
    pending with reason WAIT_DEP_INVALID (DependencyNeverSatisfied).

* Changes in Slurm 14.03.12
===========================
 -- Make it so previous versions of salloc/srun work with newer versions
    of Slurm daemons.
 -- PMI2 race condition fix.
 -- Avoid delay on commit for PMI rank 0 to improve performance with some
    MPI implementations.
 -- Correct the sbatch pbs parser to process -j.
 -- Squeue modified to not merge tasks of a job array if their wait reasons
    differ.
 -- Use the slurm_getpwuid_r wrapper of getpwuid_r to handle possible
    interrupts.
 -- Allow --ignore-pbs to take effect when read as an #SBATCH argument.
 -- Do not launch step if job killed while the prolog was running.

* Changes in Slurm 14.03.11
===========================
 -- ALPS - Fix depth for Memory items in BASIL with CLE 5.2
    (changed starting in 5.2.3).
 -- ALPS - Fix issue when tracking memory on a PerNode basis instead of
    PerCPU.
 -- Modify assoc_mgr_fill_in_qos() to allow for a flag to know if the QOS read
    lock was locked outside of the function or not.
 -- Give even better estimates on pending node count if no node count
    is requested.
 -- Fix jobcomp/mysql plugin for MariaDB 10+/Mysql 5.6+ to work with reserved
    work "partition".
 -- If requested (scontrol reboot node_name) reboot a node even if it has
    an maintenance reservation that is not active yet.
 -- Fix issue where exclusive allocations wouldn't lay tasks out correctly
    with CR_PACK_NODES.
 -- Do not requeue a batch job from slurmd daemon if it is killed while in
    the process of being launched (a race condition introduced in v14.03.9).
 -- Do not let srun overwrite SLURM_JOB_NUM_NODES if already in an allocation.
 -- Prevent a job's end_time from being too small after a basil reservation
    error.
 -- Fix sbatch --ntasks-per-core option from setting invalid
    SLURM_NTASKS_PER_CORE environment value.
 -- Prevent scancel abort when no job satisfies filter options.
 -- ALPS - Fix --ntasks-per-core option on multiple nodes.
 -- Double max string that Slurm can pack from 16MB to 32MB to support
    larger MPI2 configurations.
 -- Fix Centos5 compile issues.
 -- Log Cray MPI job calling exit() without mpi_fini(), but do not treat it as
    a fatal error. This partially reverts logic added in version 14.03.9.
 -- sview - Fix displaying of suspended steps elapsed times.
 -- Increase number of messages that get cached before throwing them away
    when the DBD is down.
 -- Fix jobs from starting in overlapping reservations that won't finish before
    a "maint" reservation begins.
 -- Fix "squeue --start" to override SQUEUE_FORMAT env variable.
 -- Restore GRES functionality with select/linear plugin. It was broken in
    version  14.03.10.
 -- Fix possible race condition when attempting to use QOS on a system running
    accounting_storage/filetxt.
 -- Sanity check for Correct QOS on startup.

* Changes in Slurm 14.03.10
===========================
 -- Fix a few sacctmgr error messages.
 -- Treat non-zero SlurmSchedLogLevel without SlurmSchedLogFile as a fatal
    error.
 -- Correct sched_config.html documentation SchedulingParameters
    should be SchedulerParameters.
 -- When using gres and cgroup ConstrainDevices set correct access
    permission for the batch step.
 -- Fix minor memory leak in jobcomp/mysql on slurmctld reconfig.
 -- Fix bug that prevented preservation of a job's GRES bitmap on slurmctld
    restart or reconfigure (bug was introduced in 14.03.5 "Clear record of a
    job's gres when requeued" and only applies when GRES mapped to specific
    files).
 -- BGQ: Fix race condition when job fails due to hardware failure and is
    requeued. Previous code could result in slurmctld abort with NULL pointer.
 -- Prevent negative job array index, which could cause slurmctld to crash.
 -- Fix issue with squeue/scontrol showing correct node_cnt when only tasks
    are specified.
 -- Check the status of the database connection before using it.
 -- ALPS - If an allocation requests -n set the BASIL -N option to the
    amount of tasks / number of node.
 -- ALPS - Don't set the env var APRUN_DEFAULT_MEMORY, it is not needed anymore.
 -- Fix potential buffer overflow.
 -- Give better estimates on pending node count if no node count is requested.
 -- BLUEGENE - Fix issue where requeuing jobs could cause an assert.

* Changes in Slurm 14.03.9
==========================
 -- If slurmd fails to stat(2) the configuration print the string describing
    the error code.
 -- Fix for mixing core base reservations with whole node based reservations
    to avoid overlapping erroneously.
 -- BLUEGENE - Remove references to Base Partition.
 -- sview - If compiled on a non-bluegene system then used to view a BGQ fix
    to allow sview to display blocks correctly.
 -- Fix bug in update reservation. When modifying the reservation the end time
    was set incorrectly.
 -- The start time of a reservation that is in ACTIVE state cannot be modified.
 -- Update the cgroup documentation about release agent for devices.
 -- MYSQL - fix for setting up preempt list on a QOS for multiple QOS.
 -- Correct a minor error in the scancel.1 man page related to the
    --signal option.
 -- Enhance the scancel.1 man page to document the sequence of signals sent
 -- Fix slurmstepd core dump if the cgroup hierarchy is not completed
    when terminating the job.
 -- Fix hostlist_shift to be able to give correct node names on names with a
    different number of dimensions than the cluster.
 -- BLUEGENE - Fix invalid pointer in corner case in the plugin.
 -- Make sure on a reconfigure the select information for a node is preserved.
 -- Correct logic to support job GRES specification over 31 bits (problem
    in logic converting int to uint32_t).
 -- Remove logic that was creating GRES bitmap for node when not needed (only
    needed when GRES mapped to specific files).
 -- BLUEGENE - Fix sinfo -tr before it would only print idle nodes correctly.
 -- BLUEGENE - Fix for licenses_only reservation on bluegene systems.
 -- sview - Verify pointer before using strchr.
 -- -M option on tools talking to a Cray from a non-Cray fixed.
 -- CRAY - Fix rpmbuild issue for missing file slurm.conf.template.
 -- Fix race condition when dealing with removing many associations at
    different times when reservations are using the associations that are
    being deleted.
 -- When a node's state is set to power_down/power_up, then execute
    SuspendProgram/ResumeProgram even if previously executed for that node.
 -- Fix logic determining when job configuration (i.e. running node power up
    logic) is complete.
 -- Setting the state of a node in powered down state node to "resume" will
    no longer cause it to reboot, but only clear the "drain" state flag.
 -- Fix srun documentation to remove SLURM_NODELIST being equivalent as the -w
    option (since it isn't).
 -- Fix issue with --hint=nomultithread and allocations with steps running
    arbitrary layouts (test1.59).
 -- PrivateData=reservation modified to permit users to view the reservations
    which they have access to (rather then preventing them from seeing ANY
    reservation).  Backport from 14.11 commit 77c2bd25c.
 -- Fix PrivateData=reservation when using associations to give privileges to
    a reservation.
 -- Better checking to see if select plugin is linear or not.
 -- Add support for time specification of "fika" (3 PM).
 -- Standardize qstat wrapper more.
 -- Provide better estimate of minimum node count for pending jobs using more
    job parameters.
 -- ALPS - Add SubAllocate to cray.conf file for those who like the way <=2.5
    did the ALPS reservation.
 -- Safer check to avoid invalid reads when shutting down the slurmctld with
    lots of jobs.
 -- Fix minor memory leak in the backfill scheduler when shutting down.
 -- Add ArchiveResvs to the output of sacctmgr show config and init the variable
    on slurmdbd startup.
 -- SLURMDBD - Only set the archive flag if purging the object
    (i.e ArchiveJobs PurgeJobs).  This is only a cosmetic change.
 -- Fix for job step memory allocation logic if step requests GRES and memory
    is not allocations are not managed.
 -- Fix sinfo to display mixed nodes as allocated in '%F' output.
 -- Sview - Fix cpu and node counts for partitions.
 -- Ignore NO_VAL in SLURMDB_PURGE_* macros.
 -- ALPS - Don't drain nodes if epilog fails.  It leaves them in drain state
    with no way to get them out.
 -- Fix issue with task/affinity oversubscribing cpus erroneously when
    using --ntasks-per-node.
 -- MYSQL - Fix load of archive files.
 -- Treat Cray MPI job calling exit() without mpi_fini() as fatal error for
    that specific task and let srun handle all timeout logic.
 -- Fix small memory leak in jobcomp/mysql.
 -- Correct tracking of licenses for suspended jobs on slurmctld reconfigure or
    restart.
 -- If failed to launch a batch job requeue it in hold.

* Changes in Slurm 14.03.8
==========================
 -- Fix minor memory leak when Job doesn't have nodes on it (Meaning the job
    has finished)
 -- Fix sinfo/sview to be able to query against nodes in reserved and other
    states.
 -- Make sbatch/salloc read in (SLURM|(SBATCH|SALLOC))_HINT in order to
    handle sruns in the script that will use it.
 -- srun properly interprets a leading "." in the executable name based upon
    the working directory of the compute node rather than the submit host.
 -- Fix Lustre misspellings in hdf5 guide
 -- Fix wrong reference in slurm.conf man page to what --profile option should
    be used for AcctGatherFilesystemType.
 -- Update HDF5 document to point out the SlurmdUser is who creates the
    ProfileHDF5Dir directory as well as all it's sub-directories and files.
 -- CRAY NATIVE - Remove error message for srun's ran inside an salloc that
    had --network= specified.
 -- Defer job step initiation of required GRES are in use by other steps rather
    than immediately returning an error.
 -- Deprecate --cpu_bind from sbatch and salloc.  These never worked correctly
    and only caused confusion since the cpu_bind options mostly refer to a
    step we opted to only allow srun to set them in future versions.
 -- Modify sgather to work if Nodename and NodeHostname differ.
 -- Changed use of JobContainerPlugin where it should be JobContainerType.
 -- Fix for possible error if job has GRES, but the step explicitly requests a
    GRES count of zero.
 -- Make "srun --gres=none ..." work when executed without a job allocation.
 -- Change the global eio_shutdown_time to a field in eio handle.
 -- Advanced reservation fixes for heterogeneous systems, especially when
    reserving cores.
 -- If --hint=nomultithread is used in a job allocation make sure any srun's
    ran inside the allocation can read the environment correctly.
 -- If batchdir can't be made set errno correctly so the slurmctld is notified
    correctly.
 -- Remove repeated batch complete if batch directory isn't able to be made
    since the slurmd will send the same message.
 -- sacctmgr fix default format for list transactions.
 -- BLUEGENE - Fix backfill issue with backfilling jobs on blocks already
    reserved for higher priority jobs.
 -- When creating job arrays the job specification files for each elements
    are hard links to the first element specification files. If the controller
    fails to make the links the files are copied instead.
 -- Fix error handling for job array create failure due to inability to copy
    job files (script and environment).
 -- Added patch in the contribs directory for integrating make version 4.0 with
    Slurm and renamed the previous patch "make-3.81.slurm.patch".
 -- Don't wait for an update message from the DBD to finish before sending rc
    message back.  In slow systems with many associations this could speed
    responsiveness in sacctmgr after adding associations.
 -- Eliminate race condition in enforcement of MaxJobCount limit for job arrays.
 -- Fix anomaly allocating cores for GRES with specific device/CPU mapping.
 -- cons_res - When requesting exclusive access make sure we set the number
    of cpus in the job_resources_t structure so as nodes finish the correct
    cpu count is displayed in the user tools.
 -- If the job_submit plugin calls take longer than 1 second to run, print a
    warning.
 -- Make sure transfer_s_p_options transfers all the portions of the
    s_p_options_t struct.
 -- Correct the srun man page, the SLURM_CPU_BIND_VERBOSE, SLURM_CPU_BIND_TYPE
    SLURM_CPU_BIND_LIST environment variable are set only when task/affinity
    plugin is configured.
 -- sacct - Initialize variables correctly to avoid incorrect structure
    reference.
 -- Performance adjustment to avoid calling a function multiple times when it
    only needs to be called once.
 -- Give more correct waiting reason if job is waiting on association/QOS
    MaxNode limit.
 -- DB - When sending lft updates to the slurmctld only send non-deleted lfts.
 -- BLUEGENE - Fix documentation on how to build a reservation less than
    a midplane.
 -- If Slurmctld fails to read the job environment consider it an error
    and abort the job.
 -- Add the name of the node a job is running on to the message printed by
    slurmstepd when terminating a job.
 -- Remove unsupported options from sacctmgr help and the dump function.
 -- Update sacctmgr man page removing reference to obsolete parameter
    MaxProcSecondsPerJob.
 -- Added more validity checking of incoming job submit requests.

* Changes in Slurm 14.03.7
==========================
 -- Correct typos in man pages.
 -- Add note to MaxNodesPerUser and multiple jobs running on the same node
    counting as multiple nodes.
 -- PerlAPI - fix renamed call from slurm_api_set_conf_file to
    slurm_conf_reinit.
 -- Fix gres race condition that could result in job deallocation error message.
 -- Correct NumCPUs count for jobs with --exclusive option.
 -- When creating reservation with CoreCnt, check that Slurm uses
    SelectType=select/cons_res, otherwise don't send the request to slurmctld
    and return an error.
 -- Save the state of scheduled node reboots so they will not be lost should the
    slurmctld restart.
 -- In select/cons_res plugin - Insure the node count does not exceed the task
    count.
 -- switch/nrt - Do not explicitly unload windows for a job on termination,
    only unload its table (which automatically unloads its windows).
 -- When HealthCheckNodeState is configured as IDLE don't run the
    HealthCheckProgram for nodes in any other states than IDLE.
 -- Remove all slurmctld locks prior to job_submit() being called in plugins.
    If any slurmctld data structures are read or modified, add locks directly
    in the plugin.
 -- Minor sanity check to verify the string sent in isn't NULL when using
    bit_unfmt.
 -- CRAY NATIVE - Fix issue on heavy systems to only run the NHC once per
    job/step completion.
 -- Remove unneeded step cleanup for pending steps.
 -- Fix issue where if a batch job was manually requeued the batch step
    information wasn't stored in accounting.
 -- When job is release from a requeue hold state clean up its previous
    exit code.
 -- Correct the srun man page about how the output from the user application
    is sent to srun.
 -- Increase the timeout of the main thread while waiting for the i/o thread.
    Allow up to 180 seconds for the i/o thread to complete.
 -- When using sacct -c to read the job completion data compute the correct
    job elapsed time.
 -- Perl package: Define some missing node states.
 -- When using AccountingStorageType=accounting_storage/mysql zero out the
    database index for the array elements avoiding duplicate database values.
 -- Reword the explanation of cputime and cputimeraw in the sacct man page.
 -- JobCompType allows "jobcomp/mysql" as valid name but the code used
    "job_comp/mysql" setting an incorrect default database.
 -- Try to load libslurm.so only when necessary.
 -- When nodes scheduled for reboot, set state to DOWN rather than FUTURE so
    they are still visible to sinfo. State set to IDLE after reboot completes.
 -- Apply BatchStartTimeout configuration to task launch and avoid aborting
    srun commands due to long running Prolog scripts.
 -- Fix minor memory leaks when freeing node_info_t structure.
 -- Fix various memory leaks in sview
 -- If a batch script is requeued and running steps get correct exit code/signal
    previous it was always -2.
 -- If step exitcode hasn't been set display with sacct the -2 instead
    of acting like it is a signal and exitcode.
 -- Send calculated step_rc for batch step instead of raw status as
    done for normal steps.
 -- If a job times out, set the exit code in accounting to 1 instead of the
    signal 1.
 -- Update the acct_gather.conf.5 man page removing the reference to
    InfinibandOFEDFrequency.
 -- Fix gang scheduling for jobs submitted to multiple partitions.
 -- Enable srun to submit job to multiple partitions.
 -- Update slurm.conf man page. When Epilog or Prolog fail the node state
    is set ro DRAIN.
 -- Start a job in the highest priority partition possible, even if it requires
    preempting other jobs and delaying initiation, rather than using a lower
    priority partition. Previous logic would preempt lower priority jobs, but
    then might start the job in a lower priority partition and not use the
    resources released by the preempted jobs.
 -- Fix SelectTypeParameters=CR_PACK_NODES for srun making both job and step
    resource allocation.
 -- BGQ - Make it possible to pack multiple tasks on a core when not using
    the entire cnode.
 -- MYSQL - if unable to connect to mysqld close connection that was inited.
 -- DBD - when connecting make sure we wait MessageTimeout + 5 since the
    timeout when talking to the Database is the same timeout so a race
    condition could occur in the requesting client when receiving the response
    if the database is unresponsive.

* Changes in Slurm 14.03.6
==========================
 -- Added examples to demonstrate the use of the sacct -T option to the man
    page.
 -- Fix for regression in 14.03.5 with sacctmgr load when Parent has "'"
    around it.
 -- Update comments in sacctmgr dump header.
 -- Fix for possible abort on change in GRES configuration.
 -- CRAY - fix modules file, (backport from 14.11 commit 78fe86192b.
 -- Fix race condition which could result in requeue if batch job exit and node
    registration occur at the same time.
 -- switch/nrt - Unload job tables (in addition to windows) in user space mode.
 -- Differentiate between two identical debug messages about purging vestigial
    job scripts.
 -- If the socket used by slurmstepd to communicate with slurmd exist when
    slurmstepd attempts to create it, for example left over from a previous
    requeue or crash, delete it and recreate it.

* Changes in Slurm 14.03.5
==========================
 -- If a srun runs in an exclusive allocation and doesn't use the entire
    allocation and CR_PACK_NODES is set layout tasks appropriately.
 -- Correct Shared field in job state information seen by scontrol, sview, etc.
 -- Print Slurm error string in scontrol update job and reset the Slurm errno
    before each call to the API.
 -- Fix task/cgroup to handle -mblock:fcyclic correctly
 -- Fix for core-based advanced reservations where the distribution of cores
    across nodes is not even.
 -- Fix issue where association maxnodes wouldn't be evaluated correctly if a
    QOS had a GrpNodes set.
 -- GRES fix with multiple files defined per line in gres.conf.
 -- When a job is requeued make sure accounting marks it as such.
 -- Print the state of requeued job as REQUEUED.
 -- Fix if a job's partition was taken away from it don't allow a requeue.
 -- Make sure we lock on the conf when sending slurmd's conf to the slurmstepd.
 -- Fix issue with sacctmgr 'load' not able to gracefully handle bad formatted
    file.
 -- sched/backfill: Correct job start time estimate with advanced reservations.
 -- Error message added when in proctrack/cgroup the step freezer path isn't
    able to be destroyed for debug.
 -- Added extra index's into the database for better performance when
    deleting users.
 -- Fix issue with wckeys when tracking wckeys, but not enforcing them,
    you could get multiple '*' wckeys.
 -- Fix bug which could report to squeue the wrong partition for a running job
    that is submitted to multiple partitions.
 -- Report correct CPU count allocated to job when allocated whole node even if
    not using all CPUs.
 -- If job's constraints cannot be satisfied put it in pending state with reason
    BadConstraints and don't remove it.
 -- sched/backfill - If job started with infinite time limit, set its end_time
    one year in the future.
 -- Clear record of a job's gres when requeued.
 -- Clear QOS GrpUsedCPUs when resetting raw usage if QOS is not using any cpus.
 -- Remove log message left over from debugging.
 -- When using CR_PACK_NODES fix make --ntasks-per-node work correctly.
 -- Report correct partition associated with a step if the job is submitted to
    multiple partitions.
 -- Fix to allow removing of preemption from a QOS
 -- If the proctrack plugins fail to destroy the job container print an error
    message and avoid to loop forever, give up after 120 seconds.
 -- Make srun obey POSIX convention and increase the exit code by 128 when the
    process terminated by a signal.
 -- Sanity check for acct_gather_energy/rapl
 -- If the proctrack plugins fail to destroy the job container print an error
    message and avoid to loop forever, give up after 120 seconds.
 -- If the sbatch command specifies the option --signal=B:signum sent the signal
    to the batch script only.
 -- If we cancel a task and we have no other exit code send the signal and
    exit code.
 -- Added note about InnoDB storage engine being used with MySQL.
 -- Set the job exit code when the job is signaled and set the log level to
    debug2() when processing an already completed job.
 -- Reset diagnostics time stamp when "sdiag --reset" is called.
 -- squeue and scontrol to report a job's "shared" value based upon partition
    options rather than reporting "unknown" if job submission does not use
    --exclusive or --shared option.
 -- task/cgroup - Fix cpuset binding for batch script.
 -- sched/backfill - Fix anomaly that could result in jobs being scheduled out
    of order.
 -- Expand pseudo-terminal size data structure field sizes from 8 to 16 bits.
 -- Set the job exit code when the job is signaled and set the log level to
    debug2() when processing an already completed job.
 -- Distinguish between two identical error messages.
 -- If using accounting_storage/mysql directly without a DBD fix issue with
    start of requeued jobs.
 -- If a job fails because of batch node failure and the job is requeued and an
    epilog complete message comes from that node do not process the batch step
    information since the job has already been requeued because the epilog
    script running isn't guaranteed in this situation.
 -- Change message to note a NO_VAL for return code could of come from node
    failure as well as interactive user.
 -- Modify test4.5 to only look at one partition instead of all of them.
 -- Fix sh5util -u to accept username different from the user that runs the
    command.
 -- Corrections to man pages:salloc.1 sbatch.1 srun.1 nonstop.conf.5
    slurm.conf.5.
 -- Restore srun --pty resize ability.
 -- Have sacctmgr dump cluster handle situations where users or such have
    special characters in their names like ':'
 -- Add more debugging for information should the job ran on wrong node
    and should there be problems accessing the state files.

* Changes in Slurm 14.03.4
==========================
 -- Fix issue where not enforcing QOS but a partition either allows or denies
    them.
 -- CRAY - Make switch/cray default when running on a Cray natively.
 -- CRAY - Make job_container/cncu default when running on a Cray natively.
 -- Disable job time limit change if it's preemption is in progress.
 -- Correct logic to properly enforce job preemption GraceTime.
 -- Fix sinfo -R to print each down/drained node once, rather than once per
    partition.
 -- If a job has non-responding node, retry job step create rather than
    returning with DOWN node error.
 -- Support SLURM_CONF path which does not have "slurm.conf" as the file name.
 -- CRAY - make job_container/cncu default when running on a Cray natively
 -- Fix issue where batch cpuset wasn't looked at correctly in
    jobacct_gather/cgroup.
 -- Correct squeue's job node and CPU counts for requeued jobs.
 -- Correct SelectTypeParameters=CR_LLN with job selecition of specific nodes.
 -- Only if ALL of their partitions are hidden will a job be hidden by default.
 -- Run EpilogSlurmctld for a job is killed during slurmctld reconfiguration.
 -- Close window with srun if waiting for an allocation and while printing
    something you also get a signal which would produce deadlock.
 -- Add SelectTypeParameters option of CR_PACK_NODES to pack a job's tasks
    tightly on its allocated nodes rather than distributing them evenly across
    the allocated nodes.
 -- cpus-per-task support: Try to pack all CPUs of each tasks onto one socket.
    Previous logic could spread the tasks CPUs across multiple sockets.
 -- Add new distribution method fcyclic so when a task is using multiple cpus
    it can bind cyclically across sockets.
 -- task/affinity - When using --hint=nomultithread only bind to the first
    thread in a core.
 -- Make cgroup task layout (block | cyclic) method mirror that of
    task/affinity.
 -- If TaskProlog sets SLURM_PROLOG_CPU_MASK reset affinity for that task
    based on the mask given.
 -- Keep supporting 'srun -N x --pty bash' for historical reasons.
 -- If EnforcePartLimits=Yes and QOS job is using can override limits, allow
    it.
 -- Fix issues if partition allows or denies account's or QOS' and either are
    not set.
 -- If a job requests a partition and it doesn't allow a QOS or account the
    job is requesting pend unless EnforcePartLimits=Yes.  Before it would
    always kill the job at submit.
 -- Fix format output of scontrol command when printing node state.
 -- Improve the clean up of cgroup hierarchy when using the
    jobacct_gather/cgroup plugin.
 -- Added SchedulerParameters value of Ignore_NUMA.
 -- Fix issues with code when using automake 1.14.1
 -- select/cons_res plugin: Fix memory leak related to job preemption.
 -- After reconfig rebuild the job node counters only for jobs that have
    not finished yet, otherwise if requeued the job may enter an invalid
    COMPLETING state.
 -- Do not purge the script and environment files for completed jobs on
    slurmctld reconfiguration or restart (they might be later requeued).
 -- scontrol now accepts the option job=xxx or jobid=xxx for the requeue,
    requeuehold and release operations.
 -- task/cgroup - fix to bind batch job in the proper CPUs.
 -- Added strigger option of -N, --noheader to not print the header when
    displaying a list of triggers.
 -- Modify strigger to accept arguments to the program to execute when an
    event trigger occurs.
 -- Attempt to create duplicate event trigger now generates ESLURM_TRIGGER_DUP
    ("Duplicate event trigger").
 -- Treat special characters like %A, %s etc. literally in the file names
    when specified escaped e.g. sbatch -o /home/zebra\\%s will not expand
    %s as the stepid of the running job.
 -- CRAYALPS - Add better support for CLE 5.2 when running Slurm over ALPS.
 -- Test time when job_state file was written to detect multiple primary
    slurmctld daemons (e.g. both backup and primary are functioning as
    primary and there is a split brain problem).
 -- Fix scontrol to accept update jobid=# numtasks=#
 -- If the backup slurmctld assumes primary status, then do NOT purge any
    job state files (batch script and environment files) and do not re-use them.
    This may indicate that multiple primary slurmctld daemons are active (e.g.
    both backup and primary are functioning as primary and there is a split
    brain problem).
 -- Set correct error code when requeuing a completing/pending job
 -- When checking for if dependency of type afterany, afterok and afternotok
    don't clear the dependency if the job is completing.
 -- Cleanup the JOB_COMPLETING flag and eventually requeue the job when the
    last epilog completes, either slurmd epilog or slurmctld epilog, whichever
    comes last.
 -- When attempting to requeue a job distinguish the case in which the job is
    JOB_COMPLETING or already pending.
 -- When reconfiguring the controller don't restart the slurmctld epilog if it
    is already running.
 -- Email messages for job array events print now use the job ID using the
    format "#_# (#)" rather than just the internal job ID.
 -- Set the number of free licenses to be 0 if the global license count
    decreases and total is less than in use.
 -- Add DebugFlag of BackfillMap. Previously a DebugFlag value of Backfill
    logged information about what it was doing plus a map of expected resouce
    use in the future. Now that very verbose resource use map is only logged
    with a DebugFlag value of BackfillMap
 -- Fix slurmstepd core dump.
 -- Modify the description of -E and -S option of sacct command as point in time
    'before' or 'after' the database records are returned.
 -- Correct support for partition with Shared=YES configuration.
 -- If job requests --exclusive then do not use nodes which have any cores in an
    advanced reservation. Also prevents case where nodes can be shared by other
    jobs.
 -- For "scontrol --details show job" report the correct CPU_IDs when thre are
    multiple threads per core (we are translating a core bitmap to CPU IDs).
 -- If DebugFlags=Protocol is configured in slurm.conf print details of the
    connection, ip address and port accepted by the controller.
 -- Fix minor memory leak when reading in incomplete node data checkpoint file.
 -- Enlarge the width specifier when printing partition SHARE to display larger
    sharing values.
 -- sinfo locks added to prevent possibly duplicate record printing for
    resources in multiple partitions.

* Changes in Slurm 14.03.3-2
============================
 -- BGQ - Fix issue with uninitialized variable.

* Changes in Slurm 14.03.3
==========================
 -- Correction to default batch output file name. In version 14.03.2 was using
    "slurm_<jobid>_4294967294.out" due to error in job array logic.
 -- In slurm.spec file, replace "Requires cray-MySQL-devel-enterprise" with
    "Requires mysql-devel".

* Changes in Slurm 14.03.2
==========================
 -- Fix race condition if PrologFlags=Alloc,NoHold is used.
 -- Cray - Make NPC only limit running other NPC jobs on shared blades instead
    of limited non NPC jobs.
 -- Fix for sbatch #PBS -m (mail) option parsing.
 -- Fix job dependency bug. Jobs dependent upon multiple other jobs may start
    prematurely.
 -- Set "Reason" field for all elements of a job array on short-circuited
    scheduling for job arrays.
 -- Allow -D option of salloc/srun/sbatch to specify relative path.
 -- Added SchedulerParameter of batch_sched_delay to permit many batch jobs
    to be submitted between each scheduling attempt to reduce overhead of
    scheduling logic.
 -- Added job reason of "SchedTimeout" if the scheduler was not able to reach
    the job to attempt scheduling it.
 -- Add job's exit state and exit code to email message.
 -- scontrol hold/release accepts job name option (in addition to job ID).
 -- Handle when trying to cancel a step that hasn't started yet better.
 -- Handle Max/GrpCPU limits better
 -- Add --priority option to salloc, sbatch and srun commands.
 -- Honor partition priorities over job priorities.
 -- Fix sacct -c when using jobcomp/filetxt to read newer variables
 -- Fix segfault of sacct -c if spaces are in the variables.
 -- Release held job only with "scontrol release <jobid>" and not by resetting
    the job's priority. This is needed to support job arrays better.
 -- Correct squeue command not to merge jobs with state pending and completing
    together.
 -- Fix issue where user is requesting --acctg-freq=0 and no memory limits.
 -- Fix issue with GrpCPURunMins if a job's timelimit is altered while the job
    is running.
 -- Temporary fix for handling our typemap for the perl api with newer perl.
 -- Fix allowgroup on bad group seg fault with the controller.
 -- Handle node ranges better when dealing with accounting max node limits.

* Changes in Slurm 14.03.1-2
==========================
 -- Update configure to set correct version without having to run autogen.sh

* Changes in Slurm 14.03.1
==========================
 -- Add support for job std_in, std_out and std_err fields in Perl API.
 -- Add "Scheduling Configuration Guide" web page.
 -- BGQ - fix check for jobinfo when it is NULL
 -- Do not check cleaning on "pending" steps.
 -- task/cgroup plugin - Fix for building on older hwloc (v1.0.2).
 -- In the PMI implementation by default don't check for duplicate keys.
    Set the SLURM_PMI_KVS_DUP_KEYS if you want the code to check for
    duplicate keys.
 -- Add job submission time to squeue.
 -- Permit user root to propagate resource limits higher than the hard limit
    slurmd has on that compute node has (i.e. raise both current and maximum
    limits).
 -- Fix issue with license used count when doing an scontrol reconfig.
 -- Fix the PMI iterator to not report duplicated keys.
 -- Fix issue with sinfo when -o is used without the %P option.
 -- Rather than immediately invoking an execution of the scheduling logic on
    every event type that can enable the execution of a new job, queue its
    execution. This permits faster execution of some operations, such as
    modifying large counts of jobs, by executing the scheduling logic less
    frequently, but still in a timely fashion.
 -- If the environment variable is greater than MAX_ENV_STRLEN don't
    set it in the job env otherwise the exec() fails.
 -- Optimize scontrol hold/release logic for job arrays.
 -- Modify srun to report an exit code of zero rather than nine if some tasks
    exit with a return code of zero and others are killed with SIGKILL. Only an
    exit code of zero did this.
 -- Fix a typo in scontrol man page.
 -- Avoid slurmctld crash getting job info if detail_ptr is NULL.
 -- Fix sacctmgr add user where both defaultaccount and accounts are specified.
 -- Added SchedulerParameters option of max_sched_time to limit how long the
    main scheduling loop can execute for.
 -- Added SchedulerParameters option of sched_interval to control how frequently
    the main scheduling loop will execute.
 -- Move start time of main scheduling loop timeout after locks are aquired.
 -- Add squeue job format option of "%y" to print a job's nice value.
 -- Update scontrol update jobID logic to operate on entire job arrays.
 -- Fix PrologFlags=Alloc to run the prolog on each of the nodes in the
    allocation instead of just the first.
 -- Fix race condition if a step is starting while the slurmd is being
    restarted.
 -- Make sure a job's prolog has ran before starting a step.
 -- BGQ - Fix invalid memory read when using DefaultConnType in the
    bluegene.conf
 -- Make sure we send node state to the DBD on clean start of controller.
 -- Fix some sinfo and squeue sorting anomalies due to differences in data
    types.
 -- Only send message back to slurmctld when PrologFlags=Alloc is used on a
    Cray/ALPS system, otherwise use the slurmd to wait on the prolog to gate
    the start of the step.
 -- Remove need to check PrologFlags=Alloc in slurmd since we can tell if prolog
    has ran yet or not.
 -- Fix squeue to use a correct macro to check job state.
 -- BGQ - Fix incorrect logic issues if MaxBlockInError=0 in the bluegene.conf.
 -- priority/basic - Insure job priorities continue to decrease when jobs are
    submitted with the --nice option.
 -- Make the PrologFlag=Alloc work on batch scripts
 -- Make PrologFlag=NoHold (automatically sets PrologFlag=Alloc) not hold in
    salloc/srun, instead wait in the slurmd when a step hits a node and the
    prolog is still running.
 -- Added --cpu-freq=highm1 (high minus one) option.
 -- Expand StdIn/Out/Err string length output by "scontrol show job" from 128
    to 1024 bytes.
 -- squeue %F format will now print the job ID for non-array jobs.
 -- Use quicksort for all priority based job sorting, which improves performance
    significantly with large job counts.
 -- If a job has already been released from a held state ignore successive
    release requests.
 -- Fix srun/salloc/sbatch man pages for the --no-kill option.
 -- Add squeue -L/--licenses option to filter jobs by license names.
 -- Handle abort job on node on front end systems without core dumping.
 -- Fix dependency support for job arrays.
 -- When updating jobs verify the update request is not identical to
    the current settings.
 -- When sorting jobs and priorities are equal sort by job_id.
 -- Do not overwrite existing reason for node being down or drained.
 -- Requeue batch job if Munge is down and credential can not be created.
 -- Make _slurm_init_msg_engine() tolerate bug in bind() returning a busy
    ephemeral port.
 -- Don't block scheduling of entire job array if it could run in multiple
    partitions.
 -- Introduce a new debug flag Protocol to print protocol requests received
    together with the remote IP address and port.
 -- CRAY - Set up the network even when only using 1 node.
 -- CRAY - Greatly reduce the number of error messages produced from the task
    plugin and provide more information in the message.

* Changes in Slurm 14.03.0
==========================
 -- job_submit/lua: Fix invalid memory reference if script returns error message
    for user.
 -- Add logic to sleep and retry if slurm.conf can't be read.
 -- Reset a node's CpuLoad value at least once each SlurmdTimeout seconds.
 -- Scheduler enhancements for reservations: When a job needs to run in
    reservation, but can not due to busy resources, then do not block all jobs
    in that partition from being scheduled, but only the jobs in that
    reservation.
 -- Export "SLURM*" environment variables from sbatch even if --export=NONE.
 -- When recovering node state if the Slurm version is 2.6 or 2.5 set the
    protocol version to be SLURM_2_5_PROTOCOL_VERSION which is the minimum
    supported version.
 -- Update the scancel man page documenting the -s option.
 -- Update sacctmgr man page documenting how to modify account's QOS.
 -- Fix for sjstat which currently does not print >1TB memory values correctly.
 -- Change xmalloc()/xfree() to malloc()/free() in hostlist.c for better
    performance.
 -- Update squeue.1 man page describing the SPECIAL_EXIT state.
 -- Added scontrol option of errnumstr to return error message given a slurm
    error number.
 -- If srun invoked with the --multi-prog option, but no task count, then use
    the task count provided in the MPMD configuration file.
 -- Prevent sview abort on some systems when adding or removing columns to the
    display for nodes, jobs, partitions, etc.
 -- Add job array hash table for improved performance.
 -- Make AccountingStorageEnforce=all not include nojobs or nosteps.
 -- Added sacctmgr mod qos set RawUsage=0.
 -- Modify hostlist functions to accept more than two numeric ranges (e.g.
    "row[1-3]rack[0-8]slot[0-63]")

* Changes in Slurm 14.03.0rc1
==============================
 -- Fixed typos in srun_cr man page.
 -- Run job scheduling logic immediately when nodes enter service.
 -- Added sbatch '--parsable' option to output only the job id number and the
    cluster name separated by a semicolon. Errors will still be displayed.
 -- Added failure management "slurmctld/nonstop" plugin.
 -- Prevent jobs being killed when a checkpoint plugin is enabled or disabled.
 -- Update the documentation about SLURM_PMI_KVS_NO_DUP_KEYS environment
    variable.
 -- select/cons_res bug fix for range of node counts with --cpus-per-task
    option (e.g. "srun -N2-3 -c2 hostname" would allocate 2 CPUs on the first
    node and 0 CPUs on the second node).
 -- Change reservation flags field from 16 to 32-bits.
 -- Add reservation flag value of "FIRST_CORES".
 -- Added the idea of Resources to the database.  Framework for handling
    license servers outside of Slurm.
 -- When starting the slurmctld only send past job/node state information to
    accounting if running for the first time (should speed up startup
    dramatically on systems with lots of nodes or lots of jobs).
 -- Compile and run on FreeBSD 8.4.
 -- Make job array expressions more flexible to accept multiple step counts in
    the expression (e.g. "--array=1-10:2,50-60:5,123").
 -- switch/cray - add state save/restore logic tracking allocated ports.
 -- SchedulerParameters - Replace max_job_bf with bf_max_job_start (both will
    work for now).
 -- Add SchedulerParameters options of preempt_reorder_count and
    preempt_strict_order.
 -- Make memory types in acct_gather uint64_t to handle systems with more than
    4TB of memory on them.
 -- BGQ - --export=NONE option for srun to make it so only the SLURM_JOB_ID
    and SLURM_STEP_ID env vars are set.
 -- Munge plugins - Add sleep between retries if can't connect to socket.
 -- Added DebugFlags value of "License".
 -- Added --enable-developer which will give you -Werror when compiling.
 -- Fix for job request with GRES count of zero.
 -- Fix a potential memory leak in hostlist.
 -- Job array dependency logic: Cache results for major performance improvement.
 -- Modify squeue to support filter on job states Special_Exit and Resizing.
 -- Defer purging job record until after EpilogSlurmctld completes.
 -- Add -j option for jobid to sbcast.
 -- Fix handling RPCs from a 14.03 slurmctld to a 2.6 slurmd

* Changes in Slurm 14.03.0pre6
==============================
 -- Modify slurmstepd to log messages according to the LogTimeFormat
    parameter in slurm.conf.
 -- Insure that overlapping reservations do not oversubscribe available
    licenses.
 -- Added core specialization logic to select/cons_res plugin.
 -- Added whole_node field to job_resources structure and enable gang scheduling
    for jobs with core specialization.
 -- When using FastSchedule = 1 the nodes with less than configured resources
    are not longer set DOWN, they are set to DRAIN instead.
 -- Modified 'sacctmgr show associations' command to show GrpCPURunMins
    by default.
 -- Replace the hostlist_push() function with a more efficient
    hostlist_push_host().
 -- Modify the reading of lustre file system statistics to print more
    information when debug and when io error occur.
 -- Add specialized core count field to job credential data.
    NOTE: This changes the communications protocol from other pre-releases of
    version 14.03. All programs must be cancelled and daemons upgraded from
    previous pre-releases of version 14.03. Upgrades from version 2.6 or earlier
    can take place without loss of jobs
 -- Add version number to node and front-end configuration information visible
    using the scontrol tool.
 -- Add idea of a RESERVED flag for node state so idle resources are marked
    not "idle" when in a reservation.
 -- Added core specialization plugin infrastructure.
 -- Added new job_submit/trottle plugin to control the rate at which a user
    can submit jobs.
 -- CRAY - added network performance counters option.
 -- Allow scontrol suspend/resume to accept jobid in the format jobid_taskid
    to suspend/resume array elements.
 -- In the slurmctld job record, split "shared" variable into "share_res" (share
    resource) and "whole_node" fields.
 -- Fix the format of SLURM_STEP_RESV_PORTS. It was generated incorrectly
    when using the hostlist_push_host function and input surrounded by [].
 -- Modify the srun --slurmd-debug option to accept debug string tags
    (quiet, fatal, error, info verbose) beside the numerical values.
 -- Fix the bug where --cpu_bind=map_cpu is interpreted as mask_cpu.
 -- Update the documentation egarding the state of cpu frequencies after
    a step using --cpu-freq completes.
 -- CRAY - Fix issue when a job is requeued and nhc is still running as it is
    being scheduled to run again.  This would erase the previous job info
    that was still needed to clean up the nodes from the previous job run.
    (Bug 526).
 -- Set SLURM_JOB_PARTITION environment variable set for all job allocations.
 -- Set SLURM_JOB_PARTITION environment variable for Prolog program.
 -- Added SchedulerParameters option of partition_job_depth to limit scheduling
    logic depth by partition.
 -- Handle the case in which errno is not reset to 0 after calling
    getgrent_r(), which causes the controller to core dump.

* Changes in Slurm 14.03.0pre5
==============================
 -- Added squeue format option of "%X" (core specialization count).
 -- Added core specialization web page (just a start for now).
 -- Added the SLURM_ARRAY_JOB_ID and SLURM_ARRAY_TASK_ID
    in epilog slurmctld environment.
 -- Fix bug in job step allocation failing due to memory limit.
 -- Modify the pbsnodes script to reflect its output on a TORQUE system.
 -- Add ability to clear a node's DRAIN flag using scontrol or sview by setting
    it's state to "UNDRAIN". The node's base state (e.g. "DOWN" or "IDLE") will
    not be changed.
 -- Modify the output of 'scontrol show partition' by displaying
    DefMemPerCPU=UNLIMITED and MaxMemPerCPU=UNLIMITED when these limits are
    configured as 0.
 -- mpirun-mic - Major re-write of the command wrapper for Xeon Phi use.
 -- Add new configuration parameter of AuthInfo to specify port used by
    authentication plugin.
 -- Fixed conditional RPM compiling.
 -- Corrected slurmstepd ident name when logging to syslog.
 -- Fixed sh5util loop when there are no node-step files.
 -- Add SLURM_CLUSTER_NAME to environment variables passed to PrologSlurmctld,
    Prolog, EpilogSlurmctld, and Epilog
 -- Add the idea of running a prolog right when an allocation happens
    instead of when running on the node for the first time.
 -- If user runs 'scontrol reconfig' but hostnames or the host count changes
    the slurmctld throws a fatal error.
 -- gres.conf - Add "NodeName" specification so that a single gres.conf file
    can be used for a heterogeneous cluster.
 -- Add flag to accounting RPC to indicate if job data is packed or not.
 -- After all srun tasks have terminated on a node close the stdout/stderr
    channel with the slurmstepd on that node.
 -- In case of i/o error with slurmstepd log an error message and abort the
    job.
 -- Add --test-only option to sbatch command to validate the script and options.
    The response includes expected start time and resources to be allocated.

* Changes in Slurm 14.03.0pre4
==============================
 -- Remove the ThreadID documentation from slurm.conf. This functionality has
    been obsoleted by the LogTimeFormat.
 -- Sched plugins - rename global and plugin functions names for consistency
    with other plugin types.
 -- BGQ - Added RebootQOSList option to bluegene.conf to allow an implicate
    reboot of a block if only jobs in the list are running on it when cnodes
    go into a failure state.
 -- Correct task count of pending job steps.
 -- Improve limit enforcement for jobs, set RLIMIT_RSS, RLIMIT_AS and/or
    RLIMIT_DATA to enforce memory limit.
 -- Pending job steps will have step_id of INFINITE rather than NO_VAL and
    will be reported as "TBD" by scontrol and squeue commands.
 -- Add logic so PMI_Abort or PMI2_Abort can propagate an exit code.
 -- Added SlurmdPlugstack configuration parameter.
 -- Added PriorityFlag DEPTH_OBLIVIOUS to have the depth of an association
    not effect it's priorty.
 -- Multi-thread the sinfo command (one thread per partition).
 -- Added sgather tool to gather files from a job's compute nodes into a
    central location.
 -- Added configuration parameter FairShareDampeningFactor to offer a greater
    priority range based upon utilization.
 -- Change MaxArraySize and job's array_task_id from 16-bit to 32-bit field.
    Additional Slurm enhancements are be required to support larger job arrays.
 -- Added -S/--core-spec option to salloc, sbatch and srun commands to reserve
    specialized cores for system use. Modify scontrol and sview to get/set
    the new field. No enforcement exists yet for these new options.
    struct job_info / slurm_job_info_t: Added core_spec
    struct job_descriptorjob_desc_msg_t: Added core_spec

* Changes in Slurm 14.03.0pre3
==============================
 -- Do not set SLURM_NODEID environment variable on front-end systems.
 -- Convert bitmap functions to use int32_t instead of int in data structures
    and function arguments. This is to reliably enable use of bitmaps containing
    up to 4 billion elements. Several data structures containing index values
    were also changed from data type int to int32_t:
    - Struct job_info / slurm_job_info_t: Changed exc_node_inx, node_inx, and
      req_node_inx from type int to type int32_t
    - job_step_info_t: Changed node_inx from type int to type int32_t
    - Struct partition_info / partition_info_t: Changed node_inx from type int
      to type int32_t
    - block_job_info_t: Changed cnode_inx from type int to type int32_t
    - block_info_t: Changed ionode_inx and mp_inx from type int to type int32_t
    - Struct reserve_info / reserve_info_t: Changed node_inx from type int to
      type int32_t
 -- Modify qsub wrapper output to match torque command output, just print the
    job ID rather than "Submitted batch job #"
 -- Change Slurm error string for ESLURM_MISSING_TIME_LIMIT from
    "Missing time limit" to
    "Time limit specification required, but not provided"
 -- Change salloc job_allocate error message header from
    "Failed to allocate resources" to
    "Job submit/allocate failed"
 -- Modify slurmctld message retry logic to support Cray cold-standby SDB.

* Changes in Slurm 14.03.0pre2
==============================
 -- Added "JobAcctGatherParams" configuration parameter. Value of "NoShare"
    disables accounting for shared memory.
 -- Added fields to "scontrol show job" output: boards_per_node,
    sockets_per_board, ntasks_per_node, ntasks_per_board, ntasks_per_socket,
    ntasks_per_core, and nice.
 -- Add squeue output format options for job command and working directory
    (%o and %Z respectively).
 -- Add stdin/out/err to sview job output.
 -- Add new job_state of JOB_BOOT_FAIL for job terminations due to failure to
    boot it's allocated nodes or BlueGene block.
 -- CRAY - Add SelectTypeParameters NHC_NO_STEPS and NHC_NO which will disable
    the node health check script for steps and allocations respectfully.
 -- Reservation with CoreCnt: Avoid possible invalid memory reference.
 -- Add new error code for attempt to create a reservation with duplicate name.
 -- Validate that a hostlist file contains text (i.e. not a binary).
 -- switch/generic - propagate switch information from srun down to slurmd and
    slurmstepd.
 -- CRAY - Do not package Slurm's libpmi or libpmi2 libraries. The Cray version
    of those libraries must be used.
 -- Added a new option to the scontrol command to view licenses that are
    configured in use and avalable. 'scontrol show licenses'.
 -- MySQL - Made Slurm compatible with 5.6

* Changes in Slurm 14.03.0pre1
==============================
 -- sview - improve scalability
 -- Add task pointer to the task_post_term() function in task plugins. The
    terminating task's PID is available in task->pid.
 -- Move select/cray to select/alps
 -- Defer sending SIGKILL signal to processes while core dump in progress.
 -- Added JobContainerPlugin configuration parameter and plugin infrastructure.
 -- Added partition configuration parameters AllowAccounts, AllowQOS,
    DenyAccounts and DenyQOS.
 -- The rpmbuild option for a cray system with ALPS has changed from
    %_with_cray to %_with_cray_alps.
 -- The log file timestamp format can now be selected at runtime via the
    LogTimeFormat configuration option. See the slurm.conf and slurmdbd.conf
    man pages for details.
 -- Added switch/generic plugin to a job's convey network topology.
 -- BLUEGENE - If block is in 'D' state or has more cnodes in error than
    MaxBlockInError set the job wait reason appropriately.
 -- API use: Generate an error return rather than fatal error and exit if the
    configuraiton file is absent or invalid. This will permit Slurm APIs to be
    more reliably used by other programs.
 -- Add support for load-based scheduling, allocate jobs to nodes with the
    largest number of available CPUs. Added SchedulingParameters paramter of
    "CR_LLN" and partition parameter of "LLN=yes|no".
 -- Added job_info() and step_info() functions to the gres plugins to extract
    plugin specific fields from the job's or step's GRES data structure.
 -- Added sbatch --signal option of "B:" to signal the batch shell rather than
    only the spawned job steps.
 -- Added sinfo and squeue format option of "%all" to print all fields available
    for the data type with a vertical bar separating each field.
 -- Add mechanism for job_submit plugin to generate error message for srun,
    salloc or sbatch to stderr. New argument added to job_submit function in
    the plugin.
 -- Add StdIn, StdOut, and StdErr paths to job information dumped with
    "scontrol show job".
 -- Permit Slurm administrator to submit a batch job as any user.
 -- Set a job's RLIMIT_AS limit based upon it's memory limit and VsizeFactor
    configuration value.
 -- Remove Postgres plugins
 -- Make jobacct_gather/cgroup work correctly and also make all jobacct_gather
    plugins more maintainable.
 -- Proctrack/pgid - Add support for proctrack_p_plugin_get_pids() function.
 -- Sched/backfill - Change default max_job_bf parameter from 50 to 100.
 -- Added -I|--item-extract option to sh5util to extract data item from series.

* Changes in Slurm 2.6.10
=========================
 -- Switch/nrt - On switch resource allocation failure, free partial allocation.
 -- Switch/nrt - Properly track usage of CAU and RDMA resources with multiple
    tasks per compute node.
 -- Fix issue where user is requesting --acctg-freq=0 and no memory limits.
 -- BGQ - Temp fix issue where job could be left on job_list after it finished.
 -- BGQ - Fix issue where limits were checked on midplane counts instead of
    cnode counts.
 -- BGQ - Move code to only start job on a block after limits are checked.
 -- Handle node ranges better when dealing with accounting max node limits.
 -- Fix perlapi to compile correctly with perl 5.18
 -- BGQ - Fix issue with uninitialized variable.
 -- Correct sinfo --sort fields to match documentation: E => Reason,
    H -> Reason Time (new), R -> Partition Name, u/U -> Reason user (new)
 -- If an invalid assoc_ptr comes in don't use the id to verify it.
 -- Sched/backfill modified to avoid using nodes in completing state.
 -- Correct support for job --profile=none option and related documentation.
 -- Properly enforce job --requeue and --norequeue options.
 -- If a job --mem-per-cpu limit exceeds the partition or system limit, then
    scale the job's memory limit and CPUs per task to satisfy the limit.
 -- Correct logic to support Power7 processor with 1 or 2 threads per core
    (CPU IDs are not consecutive).

* Changes in Slurm 2.6.9
========================
 -- Fix sinfo to work correctly with draining/mixed nodes as well as filtering
    on Mixed state.
 -- Fix sacctmgr update user with no "where" condition.
 -- Fix logic bugs for SchedulerParameters option of max_rpc_cnt.

* Changes in Slurm 2.6.8
========================
 -- Add support for Torque/PBS job array options and environment variables.
 -- CRAY/ALPS - Add support for CLE52
 -- Fix issue where jobs still pending after a reservation would remain
    in waiting reason ReqNodeNotAvail.
 -- Update last_job_update when a job's state_reason was modified.
 -- Free job_ptr->state_desc where ever state_reason is set.
 -- Fixed sacct.1 and srun.1 manual pages which contains a hyphen where
    a minus sign for options was intended.
 -- sinfo - Make sure if partition name is long and the default the last char
    doesn't get chopped off.
 -- task/affinity - Protect against zero divide when simulating more hardware
    than you really have.
 -- NRT - Fix issue with 1 node jobs.  It turns out the network does need to
    be setup for 1 node jobs.
 -- Fix recovery of job dependency on task of job array when slurmctld restarts.
 -- mysql - Fix invalid memory reference.
 -- Lock the /cgroup/freezer subsystem when creating files for tracking processes.
 -- Fix preempt/partition_prio to avoid preempting jobs in partitions with
    PreemptMode=OFF
 -- launch/poe - Implicitly set --network in job step create request as needed.
 -- Permit multiple batch job submissions to be made for each run of the
    scheduler logic if the job submissions occur at the nearly same time.
 -- Fix issue where associations weren't correct if backup takes control and
    new associations were added since it was started.
 -- Fix race condition is corner case with backup slurmctld.
 -- With the backup slurmctld make sure we reinit beginning values in the
    slurmdbd plugin.
 -- Fix sinfo to work correctly with draining/mixed nodes.
 -- MySQL - Fix it so a lock isn't held unnecessarily.
 -- Added new SchedulerParameters option of max_rpc_cnt when too many RPCs
    are active.
 -- BGQ - Fix deny_pass to work correctly.
 -- BGQ - Fix sub block steps using a block when the block has passthrough's
    in it.

* Changes in Slurm 2.6.7
========================
 -- Properly enforce a job's cpus-per-task option when a job's allocation is
    constrained on some nodes by the mem-per-cpu option.
 -- Correct the slurm.conf man pages and checkpoint_blcr.html page
    describing that jobs must be drained from cluster before deploying
    any checkpoint plugin. Corrected in version 14.03.
 -- Fix issue where if using munge and munge wasn't running and a slurmd
    needed to forward a message, the slurmd would core dump.
 -- Update srun.1 man page documenting the PMI2 support.
 -- Fix slurmctld core dump when a jobs gets its QOS updated but there
    is not a corresponding association.
 -- If a job requires specific nodes and can not run due to those nodes being
    busy, the main scheduling loop will block those specific nodes rather than
    the entire queue/partition.
 -- Fix minor memory leak when updating a job's name.
 -- Fix minor memory leak when updating a reservation on a partition using "ALL"
    nodes.
 -- Fix minor memory leak when adding a reservation with a nodelist and core
    count.
 -- Update sacct man page description of job states.
 -- BGQ - Fix minor memory leak when selecting blocks that can't immediately be
    placed.
 -- Fixed minor memory leak in backfill scheduler.
 -- MYSQL - Fixed memory leak when querying clusters.
 -- MYSQL - Fix when updating QOS on an association.
 -- NRT - Fix to supply correct error messages to poe/pmd when a launch fails.
 -- Add SLURM_STEP_ID to Prolog environment.
 -- Add support for SchedulerParameters value of bf_max_job_start that limits
    the total number of jobs that can be started in a single iteration of the
    backfill scheduler.
 -- Don't print negative number when dealing with large memory sizes with
    sacct.
 -- Fix sinfo output so that host in state allocated and mixed will not be
    merged together.
 -- GRES: Avoid crash if GRES configurations is inconstent.
 -- Make S_SLURM_RESTART_COUNT item available to SPANK.
 -- Munge plugins - Add sleep between retries if can't connect to socket.
 -- Fix the database query to return all pending jobs in a given time interval.
 -- switch/nrt - Correct logic to get dynamic window count.
 -- Remove need to use job->ctx_params in the launch plugin, just to simplify
    code.
 -- NRT - Fix possible memory leak if using multiple adapters.
 -- NRT - Fix issue where there are more than NRT_MAXADAPTERS on a system.
 -- NRT - Increase Max number of adapters from 8 -> 9
 -- NRT - Initialize missing variables when the PMD is starting a job.
 -- NRT - Fix issue where we are launching hosts out of numerical order,
    this would cause pmd's to hang.
 -- NRT - Change xmalloc's to malloc just to be safe.
 -- NRT - Sanity check to make sure a jobinfo is there before packing.
 -- Add missing options to the print of TaskPluginParam.
 -- Fix a couple of issues with scontrol reconfig and adding nodes to
    slurm.conf.  Rebooting daemons after adding nodes to the slurm.conf
    is highly recommended.

* Changes in Slurm 2.6.6
========================
 -- sched/backfill - Fix bug that could result in failing to reserve resources
    for high priority jobs.
 -- Correct job RunTime if requeued from suspended state.
 -- Reset job priority from zero (held) on manual resume from suspend state.
 -- If FastSchedule=0 then do not DOWN a node with low memory or disk size.
 -- Remove vestigial note.
 -- Update sshare.1 man page making it consistent with sacctmgr.1.
 -- Do not reset a job's priority when the slurmctld restarts if previously
    set to some specific value.
 -- sview - Fix regression where the Node tab wasn't able to add/remove columns.
 -- Fix slurmstepd lock when job terminates inside the infiniband
    network traffic accounting plugin.
 -- Correct the documentation to read filesystem instead of Lustre. Update
    the srun help.
 -- Fix the acct_gather_filesystem_lustre.c to compute the Lustre accounting
    data correctly accumulating differences between sampling intervals.
    Fix the data structure mismatch between acct_gather_filesystem_lustre.c
    and slurm_jobacct_gather.h which caused the hdf5 plugin to log incorrect
    data.
 -- Don't allow PMI_TIME to be zero which will cause floating exception.
 -- Fix purging of old reservation errors in database.
 -- MYSQL - If starting the plugin and the database isn't up attempt to
    connect in a loop instead of producing a fatal.
 -- BLUEGENE - If IONodesPerMP changes in bluegene.conf recalculate bitmaps
    based on ionode count correctly on slurmctld restart.
 -- Fix step allocation when some CPUs are not available due to memory limits.
    This happens when one step is active and using memory that blocks the
    scheduling of another step on a portion of the CPUs needed. The new step
    is now delayed rather than aborting with "Requested node configuration is
    not available".
 -- Make sure node limits get assessed if no node count was given in request.
 -- Removed obsolete slurm_terminate_job() API.
 -- Update documentation about QOS limits
 -- Retry task exit message from slurmstepd to srun on message timeout.
 -- Correction to logic reserving all nodes in a specified partition.
 -- Added support for selecting AMD GPU by setting GPU_DEVICE_ORDINAL env var.
 -- Properly enforce GrpSubmit limit for job arrays.
 -- CRAY - fix issue with using CR_ONE_TASK_PER_CORE
 -- CRAY - fix memory leak when using accelerators

* Changes in Slurm 2.6.5
========================
 -- Correction to hostlist parsing bug introduced in v2.6.4 for hostlists with
    more than one numeric range in brackets (e.g. rack[0-3]_blade[0-63]").
 -- Add notification if using proctrack/cgroup and task/cgroup when oom hits.
 -- Corrections to advanced reservation logic with overlapping jobs.
 -- job_submit/lua - add cpus_per_task field to those available.
 -- Add cpu_load to the node information available using the Perl API.
 -- Correct a job's GRES allocation data in accounting records for non-Cray
    systems.
 -- Substantial performance improvement for systems with Shared=YES or FORCE
    and large numbers of running jobs (replace bubble sort with quick sort).
 -- proctrack/cgroup - Add locking to prevent race condition where one job step
    is ending for a user or job at the same time another job stepsis starting
    and the user or job container is deleted from under the starting job step.
 -- Fixed sh5util loop when there are no node-step files.
 -- Fix race condition on batch job termination that could result in a job exit
    code of 0xfffffffe if the slurmd on node zero registers its active jobs at
    the same time that slurmstepd is recording the job's exit code.
 -- Correct logic returning remaining job dependencies in job information
    reported by scontrol and squeue. Eliminates vestigial descriptors with
    no job ID values (e.g. "afterany").
 -- Improve performance of REQUEST_JOB_INFO_SINGLE RPC by removing unnecessary
    locks and use hash function to find the desired job.
 -- jobcomp/filetxt - Reopen the file when slurmctld daemon is reconfigured
    or gets SIGHUP.
 -- Remove notice of CVE with very old/deprecated versions of Slurm in
    news.html.
 -- Fix if hwloc_get_nbobjs_by_type() returns zero core count (set to 1).
 -- Added ApbasilTimeout parameter to the cray.conf configuration file.
 -- Handle in the API if parts of the node structure are NULL.
 -- Fix srun hang when IO fails to start at launch.
 -- Fix for GRES bitmap not matching the GRES count resulting in abort
    (requires manual resetting of GRES count, changes to gres.conf file,
    and slurmd restarts).
 -- Modify sview to better support job arrays.
 -- Modify squeue to support longer job ID values (for many job array tasks).
 -- Fix race condition in authentication credential creation that could corrupt
    memory. (NOTE: This race condition has existed since 2003 and would be
    exceedingly rare.)
 -- HDF5 - Fix minor memory leak.
 -- Slurmstepd variable initialization - Without this patch, free() is called
    on a random memory location (i.e. whatever is on the stack), which can
    result in slurmstepd dying and a completed job not being purged in a
    timely fashion.
 -- Fix slurmstepd race condition when separate threads are reading and
    modifying the job's environment, which can result in the slurmstepd failing
    with an invalid memory reference.
 -- Fix erroneous error messages when running gang scheduling.
 -- Fix minor memory leak.
 -- scontrol modified to suspend, resume, hold, uhold, or release multiple
    jobs in a space separated list.
 -- Minor debug error when a connection goes away at the end of a job.
 -- Validate return code from calls to slurm_get_peer_addr
 -- BGQ - Fix issues with making sure all cnodes are accounted for when multiple
    steps cause multiple cnodes in one allocation to go into error at the
    same time.
 -- scontrol show job - Correct NumNodes value calculated based upon job
    specifications.
 -- BGQ - Fix issue if user runs multiple sub-block jobs inside a multiple
    midplane block that starts on a higher coordinate than it ends (i.e if a
    block has midplanes [0010,0013] 0013 is the start even though it is
    listed second in the hostlist).
 -- BGQ - Add midplane to the total_cnodes used in the runjob_mux plugin
    for better debug.
 -- Update AllocNodes paragraph in slurm.conf.5.

* Changes in Slurm 2.6.4
========================
 -- Fixed sh5util to print its usage.
 -- Corrected commit f9a3c7e4e8ec.
 -- Honor ntasks-per-node option with exclusive node allocations.
 -- sched/backfill - Prevent invalid memory reference if bf_continue option is
    configured and slurm is reconfigured during one of the sleep cycles or if
    there are any changes to the partition configuration or if the normal
    scheduler runs and starts a job that the backfill scheduler is actively
    working on.
 -- Update man pages information about acct-freq and JobAcctGatherFrequency
    to reflect only the latest supported format.
 -- Minor document update to include note about PrivateData=Usage for the
    slurm.conf when using the DBD.
 -- Expand information reported with DebugFlags=backfill.
 -- Initiate jobs pending to run in a reservation as soon as the reservation
    becomes active.
 -- Purged expired reservation even if it has pending jobs.
 -- Corrections to calculation of a pending job's expected start time.
 -- Remove some vestigial logic treating job priority of 1 as a special case.
 -- Memory freeing up to avoid minor memory leaks at close of daemons
 -- Updated documentation to give correct units being displayed.
 -- Report AccountingStorageBackupHost with "scontrol show config".
 -- init scripts ignore quotes around Pid file name specifications.
 -- Fixed typo about command case in quickstart.html.
 -- task/cgroup - handle new cpuset files, similar to commit c4223940.
 -- Replace the tempname() function call with mkstemp().
 -- Fix for --cpu_bind=map_cpu/mask_cpu/map_ldom/mask_ldom plus
    --mem_bind=map_mem/mask_mem options, broken in 2.6.2.
 -- Restore default behavior of allocating cores to jobs on a cyclic basis
    across the sockets unless SelectTypeParameters=CR_CORE_DEFAULT_DIST_BLOCK
    or user specifies other distribution options.
 -- Enforce JobRequeue configuration parameter on node failure. Previously
    always requeued the job.
 -- acct_gather_energy/ipmi - Add delay before retry on read error.
 -- select/cons_res with GRES and multiple threads per core, fix possible
    infinite loop.
 -- proctrack/cgroup - Add cgroup create retry logic in case one step is
    starting at the same time as another step is ending and the logic to create
    and delete cgroups overlaps.
 -- Improve setting of job wait "Reason" field.
 -- Correct sbatch documentation and job_submit/pbs plugin "%j" is job ID,
    not "%J" (which is job_id.step_id).
 -- Improvements to sinfo performance, especially for large numbers of
    partitions.
 -- SlurmdDebug - Permit changes to slurmd debug level with "scontrol reconfig"
 -- smap - Avoid invalid memory reference with hidden nodes.
 -- Fix sacctmgr modify qos set preempt+/-=.
 -- BLUEGENE - fix issue where node count wasn't set up correctly when srun
    preforms the allocation, regression in 2.6.3.
 -- Add support for dependencies of job array elements (e.g.
    "sbatch --depend=afterok:123_4 ...") or all elements of a job array (e.g.
    "sbatch --depend=afterok:123 ...").
 -- Add support for new options in sbatch qsub wrapper:
    -W block=true	(wait for job completion)
    Clear PBS_NODEFILE environment variable
 -- Fixed the MaxSubmitJobsPerUser limit in QOS which limited submissions
    a job too early.
 -- sched/wiki, sched/wiki2 - Fix to work with change logic introduced in
    version 2.6.3 preventing Maui/Moab from starting jobs.
 -- Updated the QOS limits documentation and man page.

* Changes in Slurm 2.6.3
========================
 -- Add support for some new #PBS options in sbatch scripts and qsub wrapper:
    -l accelerator=true|false	(GPU use)
    -l mpiprocs=#	(processors per node)
    -l naccelerators=#	(GPU count)
    -l select=#		(node count)
    -l ncpus=#		(task count)
    -v key=value	(environment variable)
    -W depend=opts	(job dependencies, including "on" and "before" options)
    -W umask=#		(set job's umask)
 -- Added qalter and qrerun commands to torque package.
 -- Corrections to qstat logic: job CPU count and partition time format.
 -- Add job_submit/pbs plugin to translate PBS job dependency options to the
    extend possible (no support for PBS "before" options) and set some PBS
    environment variables.
 -- Add spank/pbs plugin to set a bunch of PBS environment variables.
 -- Backported sh5util from master to 2.6 as there are some important
    bugfixes and the new item extraction feature.
 -- select/cons_res - Correct MacCPUsPerNode partition constraint for CR_Socket.
 -- scontrol - for setdebugflags command, avoid parsing "-flagname" as an
    scontrol command line option.
 -- Fix issue with step accounting if a job is requeued.
 -- Close file descriptors on exec of prolog, epilog, etc.
 -- Fix issue when a user has held a job and then sets the begin time
    into the future.
 -- Scontrol - Enable changing a job's stdout file.
 -- Fix issues where memory or node count of a srun job is altered while the
    srun is pending.  The step creation would use the old values and possibly
    hang srun since the step wouldn't be able to be created in the modified
    allocation.
 -- Add support for new SchedulerParameters value of "bf_max_job_part", the
    maximum depth the backfill scheduler should go in any single partition.
 -- acct_gather/infiniband plugin - Correct packets_in/out values.
 -- BLUEGENE - Don't ignore a conn-type request from the user.
 -- BGQ - Force a request on a Q for a MESH to be a TORUS in a dimension that
    can only be a TORUS (1).
 -- Change max message length from 100MB to 1GB before generating "Insane
    message length" error.
 -- sched/backfill - Prevent possible memory corruption due to use of
    bf_continue option and long running scheduling cycle (pending jobs could
    have been cancelled and purged).
 -- CRAY - fix AcceleratorAllocation depth correctly for basil 1.3
 -- Created the environment variable SLURM_JOB_NUM_NODES for srun jobs and
    updated the srun man page.
 -- BLUEGENE/CRAY - Don't set env variables that pertain to a node when Slurm
    isn't doing the launching.
 -- gres/gpu and gres/mic - Do not treat the existence of an empty gres.conf
    file as a fatal error.
 -- Fixed for if hours are specified as 0 the time days-0:min specification
    is not parsed correctly.
 -- switch/nrt - Fix for memory leak.
 -- Subtract the PMII_COMMANDLEN_SIZE in contribs/pmi2/pmi2_api.c to prevent
    certain implementation of snprintf() to segfault.

* Changes in Slurm 2.6.2
========================
 -- Fix issue with reconfig and GrpCPURunMins
 -- Fix of wrong node/job state problem after reconfig
 -- Allow users who are coordinators update their own limits in the accounts
    they are coordinators over.
 -- BackupController - Make sure we have a connection to the DBD first thing
    to avoid it thinking we don't have a cluster name.
 -- Correct value of min_nodes returned by loading job information to consider
    the job's task count and maximum CPUs per node.
 -- If running jobacct_gather/none fix issue on unpacking step completion.
 -- Reservation with CoreCnt: Avoid possible invalid memory reference.
 -- sjstat - Add man page when generating rpms.
 -- Make sure GrpCPURunMins is added when creating a user, account or QOS with
    sacctmgr.
 -- Fix for invalid memory reference due to multiple free calls caused by
    job arrays submitted to multiple partitions.
 -- Enforce --ntasks-per-socket=1 job option when allocating by socket.
 -- Validate permissions of key directories at slurmctld startup. Report
    anything that is world writable.
 -- Improve GRES support for CPU topology. Previous logic would pick CPUs then
    reject jobs that can not match GRES to the allocated CPUs. New logic first
    filters out CPUs that can not use the GRES, next picks CPUs for the job,
    and finally picks the GRES that best match those CPUs.
 -- Switch/nrt - Prevent invalid memory reference when allocating single adapter
    per node of specific adapter type
 -- CRAY - Make Slurm work with CLE 5.1.1
 -- Fix segfault if submitting to multiple partitions and holding the job.
 -- Use MAXPATHLEN instead of the hardcoded value 1024 for maximum file path
    lengths.
 -- If OverTimeLimit is defined do not declare failed those jobs that ended
    in the OverTimeLimit interval.

* Changes in Slurm 2.6.1
========================
 -- slurmdbd - Allow job derived ec and comments to be modified by non-root
    users.
 -- Fix issue with job name being truncated to 24 chars when sending a mail
    message.
 -- Fix minor issues with spec file, missing files and including files
    erroneously on a bluegene system.
 -- sacct - fix --name and --partition options when using
    accounting_storage/filetxt.
 -- squeue - Remove extra whitespace of default printout.
 -- BGQ - added head ppcfloor as an include dir when building.
 -- BGQ - Better debug messages in runjob_mux plugin.
 -- PMI2 Updated the Makefile.am to build a versioned library.
 -- CRAY - Fix srun --mem_bind=local option with launch/aprun.
 -- PMI2 Corrected buffer size computation in the pmi2_api.c module.
 -- GRES accounting data wrong in database: gres_alloc, gres_req, and gres_used
    fields were empty if the job was not started immediately.
 -- Fix sbatch and srun task count logic when --ntasks-per-node specified,
    but no explicit task count.
 -- Corrected the hdf5 profile user guide and the acct_gather.conf
    documentation.
 -- IPMI - Fix Math bug getting new wattage.
 -- Corrected the AcctGatherProfileType documentation in slurm.conf
 -- Corrected the sh5util program to print the header in the csv file
    only once, set the debug messages at debug() level, make the argument
    check case insensitive and avoid printing duplicate \n.
 -- If cannot collect energy values send message to the controller
    to drain the node and log error slurmd log file.
 -- Handle complete removal of CPURunMins time at the end of the job instead
    of at multifactor poll.
 -- sview - Add missing debug_flag options.
 -- PGSQL - Notes about Postgres functionality being removed in the next
    version of Slurm.
 -- MYSQL - fix issue when rolling up usage and events happened when a cluster
    was down (slurmctld not running) during that time period.
 -- sched/wiki2 - Insure that Moab gets current CPU load information.
 -- Prevent infinite loop in parsing configuration if including file containing
    one blank line.
 -- Fix pack and unpack between 2.6 and 2.5.
 -- Fix job state recovery logic in which a job's accounting frequency was
    not set. This would result in a value of 65534 seconds being used (the
    equivalent of NO_VAL in uint16_t), which could result in the job being
    requeued or aborted.
 -- Validate a job's accounting frequency at submission time rather than
    waiting for it's initiation to possibly fail.
 -- Fix CPURunMins if a job is requeued from a failed launch.
 -- Fix in accounting_storage/filetxt to correct start times which sometimes
    could end up before the job started.
 -- Fix issue with potentially referencing past an array in parse_time()
 -- CRAY - fix issue with accelerators on a cray when parsing BASIL 1.3 XML.
 -- Fix issue with a 2.5 slurmstepd locking up when talking to a 2.6 slurmd.
 -- Add argument to priority plugin's priority_p_reconfig function to note
    when the association and QOS used_cpu_run_secs field has been reset.

* Changes in Slurm 2.6.0
========================
 -- Fix it so bluegene and serial systems don't get warnings over new NODEDATA
    enum.
 -- When a job is aborted send a message for any tasks that have completed.
 -- Correction to memory per CPU calculation on system with threads and
    allocating cores or sockets.
 -- Requeue batch job if it's node reboots (used to abort the job).
 -- Enlarge maximum size of srun's hostlist file.
 -- IPMI - Fix first poll to get correct consumed_energy for a step.
 -- Correction to job state recovery logic that could result in assert failure.
 -- Record partial step accounting record if allocated nodes fail abnormally.
 -- Accounting - fix issue where PrivateData=jobs or users could potentially
    show information to users that had no associations on the system.
 -- Make PrivateData in slurmdbd.conf case insensitive.
 -- sacct/sstat - Add format option ConsumedEnergyRaw to print full energy
    values.

* Changes in Slurm 2.6.0rc2
===========================
 -- HDF5 - Fix issue with Ubuntu where HDF5 development headers are
    overwritten by the parallel versions thus making it so we need handle
    both cases.
 -- ACCT_GATHER - handle suspending correctly for polling threads.
 -- Make SLURM_DISTRIBUTION env var hold both types of distribution if
    specified.
 -- Remove hardcoded /usr/local from slurm.spec.
 -- Modify slurmctld locking to improve performance under heavy load with
    very large numbers of batch job submissions or job cancellations.
 -- sstat - Fix issue where if -j wasn't given allow last argument to be checked
    for as the job/step id.
 -- IPMI - fix adjustment on poll when using EnergyIPMICalcAdjustment.

* Changes in Slurm 2.6.0rc1
===========================
 -- Added helper script for launching symmetric and MIC-only MPI tasks within
    SLURM (in contribs/mic/mpirun-mic).
 -- Change maximum delay for state save from 2 secs to 5 secs. Make timeout
    configurable at build time by defining SAVE_MAX_WAIT.
 -- Modify slurmctld data structure locking to interleave read and write
    locks rather than always favor write locks over read locks.
 -- Added sacct format option of "ALL" to print all fields.
 -- Deprecate the SchedulerParameters value of "interval" use "bf_interval"
    instead as documented.
 -- Add acct_gather_profile/hdf5 to profile jobs with hdf5
 -- Added MaxCPUsPerNode partition configuration parameter. This can be
    especially useful to schedule systems with GPUs.
 -- Permit "scontrol reboot_node" for nodes in MAINT reservation.
 -- Added "PriorityFlags" value of "SMALL_RELATIVE_TO_TIME". If set, the job's
    size component will be based upon not the job size alone, but the job's
    size divided by it's time limit.
 -- Added sbatch option "--ignore-pbs" to ignore "#PBS" options in the batch
    script.
 -- Rename slurm_step_ctx_params_t field from "mem_per_cpu" to "pn_min_memory".
    Job step now accepts memory specification in either per-cpu or per-node
    basis.
 -- Add ability to specify host repitition count in the srun hostfile (e.g.
    "host1*2" is equivalent to "host1,host1").

* Changes in Slurm 2.6.0pre3
============================
 -- Add milliseconds to default log message header (both RFC 5424 and ISO 8601
    time formats). Disable milliseconds logging using the configure
    parameter "--disable-log-time-msec". Default time format changes to
    ISO 8601 (without time zone information). Specify "--enable-rfc5424time"
    to restore the time zone information.
 -- Add username (%u) to the filename pattern in the batch script.
 -- Added options for front end nodes of AllowGroups, AllowUsers, DenyGroups,
    and DenyUsers.
 -- Fix sched/backfill logic to initiate jobs with maximum time limit over the
    partition limit, but the minimum time limit permits it to start.
 -- gres/gpu - Fix for gres.conf file with multiple files on a single line
    using a slurm expression (e.g. "File=/dev/nvidia[0-1]").
 -- Replaced ipmi.conf with generic acct_gather.conf file for all acct_gather
    plugins.  For those doing development to use this follow the model set
    forth in the acct_gather_energy_ipmi plugin.
 -- Added more options to update a step's information
 -- Add DebugFlags=ThreadID which will print the thread id of the calling
    thread.
 -- CRAY - Allocate whole node (CPUs) in reservation despite what the
    user requests.  We have found any srun/aprun afterwards will work on a
    subset of resources.

* Changes in Slurm 2.6.0pre2
============================
 -- Do not purge inactive interactive jobs that lack a port to ping (added
    for MR+ operation).
 -- Advanced reservations with hostname and core counts now supports asymetric
    reservations (e.g. specific different core count for each node).
 -- Added slurmctld/dynalloc plugin for MapReduce+ support.
 -- Added "DynAllocPort" configuration parameter.
 -- Added partition paramter of SelectTypeParameters to override system-wide
    value.
 -- Added cr_type to partition_info data structure.
 -- Added allocated memory to node information available (within the existing
    select_nodeinfo field of the node_info_t data structure). Added Allocated
    Memory to node information displayed by sview and scontrol commands.
 -- Make sched/backfill the default scheduling plugin rather than sched/builtin
    (FIFO).
 -- Added support for a job having different priorities in different partitions.
 -- Added new SchedulerParameters configuration parameter of "bf_continue"
    which permits the backfill scheduler to continue considering jobs for
    backfill scheduling after yielding locks even if new jobs have been
    submitted. This can result in lower priority jobs from being backfill
    scheduled instead of newly arrived higher priority jobs, but will permit
    more queued jobs to be considered for backfill scheduling.
 -- Added support to purge reservation records from accounting.
 -- Cray - Add support for Basil 1.3

* Changes in SLURM 2.6.0pre1
============================
 -- Add "state" field to job step information reported by scontrol.
 -- Notify srun to retry step creation upon completion of other job steps
    rather than polling. This results in much faster throughput for job step
    execution with --exclusive option.
 -- Added "ResvEpilog" and "ResvProlog" configuration parameters to execute a
    program at the beginning and end of each reservation.
 -- Added "slurm_load_job_user" function. This is a variation of
    "slurm_load_jobs", but accepts a user ID argument, potentially resulting
    in substantial performance improvement for "squeue --user=ID"
 -- Added "slurm_load_node_single" function. This is a variation of
    "slurm_load_nodes", but accepts a node name argument, potentially resulting
    in substantial performance improvement for "sinfo --nodes=NAME".
 -- Added "HealthCheckNodeState" configuration parameter identify node states
    on which HealthCheckProgram should be executed.
 -- Remove sacct --dump --formatted-dump options which were deprecated in
    2.5.
 -- Added support for job arrays (phase 1 of effort). See "man sbatch" option
    -a/--array for details.
 -- Add new AccountStorageEnforce options of 'nojobs' and 'nosteps' which will
    allow the use of accounting features like associations, qos and limits but
    not keep track of jobs or steps in accounting.
 -- Cray - Add new cray.conf parameter of "AlpsEngine" to specify the
    communication protocol to be used for ALPS/BASIL.
 -- select/cons_res plugin: Correction to CPU allocation count logic in for
    cores without hyperthreading.
 -- Added new SelectTypeParameter value of "CR_ALLOCATE_FULL_SOCKET".
 -- Added PriorityFlags value of "TICKET_BASED" and merged priority/multifactor2
    plugin into priority/multifactor plugin.
 -- Add "KeepAliveTime" configuration parameter controlling how long sockets
    used for srun/slurmstepd communications are kept alive after disconnect.
 -- Added SLURM_SUBMIT_HOST to salloc, sbatch and srun job environment.
 -- Added SLURM_ARRAY_TASK_ID to environment of job array.
 -- Added squeue --array/-r option to optimize output for job arrays.
 -- Added "SlurmctldPlugstack" configuration parameter for generic stack of
    slurmctld daemon plugins.
 -- Removed contribs/arrayrun tool. Use native support for job arrays.
 -- Modify default installation locations for RPMs to match "make install":
    _prefix /usr/local
    _slurm_sysconfdir %{_prefix}/etc/slurm
    _mandir %{_prefix}/share/man
    _infodir %{_prefix}/share/info
 -- Add acct_gather_energy/ipmi which works off freeipmi for energy gathering

* Changes in Slurm 2.5.8
========================
 -- Fix for slurmctld segfault on NULL front-end reason field.
 -- Avoid gres step allocation errors when a job shrinks in size due to either
    down nodes or explicit resizing. Generated slurmctld errors of this type:
    "step_test ... gres_bit_alloc is NULL"
 -- Fix bug that would leak memory and over-write the AllowGroups field if on
    "scontrol reconfig" when AllowNodes is manually changed using scontrol.
 -- Get html/man files to install in correct places with rpms.
 -- Remove --program-prefix from spec file since it appears to be added by
    default and appeared to break other things.
 -- Updated the automake min version in autogen.sh to be correct.
 -- Select/cons_res - Correct total CPU count allocated to a job with
    --exclusive and --cpus-per-task options
 -- switch/nrt - Don't allocate network resources unless job step has 2+ nodes.
 -- select/cons_res - Avoid extraneous "oversubscribe" error messages.
 -- Reorder get config logic to avoid deadlock.
 -- Enforce QOS MaxCPUsMin limit when job submission contains no user-specified
    time limit.
 -- EpilogSlurmctld pthread is passed required arguments rather than a pointer
    to the job record, which under some conditions could be purged and result
    in an invalid memory reference.

* Changes in Slurm 2.5.7
========================
 -- Fix for linking to the select/cray plugin to not give warning about
    undefined variable.
 -- Add missing symbols to the xlator.h
 -- Avoid placing pending jobs in AdminHold state due to backfill scheduler
    interactions with advanced reservation.
 -- Accounting - make average by task not cpu.
 -- CRAY - Change logging of transient ALPS errors from error() to debug().
 -- POE - Correct logic to support poe option "-euidevice sn_all" and
    "-euidevice sn_single".
 -- Accounting - Fix minor initialization error.
 -- POE - Correct logic to support srun network instances count with POE.
 -- POE - With the srun --launch-cmd option, report proper task count when
    the --cpus-per-task option is used without the --ntasks option.
 -- POE - Fix logic binding tasks to CPUs.
 -- sview - Fix race condition where new information could of slipped past
    the node tab and we didn't notice.
 -- Accounting - Fix an invalid memory read when slurmctld sends data about
    start job to slurmdbd.
 -- If a prolog or epilog failure occurs, drain the node rather than setting it
    down and killing all of its jobs.
 -- Priority/multifactor - Avoid underflow in half-life calculation.
 -- POE - pack missing variable to allow fanout (more than 32 nodes)
 -- Prevent clearing reason field for pending jobs. This bug was introduced in
    v2.5.5 (see "Reject job at submit time ...").
 -- BGQ - Fix issue with preemption on sub-block jobs where a job would kill
    all preemptable jobs on the midplane instead of just the ones it needed to.
 -- switch/nrt - Validate dynamic window allocation size.
 -- BGQ - When --geo is requested do not impose the default conn_types.
 -- CRAY - Support CLE 4.2.0
 -- RebootNode logic - Defers (rather than forgets) reboot request with job
    running on the node within a reservation.
 -- switch/nrt - Correct network_id use logic. Correct support for user sn_all
    and sn_single options.
 -- sched/backfill - Modify logic to reduce overhead under heavy load.
 -- Fix job step allocation with --exclusive and --hostlist option.
 -- Select/cons_res - Fix bug resulting in error of "cons_res: sync loop not
    progressing, holding job #"
 -- checkpoint/blcr - Reset max_nodes from zero to NO_VAL on job restart.
 -- launch/poe - Fix for hostlist file support with repeated host names.
 -- priority/multifactor2 - Prevent possible divide by zero.
 -- srun - Don't check for executable if --test-only flag is used.
 -- energy - On a single node only use the last task for gathering energy.
    Since we don't currently track energy usage per task (only per step).
    Otherwise we get double the energy.

* Changes in Slurm 2.5.6
========================
 -- Gres fix for requeued jobs.
 -- Gres accounting - Fix regression in 2.5.5 for keeping track of gres
    requested and allocated.

* Changes in Slurm 2.5.5
========================
 -- Fix for sacctmgr add qos to handle the 'flags' option.
 -- Export SLURM_ environment variables from sbatch, even if "--export"
    option does not explicitly list them.
 -- If node is in more than one partition, correct counting of allocated CPUs.
 -- If step requests more CPUs than possible in specified node count of job
    allocation then return ESLURM_TOO_MANY_REQUESTED_CPUS rather than
    ESLURM_NODES_BUSY and retrying.
 -- CRAY - Fix SLURM_TASKS_PER_NODE to be set correctly.
 -- Accounting - more checks for strings with a possible `'` in it.
 -- sreport - Fix by adding planned down time to utilization reports.
 -- Do not report an error when sstat identifies job steps terminated during
    its execution, but log using debug type message.
 -- Select/cons_res - Permit node removed from job by going down to be returned
    to service and re-used by another job.
 -- Select/cons_res - Tighter packing of job allocations on sockets.
 -- SlurmDBD - fix to allow user root along with the slurm user to register a
    cluster.
 -- Select/cons_res - Fix for support of consecutive node option.
 -- Select/cray - Modify build to enable direct use of libslurm library.
 -- Bug fixes related to job step allocation logic.
 -- Cray - Disable enforcement of MaxTasksPerNode, which is not applicable
    with launch/aprun.
 -- Accounting - When rolling up data from past usage ignore "idle" time from
    a reservation when it has the "Ignore_Jobs" flag set.  Since jobs could run
    outside of the reservation in it's nodes without this you could have
    double time.
 -- Accounting - Minor fix to avoid reuse of variable erroneously.
 -- Reject job at submit time if the node count is invalid. Previously such a
    job submitted to a DOWN partition would be queued.
 -- Purge vestigial job scripts when the slurmd cold starts or slurmstepd
    terminates abnormally.
 -- Add support for FreeBSD.
 -- Add sanity check for NULL cluster names trying to register.
 -- BGQ - Push action 'D' info to scontrol for admins.
 -- Reset a job's reason from PartitionDown when the partition is set up.
 -- BGQ - Handle issue where blocks would have a pending job on them and
    while it was free cnodes would go into software error and kill the job.
 -- BGQ - Fix issue where if for some reason we are freeing a block with
    a pending job on it we don't kill the job.
 -- BGQ - Fix race condition were a job could of been removed from a block
    without it still existing there.  This is extremely rare.
 -- BGQ - Fix for when a step completes in Slurm before the runjob_mux notifies
    the slurmctld there were software errors on some nodes.
 -- BGQ - Fix issue on state recover if block states are not around
    and when reading in state from DB2 we find a block that can't be created.
    You can now do a clean start to rid the bad block.
 -- Modify slurmdbd to retransmit to slurmctld daemon if it is not responding.
 -- BLUEGENE - Fix issue where when doing backfill preemptable jobs were
    never looked at to determine eligibility of backfillable job.
 -- Cray/BlueGene - Disable srun --pty option unless LaunchType=launch/slurm.
 -- CRAY - Fix sanity check for systems with more than 32 cores per node.
 -- CRAY - Remove other objects from MySQL query that are available from
    the XML.
 -- BLUEGENE - Set the geometry of a job when a block is picked and the job
    isn't a sub-block job.
 -- Cray - avoid check of macro versions of CLE for version 5.0.
 -- CRAY - Fix memory issue with reading in the cray.conf file.
 -- CRAY - If hostlist is given with srun make sure the node count is the same
    as the hosts given.
 -- CRAY - If task count specified, but no tasks-per-node, then set the tasks
    per node in the BASIL reservation request.
 -- CRAY - fix issue with --mem option not giving correct amount of memory
    per cpu.
 -- CRAY - Fix if srun --mem is given outside an allocation to set the
    APRUN_DEFAULT_MEMORY env var for aprun.  This scenario will not display
    the option when used with --launch-cmd.
 -- Change sview to use GMutex instead of GStaticMutex
 -- CRAY - set APRUN_DEFAULT_MEMROY instead of CRAY_AUTO_APRUN_OPTIONS
 -- sview - fix issue where if a partition was completely in one state the
    cpu count would be reflected correctly.
 -- BGQ - fix for handling half rack system in STATIC of OVERLAP mode to
    implicitly create full system block.
 -- CRAY - Dynamically create BASIL XML buffer to resize as needed.
 -- Fix checking if QOS limit MaxCPUMinsPJ is set along with DenyOnLimit to
    deny the job instead of holding it.
 -- Make sure on systems that use a different launcher than launch/slurm not
    to attempt to signal tasks on the frontend node.
 -- Cray - when a step is requested count other steps running on nodes in the
    allocation as taking up the entire node instead of just part of the node
    allocated.  And always enforce exclusive on a step request.
 -- Cray - display correct nodelist, node/cpu count on steps.

* Changes in Slurm 2.5.4
========================
 -- Fix bug in PrologSlurmctld use that would block job steps until node
    responds.
 -- CRAY - If a partition has MinNodes=0 and a batch job doesn't request nodes
    put the allocation to 1 instead of 0 which prevents the allocation to
    happen.
 -- Better debug when the database is down and using the --cluster option in
    the user commands.
 -- When asking for job states with sacct, default to 'now' instead of midnight
    of the current day.
 -- Fix for handling a test-only job or immediate job that fails while being
    built.
 -- Comment out all of the logic in the job_submit/defaults plugin. The logic
    is only an example and not meant for actual use.
 -- Eliminate configuration file 4096 character line limitation.
 -- More robust logic for tree message forward
 -- BGQ - When cnodes fail in a timeout fashion correctly look up parent
    midplane.
 -- Correct sinfo "%c" (node's CPU count) output value for Bluegene systems.
 -- Backfill - Responsive improvements for systems with large numbers of jobs
    (>5000) and using the SchedulerParameters option bf_max_job_user.
 -- slurmstepd: ensure that IO redirection openings from/to files correctly
    handle interruption
 -- BGQ - Able to handle when midplanes go into Hardware::SoftwareFailure
 -- GRES - Correct tracking of specific resources used after slurmctld restart.
    Counts would previously go negative as jobs terminate and decrement from
    a base value of zero.
 -- Fix for priority/multifactor2 plugin to not assert when configured with
    --enable-debug.
 -- Select/cons_res - If the job request specified --ntasks-per-socket and the
    allocation using is cores, then pack the tasks onto the sockets up to the
    specified value.
 -- BGQ - If a cnode goes into an 'error' state and the block containing the
    cnode does not have a job running on it do not resume the block.
 -- BGQ - Handle blocks that don't free themselves in a reasonable time better.
 -- BGQ - Fix for signaling steps when allocation ends before step.
 -- Fix for backfill scheduling logic with job preemption; starts more jobs.
 -- xcgroup - remove bugs with EINTR management in write calls
 -- jobacct_gather - fix total values to not always == the max values.
 -- Fix for handling node registration messages from older versions without
    energy data.
 -- BGQ - Allow user to request full dimensional mesh.
 -- sdiag command - Correction to jobs started value reported.
 -- Prevent slurmctld assert when invalid change to reservation with running
    jobs is made.
 -- BGQ - If signal is NODE_FAIL allow forward even if job is completing
    and timeout in the runjob_mux trying to send in this situation.
 -- BGQ - More robust checking for correct node, task, and ntasks-per-node
    options in srun, and push that logic to salloc and sbatch.
 -- GRES topology bug in core selection logic fixed.
 -- Fix to handle init.d script for querying status and not return 1 on
    success.

* Changes in SLURM 2.5.3
========================
 -- Gres/gpu plugin - If no GPUs requested, set CUDA_VISIBLE_DEVICES=NoDevFiles.
    This bug was introduced in 2.5.2 for the case where a GPU count was
    configured, but without device files.
 -- task/affinity plugin - Fix bug in CPU masks for some processors.
 -- Modify sacct command to get format from SACCT_FORMAT environment variable.
 -- BGQ - Changed order of library inclusions and fixed incorrect declaration
    to compile correctly on newer compilers
 -- Fix for not building sview if glib exists on a system but not the gtk libs.
 -- BGQ - Fix for handling a job cleanup on a small block if the job has long
    since left the system.
 -- Fix race condition in job dependency logic which can result in invalid
    memory reference.


* Changes in SLURM 2.5.2
========================
 -- Fix advanced reservation recovery logic when upgrading from version 2.4.
 -- BLUEGENE - fix for QOS/Association node limits.
 -- Add missing "safe" flag from print of AccountStorageEnforce option.
 -- Fix logic to optimize GRES topology with respect to allocated CPUs.
 -- Add job_submit/all_partitions plugin to set a job's default partition
    to ALL available partitions in the cluster.
 -- Modify switch/nrt logic to permit build without libnrt.so library.
 -- Handle srun task launch failure without duplicate error messages or abort.
 -- Fix bug in QoS limits enforcement when slurmctld restarts and user not yet
    added to the QOS list.
 -- Fix issue where sjstat and sjobexitmod was installed in 2 different RPMs.
 -- Fix for job request of multiple partitions in which some partitions lack
    nodes with required features.
 -- Permit a job to use a QOS they do not have access to if an administrator
    manually set the job's QOS (previously the job would be rejected).
 -- Make more variables available to job_submit/lua plugin: slurm.MEM_PER_CPU,
    slurm.NO_VAL, etc.
 -- Fix topology/tree logic when nodes defined in slurm.conf get re-ordered.
 -- In select/cons_res, correct logic to allocate whole sockets to jobs. Work
    by Magnus Jonsson, Umea University.
 -- In select/cons_res, correct logic when job removed from only some nodes.
 -- Avoid apparent kernel bug in 2.6.32 which apparently is solved in
    at least 3.5.0.  This avoids a stack overflow when running jobs on
    more than 120k nodes.
 -- BLUEGENE - If we made a block that isn't runnable because of a overlapping
    block, destroy it correctly.
 -- Switch/nrt - Dynamically load libnrt.so from within the plugin as needed.
    This eliminates the need for libnrt.so on the head node.
 -- BLUEGENE - Fix in reservation logic that could cause abort.

* Changes in SLURM 2.5.1
========================
 -- Correction to hostlist sorting for hostnames that contain two numeric
    components and the first numeric component has various sizes (e.g.
    "rack9blade1" should come before "rack10blade1")
 -- BGQ - Only poll on initialized blocks instead of calling getBlocks on
    each block independently.
 -- Fix of task/affinity plugin logic for Power7 processors having hyper-
    threading disabled (cpu mask has gaps).
 -- Fix of job priority ordering with sched/builtin and priority/multifactor.
    Patch from Chris Read.
 -- CRAY - Fix for setting up the aprun for a large job (+2000 nodes).
 -- Fix for race condition related to compute node boot resulting in node being
    set down with reason of "Node <name> unexpectedly rebooted"
 -- RAPL - Fix for handling errors when opening msr files.
 -- BGQ - Fix for salloc/sbatch to do the correct allocation when asking for
    -N1 -n#.
 -- BGQ - in emulation make it so we can pretend to run large jobs (>64k nodes)
 -- BLUEGENE - Correct method to update conn_type of a job.
 -- BLUEGENE - Fix issue with preemption when needing to preempt multiple jobs
    to make one job run.
 -- Fixed issue where if an srun dies inside of an allocation abnormally it
    would of also killed the allocation.
 -- FRONTEND - fixed issue where if a systems nodes weren't defined in the
    slurm.conf with NodeAddr's signals going to a step could be handled
    incorrectly.
 -- If sched/backfill starts a job with a QOS having NO_RESERVE and not job
    time limit, start it with the partition time limit (or one year if the
    partition has no time limit) rather than NO_VAL (140 year time limit);
 -- Alter hostlist logic to allocate large grid dynamically instead of on
    stack.
 -- Change RPC version checks to support version 2.5 slurmctld with version 2.4
    slurmd daemons.
 -- Correct core reservation logic for use with select/serial plugin.
 -- Exit scontrol command on stdin EOF.
 -- Disable job --exclusive option with select/serial plugin.

* Changes in SLURM 2.5.0
========================
 -- Add DenyOnLimit flag for QOS to deny jobs at submission time if they
    request resources that reach a 'Max' limit.
 -- Permit SlurmUser or operator to change QOS of non-pending jobs (e.g.
    running jobs).
 -- BGQ - move initial poll to beginning of realtime interaction, which will
    also cause it to run if the realtime server ever goes away.

* Changes in SLURM 2.5.0-rc2
============================
 -- Modify sbcast logic to survive slurmd daemon restart while file a
    transmission is in progress.
 -- Add retry logic to munge encode/decode calls. This is needed if the munge
    deamon is under very heavy load (e.g. with 1000 slurmd daemons per compute
    node).
 -- Add launch and acct_gather_energy plugins to RPMs.
 -- Restore support for srun "--mpi=list" option.
 -- CRAY - Introduce step accounting for a Cray.
 -- Modify srun to abandon I/O 60 seconds after the last task ends. Otherwise
    an aborted slurmstepd can cause the srun process to hang indefinitely.
 -- ENERGY - RAPL - alter code to close open files (and only open them once
    where needed)
 -- If the PrologSlurmctld fails, then requeue the job an indefinite number
    of times instead of only one time.

* Changes in SLURM 2.5.0-rc1
============================
 -- Added Prolog and Epilog Guide (web page). Based upon work by Jason Sollom,
    Cray Inc. and used by permission.
 -- Restore gang scheduling functionality. Preemptor was not being scheduled.
    Fix for bugzilla #3.
 -- Add "cpu_load" to node information. Populate CPULOAD in node information
    reported to Moab cluster manager.
 -- Preempt jobs only when insufficient idle resources exist to start job,
    regardless of the node weight.
 -- Added priority/multifactor2 plugin based upon ticket distribution system.
    Work by Janne Blomqvist, Aalto University.
 -- Add SLURM_NODELIST to environment variables available to Prolog and Epilog.
 -- Permit reservations to allow or deny access by account and/or user.
 -- Add ReconfigFlags value of KeepPartState. See "man slurm.conf" for details.
 -- Modify the task/cgroup plugin adding a task_pre_launch_priv function and
    move slurmstepd outside of the step's cgroup. Work by Matthieu Hautreux.
 -- Intel MIC processor support added using gres/mic plugin. BIG thanks to
    Olli-Pekka Lehto, CSC-IT Center for Science Ltd.
 -- Accounting - Change empty jobacctinfo structs to not actually be used
    instead of putting 0's into the database we put NO_VALS and have sacct
    figure out jobacct_gather wasn't used.
 -- Cray - Prevent calling basil_confirm more than once per job using a flag.
 -- Fix bug with topology/tree and job with min-max node count. Now try to
    get max node count rather than minimizing leaf switches used.
 -- Add AccountingStorageEnforce=safe option to provide method to avoid jobs
    launching that wouldn't be able to run to completion because of a
    GrpCPUMins limit.
 -- Add support for RFC 5424 timestamps in logfiles. Disable with configuration
    option of "--disable-rfc5424time". By Janne Blomqvist, Aalto University.
 -- CRAY - Replace srun.pl with launch/aprun plugin to use srun to wrap the
    aprun process instead of a perl script.
 -- srun - Rename --runjob-opts to --launcher-opts to be used on systems other
    than BGQ.
 -- Added new DebugFlags - Energy for AcctGatherEnergy plugins.
 -- start deprecation of sacct --dump --fdump
 -- BGQ - added --verbose=OFF when srun --quiet is used
 -- Added acct_gather_energy/rapl plugin to record power consumption by job.
    Work by Yiannis Georgiou, Martin Perry, et. al., Bull

* Changes in SLURM 2.5.0.pre3
=============================
 -- Add Google search to all web pages.
 -- Add sinfo -T option to print reservation information. Work by Bill Brophy,
    Bull.
 -- Force slurmd exit after 2 minute wait, even if threads are hung.
 -- Change node_req field in struct job_resources from 8 to 32 bits so we can
    run more than 256 jobs per node.
 -- sched/backfill: Improve accuracy of expected job start with respect to
    reservations.
 -- sinfo partition field size will be set the length of the longest
    partition name by default.
 -- Make it so the parse_time will return a valid 0 if given epoch time and
    set errno == ESLURM_INVALID_TIME_VALUE on error instead.
 -- Correct srun --no-alloc logic when node count exceeds node list or task
    task count is not a multiple of the node count. Work by Hongjia Cao, NUDT.
 -- Completed integration with IBM Parallel Environment including POE and IBM's
    NRT switch library.

* Changes in SLURM 2.5.0.pre2
=============================
 -- When running with multiple slurmd daemons per node, enable specifying a
    range of ports on a single line of the node configuration in slurm.conf.
 -- Add reservation flag of Part_Nodes to allocate all nodes in a partition to
    a reservation and automatically change the reservation when nodes are
    added to or removed from the reservation. Based upon work by
    Bill Brophy, Bull.
 -- Add support for advanced reservation for specific cores rather than whole
    nodes. Current limiations: homogeneous cluster, nodes idle when reservation
    created, and no more than one reservation per node. Code is still under
    development. Work by Alejandro Lucero Palau, et. al, BSC.
 -- Add DebugFlag of Switch to log switch plugin details.
 -- Correct job node_cnt value in job completion plugin when job fails due to
    down node. Previously was too low by one.
 -- Add new srun option --cpu-freq to enable user control over the job's CPU
    frequency and thus it's power consumption. NOTE: cpu frequency is not
    currently preserved for jobs being suspended and later resumed. Work by
    Don Albert, Bull.
 -- Add node configuration information about "boards" and optimize task
    placement on minimum number of boards. Work by Rod Schultz, Bull.

* Changes in SLURM 2.5.0.pre1
=============================
 -- Add new output to "scontrol show configuration" of LicensesUsed. Output is
    "name:used/total"
 -- Changed jobacct_gather plugin infrastructure to be cleaner and easier to
    maintain.
 -- Change license option count separator from "*" to ":" for consistency with
    the gres option (e.g. "--licenses=foo:2 --gres=gpu:2"). The "*" will still
    be accepted, but is no longer documented.
 -- Permit more than 100 jobs to be scheduled per node (new limit is 250
    jobs).
 -- Restructure of srun code to allow outside programs to utilize existing
    logic.

* Changes in SLURM 2.4.6
========================
 -- Correct WillRun authentication logic when issued for non-job owner.
 -- BGQ - fix memory leak
 -- BGQ - Fix to check block for action 'D' if it also has nodes in error.

* Changes in SLURM 2.4.5
========================
 -- Cray - On job kill requeust, send SIGCONT, SIGTERM, wait KillWait and send
    SIGKILL. Previously just sent SIGKILL to tasks.
 -- BGQ - Fix issue when running srun outside of an allocation and only
    specifying the number of tasks and not the number of nodes.
 -- BGQ - validate correct ntasks_per_node
 -- BGQ - when srun -Q is given make runjob be quiet
 -- Modify use of OOM (out of memory protection) for Linux 2.6.36 kernel
    or later. NOTE: If you were setting the environment variable
    SLURMSTEPD_OOM_ADJ=-17, it should be set to -1000 for Linux 2.6.36 kernel
    or later.
 -- BGQ - Fix job step timeout actually happen when done from within an
    allocation.
 -- Reset node MAINT state flag when a reservation's nodes or flags change.
 -- Accounting - Fix issue where QOS usage was being zeroed out on a
    slurmctld restart.
 -- BGQ - Add 64 tasks per node as a valid option for srun when used with
    overcommit.
 -- BLUEGENE - With Dynamic layout mode - Fix issue where if a larger block
    was already in error and isn't deallocating and underlying hardware goes
    bad one could get overlapping blocks in error making the code assert when
    a new job request comes in.
 -- BGQ - handle pending actions on a block better when trying to deallocate it.
 -- Accounting - Fixed issue where if nodenames have changed on a system and
    you query against that with -N and -E you will get all jobs during that
    time instead of only the ones running on -N.
 -- BGP - Fix for HTC mode
 -- Accounting - If a job start message fails to the SlurmDBD reset the db_inx
    so it gets sent again.  This isn't a major problem since the start will
    happen when the job ends, but this does make things cleaner.
 -- If an salloc is waiting for an allocation to happen and is canceled by the
    user mark the state canceled instead of completed.
 -- Fix issue in accounting if a user puts a '\' in their job name.
 -- Accounting - Fix for if asking for users or accounts that were deleted
    with associations get the deleted associations as well.
 -- BGQ - Handle shared blocks that need to be removed and have jobs running
    on them.  This should only happen in extreme conditions.
 -- Fix inconsistency for hostlists that have more than 1 range.
 -- BGQ - Add mutex around recovery for the Real Time server to avoid hitting
    DB2 so hard.
 -- BGQ - If an allocation exists on a block that has a 'D' action on it fail
    job on future step creation attempts.

* Changes in SLURM 2.4.4
========================
 -- BGQ - minor fix to make build work in emulated mode.
 -- BGQ - Fix if large block goes into error and the next highest priority jobs
    are planning on using the block.  Previously it would fail those jobs
    erroneously.
 -- BGQ - Fix issue when a cnode going to an error (not SoftwareError) state
    with a job running or trying to run on it.
 -- Execute slurm_spank_job_epilog when there is no system Epilog configured.
 -- Fix for srun --test-only to work correctly with timelimits
 -- BGQ - If a job goes away while still trying to free it up in the
    database, and the job is running on a small block make sure we free up
    the correct node count.
 -- BGQ - Logic added to make sure a job has finished on a block before it is
    purged from the system if its front-end node goes down.
 -- Modify strigger so that a filter option of "--user=0" is supported.
 -- Correct --mem-per-cpu logic for core or socket allocations with multiple
    threads per core.
 -- Fix for older < glibc 2.4 systems to use euidaccess() instead of eaccess().
 -- BLUEGENE - Do not alter a pending job's node count when changing it's
    partition.
 -- BGQ - Add functionality to make it so we track the actions on a block.
    This is needed for when a free request is added to a block but there are
    jobs finishing up so we don't start new jobs on the block since they will
    fail on start.
 -- BGQ - Fixed InactiveLimit to work correctly to avoid scenarios where a
    user's pending allocation was started with srun and then for some reason
    the slurmctld was brought down and while it was down the srun was removed.
 -- Fixed InactiveLimit math to work correctly
 -- BGQ - Add logic to make it so blocks can't use a midplane with a nodeboard
    in error for passthrough.
 -- BGQ - Make it so if a nodeboard goes in error any block using that midplane
    for passthrough gets removed on a dynamic system.
 -- BGQ - Fix for printing realtime server debug correctly.
 -- BGQ - Cleaner handling of cnode failures when reported through the runjob
    interface instead of through the normal method.
 -- smap - spread node information across multiple lines for larger systems.
 -- Cray - Defer salloc until after PrologSlurmctld completes.
 -- Correction to slurmdbd communications failure handling logic, incorrect
    error codes returned in some cases.

* Changes in SLURM 2.4.3
========================
 -- Accounting - Fix so complete 32 bit numbers can be put in for a priority.
 -- cgroups - fix if initial directory is non-existent SLURM creates it
    correctly.  Before the errno wasn't being checked correctly
 -- BGQ - fixed srun when only requesting a task count and not a node count
    to operate the same way salloc or sbatch did and assign a task per cpu
    by default instead of task per node.
 -- Fix salloc --gid to work correctly.  Reported by Brian Gilmer
 -- BGQ - fix smap to set the correct default MloaderImage
 -- BLUEGENE - updated documentation.
 -- Close the batch job's environment file when it contains no data to avoid
    leaking file descriptors.
 -- Fix sbcast's credential to last till the end of a job instead of the
    previous 20 minute time limit.  The previous behavior would fail for
    large files 20 minutes into the transfer.
 -- Return ESLURM_NODES_BUSY rather than ESLURM_NODE_NOT_AVAIL error on job
    submit when required nodes are up, but completing a job or in exclusive
    job allocation.
 -- Add HWLOC_FLAGS so linking to libslurm works correctly
 -- BGQ - If using backfill and a shared block is running at least one job
    and a job comes through backfill and can fit on the block without ending
    jobs don't set an end_time for the running jobs since they don't need to
    end to start the job.
 -- Initialize bind_verbose when using task/cgroup.
 -- BGQ - Fix for handling backfill much better when sharing blocks.
 -- BGQ - Fix for making small blocks on first pass if not sharing blocks.
 -- BLUEGENE - Remove force of default conn_type instead of leaving NAV
    when none are requested.  The Block allocator sets it up temporarily so
    this isn't needed.
 -- BLUEGENE - Fix deadlock issue when dealing with bad hardware if using
    static blocks.
 -- Fix to mysql plugin during rollup to only query suspended table when jobs
    reported some suspended time.
 -- Fix compile with glibc 2.16 (Kacper Kowalik)
 -- BGQ - fix for deadlock where a block has error on it and all jobs
    running on it are preemptable by scheduling job.
 -- proctrack/cgroup: Exclude internal threads from "scontrol list pids".
    Patch from Matthieu Hautreux, CEA.
 -- Memory leak fixed for select/linear when preempting jobs.
 -- Fix if updating begin time of a job to update the eligible time in
    accounting as well.
 -- BGQ - make it so you can signal steps when signaling the job allocation.
 -- BGQ - Remove extra overhead if a large block has many cnode failures.
 -- Priority/Multifactor - Fix issue with age factor when a job is estimated to
    start in the future but is able to run now.
 -- CRAY - update to work with ALPS 5.1
 -- BGQ - Handle issue of speed and mutexes when polling instead of using the
    realtime server.
 -- BGQ - Fix minor sorting issue with sview when sorting by midplanes.
 -- Accounting - Fix for handling per user max node/cpus limits on a QOS
    correctly for current job.
 -- Update documentation for -/+= when updating a reservation's
    users/accounts/flags
 -- Update pam module to work if using aliases on nodes instead of actual
    host names.
 -- Correction to task layout logic in select/cons_res for job with minimum
    and maximum node count.
 -- BGQ - Put final poll after realtime comes back into service to avoid
    having the realtime server go down over and over again while waiting
    for the poll to finish.
 -- task/cgroup/memory - ensure that ConstrainSwapSpace=no is correctly
    handled. Work by Matthieu Hautreux, CEA.
 -- CRAY - Fix for sacct -N option to work correctly
 -- CRAY - Update documentation to describe installation from rpm instead
    or previous piecemeal method.
 -- Fix sacct to work with QOS' that have previously been deleted.
 -- Added all available limits to the output of sacctmgr list qos

* Changes in SLURM 2.4.2
========================
 -- BLUEGENE - Correct potential deadlock issue when hardware goes bad and
    there are jobs running on that hardware.
 -- If job is submitted to more than one partition, it's partition pointer can
    be set to an invalid value. This can result in the count of CPUs allocated
    on a node being bad, resulting in over- or under-allocation of its CPUs.
    Patch by Carles Fenoy, BSC.
 -- Fix bug in task layout with select/cons_res plugin and --ntasks-per-node
    option. Patch by Martin Perry, Bull.
 -- BLUEGENE - remove race condition where if a block is removed while waiting
    for a job to finish on it the number of unused cpus wasn't updated
    correctly.
 -- BGQ - make sure we have a valid block when creating or finishing a step
    allocation.
 -- BLUEGENE - If a large block (> 1 midplane) is in error and underlying
    hardware is marked bad remove the larger block and create a block over
    just the bad hardware making the other hardware available to run on.
 -- BLUEGENE - Handle job completion correctly if an admin removes a block
    where other blocks on an overlapping midplane are running jobs.
 -- BLUEGENE - correctly remove running jobs when freeing a block.
 -- BGQ - correct logic to place multiple (< 1 midplane) steps inside a
    multi midplane block allocation.
 -- BGQ - Make it possible for a multi midplane allocation to run on more
    than 1 midplane but not the entire allocation.
 -- BGL - Fix for syncing users on block from Tim Wickberg
 -- Fix initialization of protocol_version for some messages to make sure it
    is always set when sending or receiving a message.
 -- Reset backfilled job counter only when explicitly cleared using scontrol.
    Patch from Alejandro Lucero Palau, BSC.
 -- BLUEGENE - Fix for handling blocks when a larger block will not free and
    while it is attempting to free underlying hardware is marked in error
    making small blocks overlapping with the freeing block.  This only
    applies to dynamic layout mode.
 -- Cray and BlueGene - Do not treat lack of usable front-end nodes when
    slurmctld deamon starts as a fatal error. Also preserve correct front-end
    node for jobs when there is more than one front-end node and the slurmctld
    daemon restarts.
 -- Correct parsing of srun/sbatch input/output/error file names so that only
    the name "none" is mapped to /dev/null and not any file name starting
    with "none" (e.g. "none.o").
 -- BGQ - added version string to the load of the runjob_mux plugin to verify
    the current plugin has been loaded when using runjob_mux_refresh_config
 -- CGROUPS - Use system mount/umount function calls instead of doing fork
    exec of mount/umount from Janne Blomqvist.
 -- BLUEGENE - correct start time setup when no jobs are blocking the way
    from Mark Nelson
 -- Fixed sacct --state=S query to return information about suspended jobs
    current or in the past.
 -- FRONTEND - Made error warning more apparent if a frontend node isn't
    configured correctly.
 -- BGQ - update documentation about runjob_mux_refresh_config which works
    correctly as of IBM driver V1R1M1 efix 008.

* Changes in SLURM 2.4.1
========================
 -- Fix bug for job state change from 2.3 -> 2.4 job state can now be preserved
    correctly when transitioning.  This also applies for 2.4.0 -> 2.4.1, no
    state will be lost. (Thanks to Carles Fenoy)

* Changes in SLURM 2.4.0
========================
 -- Cray - Improve support for zero compute note resource allocations.
    Partition used can now be configured with no nodes nodes.
 -- BGQ - make it so srun -i<taskid> works correctly.
 -- Fix parse_uint32/16 to complain if a non-digit is given.
 -- Add SUBMITHOST to job state passed to Moab vial sched/wiki2. Patch by Jon
    Bringhurst (LANL).
 -- BGQ - Fix issue when running with AllowSubBlockAllocations=Yes without
    compiling with --enable-debug
 -- Modify scontrol to require "-dd" option to report batch job's script. Patch
    from Don Albert, Bull.
 -- Modify SchedulerParamters option to match documentation: "bf_res="
    changed to "bf_resolution=". Patch from Rod Schultz, Bull.
 -- Fix bug that clears job pending reason field. Patch fron Don Lipari, LLNL.
 -- In etc/init.d/slurm move check for scontrol after sourcing
    /etc/sysconfig/slurm. Patch from Andy Wettstein, University of Chicago.
 -- Fix in scheduling logic that can delay jobs with min/max node counts.
 -- BGQ - fix issue where if a step uses the entire allocation and then
    the next step in the allocation only uses part of the allocation it gets
    the correct cnodes.
 -- BGQ - Fix checking for IO on a block with new IBM driver V1R1M1 previous
    function didn't always work correctly.
 -- BGQ - Fix issue when a nodeboard goes down and you want to combine blocks
    to make a larger small block and are running with sub-blocks.
 -- BLUEGENE - Better logic for making small blocks around bad nodeboard/card.
 -- BGQ - When using an old IBM driver cnodes that go into error because of
    a job kill timeout aren't always reported to the system.  This is now
    handled by the runjob_mux plugin.
 -- BGQ - Added information on how to setup the runjob_mux to run as SlurmUser.
 -- Improve memory consumption on step layouts with high task count.
 -- BGQ - quiter debug when the real time server comes back but there are
    still messages we find when we poll but haven't given it back to the real
    time yet.
 -- BGQ - fix for if a request comes in smaller than the smallest block and
    we must use a small block instead of a shared midplane block.
 -- Fix issues on large jobs (>64k tasks) to have the correct counter type when
    packing the step layout structure.
 -- BGQ - fix issue where if a user was asking for tasks and ntasks-per-node
    but not node count the node count is correctly figured out.
 -- Move logic to always use the 1st alphanumeric node as the batch host for
    batch jobs.
 -- BLUEGENE - fix race condition where if a nodeboard/card goes down at the
    same time a block is destroyed and that block just happens to be the
    smallest overlapping block over the bad hardware.
 -- Fix bug when querying accounting looking for a job node size.
 -- BLUEGENE - fix possible race condition if cleaning up a block and the
    removal of the job on the block failed.
 -- BLUEGENE - fix issue if a cable was in an error state make it so we can
    check if a block is still makable if the cable wasn't in error.
 -- Put nodes names in alphabetic order in node table.
 -- If preempted job should have a grace time and preempt mode is not cancel
    but job is going to be canceled because it is interactive or other reason
    it now receives the grace time.
 -- BGQ - Modified documents to explain new plugin_flags needed in bg.properties
    in order for the runjob_mux to run correctly.
 -- BGQ - change linking from libslurm.o to libslurmhelper.la to avoid warning.

* Changes in SLURM 2.4.0.rc1
=============================
 -- Improve task binding logic by making fuller use of HWLOC library,
    especially with respect to Opteron 6000 series processors. Work contributed
    by Komoto Masahiro.
 -- Add new configuration parameter PriorityFlags, based upon work by
    Carles Fenoy (Barcelona Supercomputer Center).
 -- Modify the step completion RPC between slurmd and slurmstepd in order to
    eliminate a possible deadlock. Based on work by Matthieu Hautreux, CEA.
 -- Change the owner of slurmctld and slurmdbd log files to the appropriate
    user. Without this change the files will be created by and owned by the
    user starting the daemons (likely user root).
 -- Reorganize the slurmstepd logic in order to better support NFS and
    Kerberos credentials via the AUKS plugin. Work by Matthieu Hautreux, CEA.
 -- Fix bug in allocating GRES that are associated with specific CPUs. In some
    cases the code allocated first available GRES to job instead of allocating
    GRES accessible to the specific CPUs allocated to the job.
 -- spank: Add callbacks in slurmd: slurm_spank_slurmd_{init,exit}
    and job epilog/prolog: slurm_spank_job_{prolog,epilog}
 -- spank: Add spank_option_getopt() function to api
 -- Change resolution of switch wait time from minutes to seconds.
 -- Added CrpCPUMins to the output of sshare -l for those using hard limit
    accounting.  Work contributed by Mark Nelson.
 -- Added mpi/pmi2 plugin for complete support of pmi2 including acquiring
    additional resources for newly launched tasks. Contributed by Hongjia Cao,
    NUDT.
 -- BGQ - fixed issue where if a user asked for a specific node count and more
    tasks than possible without overcommit the request would be allowed on more
    nodes than requested.
 -- Add support for new SchedulerParameters of bf_max_job_user, maximum number
    of jobs to attempt backfilling per user. Work by Bjørn-Helge Mevik,
    University of Oslo.
 -- BLUEGENE - fixed issue where MaxNodes limit on a partition only limited
    larger than midplane jobs.
 -- Added cpu_run_min to the output of sshare --long.  Work contributed by
    Mark Nelson.
 -- BGQ - allow regular users to resolve Rack-Midplane to AXYZ coords.
 -- Add sinfo output format option of "%R" for partition name without "*"
    appended for default partition.
 -- Cray - Add support for zero compute note resource allocation to run batch
    script on front-end node with no ALPS reservation. Useful for pre- or post-
    processing.
 -- Support for cyclic distribution of cpus in task/cgroup plugin from Martin
    Perry, Bull.
 -- GrpMEM limit for QOSes and associations added Patch from Bjørn-Helge Mevik,
    University of Oslo.
 -- Various performance improvements for up to 500% higher throughput depending
    upon configuration. Work supported by the Oak Ridge National Laboratory
    Extreme Scale Systems Center.
 -- Added jobacct_gather/cgroup plugin.  It is not advised to use this in
    production as it isn't currently complete and doesn't provide an equivalent
    substitution for jobacct_gather/linux yet. Work by Martin Perry, Bull.

* Changes in SLURM 2.4.0.pre4
=============================
 -- Add logic to cache GPU file information (bitmap index mapping to device
    file number) in the slurmd daemon and transfer that information to the
    slurmstepd whenever a job step is initiated. This is needed to set the
    appropriate CUDA_VISIBLE_DEVICES environment variable value when the
    devices are not in strict numeric order (e.g. some GPUs are skipped).
    Based upon work by Nicolas Bigaouette.
 -- BGQ - Remove ability to make a sub-block with a geometry with one or more
    of it's dimensions of length 3.  There is a limitation in the IBM I/O
    subsystem that is problematic with multiple sub-blocks with a dimension
    of length 3, so we will disallow them to be able to be created.  This
    mean you if you ask the system for an allocation of 12 c-nodes you will
    be given 16.  If this is ever fix in BGQ you can remove this patch.
 -- BLUEGENE - Better handling blocks that go into error state or deallocate
    while jobs are running on them.
 -- BGQ - fix for handling mix of steps running at same time some of which
    are full allocation jobs, and others that are smaller.
 -- BGQ - fix for core dump after running multiple sub-block jobs on static
    blocks.
 -- BGQ - fixed sync issue where if a job finishes in SLURM but not in mmcs
    for a long time after the SLURM job has been flushed from the system
    we don't have to worry about rebooting the block to sync the system.
 -- BGQ - In scontrol/sview node counts are now displayed with
    CnodeCount/CnodeErrCount so to point out there are cnodes in an error state
    on the block.  Draining the block and having it reboot when all jobs are
    gone will clear up the cnodes in Software Failure.
 -- Change default SchedulerParameters max_switch_wait field value from 60 to
    300 seconds.
 -- BGQ - catch errors from the kill option of the runjob client.
 -- BLUEGENE - make it so the epilog runs until slurmctld tells it the job is
    gone.  Previously it had a timelimit which has proven to not be the right
    thing.
 -- FRONTEND - fix issue where if a compute node was in a down state and
    an admin updates the node to idle/resume the compute nodes will go
    instantly to idle instead of idle* which means no response.
 -- Fix regression in 2.4.0.pre3 where number of submitted jobs limit wasn't
    being honored for QOS.
 -- Cray - Enable logging of BASIL communications with environment variables.
    Set XML_LOG to enable logging. Set XML_LOG_LOC to specify path to log file
    or "SLURM" to write to SlurmctldLogFile or unset for "slurm_basil_xml.log".
    Patch from Steve Tronfinoff, CSCS.
 -- FRONTEND - if a front end unexpectedly reboots kill all jobs but don't
    mark front end node down.
 -- FRONTEND - don't down a front end node if you have an epilog error
 -- BLUEGENE - if a job has an epilog error don't down the midplane it was
    running on.
 -- BGQ - added new DebugFlag (NoRealTime) for only printing debug from
    state change while the realtime server is running.
 -- Fix multi-cluster mode with sview starting on a non-bluegene cluster going
    to a bluegene cluster.
 -- BLUEGENE - ability to show Rack Midplane name of midplanes in sview and
    scontrol.

* Changes in SLURM 2.4.0.pre3
=============================
 -- Let a job be submitted even if it exceeds a QOS limit. Job will be left
    in a pending state until the QOS limit or job parameters change. Patch by
    Phil Eckert, LLNL.
 -- Add sacct support for the option "--name". Work by Yuri D'Elia, Center for
    Biomedicine, EURAC Research, Italy.
 -- BGQ - handle preemption.
 -- Add an srun shepard process to cancel a job and/or step of the srun process
    is killed abnormally (e.g. SIGKILL).
 -- BGQ - handle deadlock issue when a nodeboard goes into an error state.
 -- BGQ - more thorough handling of blocks with multiple jobs running on them.
 -- Fix man2html process to compile in the build directory instead of the
    source dir.
 -- Behavior of srun --multi-prog modified so that any program arguments
    specified on the command line will be appended to the program arguments
    specified in the program configuration file.
 -- Add new command, sdiag, which reports a variety of job scheduling
    statistics. Based upon work by Alejandro Lucero Palau, BSC.
 -- BLUEGENE - Added DefaultConnType to the bluegene.conf file.  This makes it
    so you can specify any connection type you would like (TORUS or MESH) as
    the default in dynamic mode.  Previously it always defaulted to TORUS.
 -- Made squeue -n and -w options more consistent with salloc, sbatch, srun,
    and scancel. Patch by Don Lipari, LLNL.
 -- Have sacctmgr remove user records when no associations exist for that user.
 -- Several header file changes for clean build with NetBSD. Patches from
    Aleksej Saushev.
 -- Fix for possible deadlock in accounting logic: Avoid calling
    jobacct_gather_g_getinfo() until there is data to read from the socket.
 -- Fix race condition that could generate "job_cnt_comp underflow" errors on
    front-end architectures.
 -- BGQ - Fix issue where a system with missing cables could cause core dump.

* Changes in SLURM 2.4.0.pre2
=============================
 -- CRAY - Add support for GPU memory allocation using SLURM GRES (Generic
    RESource) support. Work by Steve Trofinoff, CSCS.
 -- Add support for job allocations with multiple job constraint counts. For
    example: salloc -C "[rack1*2&rack2*4]" ... will allocate the job 2 nodes
    from rack1 and 4 nodes from rack2. Support for only a single constraint
    name been added to job step support.
 -- BGQ - Remove old method for marking cnodes down.
 -- BGQ - Remove BGP images from view in sview.
 -- BGQ - print out failed cnodes in scontrol show nodes.
 -- BGQ - Add srun option of "--runjob-opts" to pass options to the runjob
    command.
 -- FRONTEND - handle step launch failure better.
 -- BGQ - Added a mutex to protect the now changing ba_system pointers.
 -- BGQ - added new functionality for sub-block allocations - no preemption
    for this yet though.
 -- Add --name option to squeue to filter output by job name. Patch from Yuri
    D'Elia.
 -- BGQ - Added linking to runjob client libary which gives support to totalview
    to use srun instead of runjob.
 -- Add numeric range checks to scontrol update options. Patch from Phil
    Eckert, LLNL.
 -- Add ReconfigFlags configuration option to control actions of "scontrol
    reconfig". Patch from Don Albert, Bull.
 -- BGQ - handle reboots with multiple jobs running on a block.
 -- BGQ - Add message handler thread to forward signals to runjob process.

* Changes in SLURM 2.4.0.pre1
=============================
 -- BGQ - use the ba_geo_tables to figure out the blocks instead of the old
    algorithm.  The improves timing in the worst cases and simplifies the code
    greatly.
 -- BLUEGENE - Change to output tools labels from BP to Midplane
    (i.e. BP List -> MidplaneList).
 -- BLUEGENE - read MPs and BPs from the bluegene.conf
 -- Modify srun's SIGINT handling logic timer (two SIGINTs within one second) to
    be based microsecond rather than second timer.
 -- Modify advance reservation to accept multiple specific block sizes rather
    than a single node count.
 -- Permit administrator to change a job's QOS to any value without validating
    the job's owner has permission to use that QOS. Based upon patch by Phil
    Eckert (LLNL).
 -- Add trigger flag for a permanent trigger. The trigger will NOT be purged
    after an event occurs, but only when explicitly deleted.
 -- Interpret a reservation with Nodes=ALL and a Partition specification as
    reserving all nodes within the specified partition rather than all nodes
    on the system. Based upon patch by Phil Eckert (LLNL).
 -- Add the ability to reboot all compute nodes after they become idle. The
    RebootProgram configuration parameter must be set and an authorized user
    must execute the command "scontrol reboot_nodes". Patch from Andriy
    Grytsenko (Massive Solutions Limited).
 -- Modify slurmdbd.conf parsing to accept DebugLevel strings (quiet, fatal,
    info, etc.) in addition to numeric values. The parsing of slurm.conf was
    modified in the same fashion for SlurmctldDebug and SlurmdDebug values.
    The output of sview and "scontrol show config" was also modified to report
    those values as strings rather than numeric values.
 -- Changed default value of StateSaveLocation configuration parameter from
    /tmp to /var/spool.
 -- Prevent associations from being deleted if it has any jobs in running,
    pending or suspended state. Previous code prevented this only for running
    jobs.
 -- If a job can not run due to QOS or association limits, then do not cancel
    the job, but leave it pending in a system held state (priority = 1). The
    job will run when its limits or the QOS/association limits change. Based
    upon a patch by Phil Ekcert (LLNL).
 -- BGQ - Added logic to keep track of cnodes in an error state inside of a
    booted block.
 -- Added the ability to update a node's NodeAddr and NodeHostName with
    scontrol. Also enable setting a node's state to "future" using scontrol.
 -- Add a node state flag of CLOUD and save/restore NodeAddr and NodeHostName
    information for nodes with a flag of CLOUD.
 -- Cray: Add support for job reservations with node IDs that are not in
    numeric order. Fix for Bugzilla #5.
 -- BGQ - Fix issue with smap -R
 -- Fix association limit support for jobs queued for multiple partitions.
 -- BLUEGENE - fix issue for sub-midplane systems to create a full system
    block correctly.
 -- BLUEGENE - Added option to the bluegene.conf to tell you are running on
    a sub midplane system.
 -- Added the UserID of the user issuing the RPC to the job_submit/lua
    functions.
 -- Fixed issue where if a job ended with ESLURMD_UID_NOT_FOUND and
    ESLURMD_GID_NOT_FOUND where slurm would be a little over zealous
    in treating missing a GID or UID as a fatal error.
 -- If job time limit exceeds partition maximum, but job's minimum time limit
    does not, set job's time limit to partition maximum at allocation time.

* Changes in SLURM 2.3.6
========================
 -- Fix DefMemPerCPU for partition definitions.
 -- Fix to create a reservation with licenses and no nodes.
 -- Fix issue with assoc_mgr if a bad state file is given and the database
    isn't up at the time the slurmctld starts, not running the
    priority/multifactor plugin, and then the database is started up later.
 -- Gres: If a gres has a count of one and an associated file then when doing
    a reconfiguration, the node's bitmap was not cleared resulting in an
    underflow upon job termination or removal from scheduling matrix by the
    backfill scheduler.
 -- Fix race condition in job dependency logic which can result in invalid
    memory reference.

* Changes in SLURM 2.3.5
========================
 -- Improve support for overlapping advanced reservations. Patch from
    Bill Brophy, Bull.
 -- Modify Makefiles for support of Debian hardening flags. Patch from
    Simon Ruderich.
 -- CRAY: Fix support for configuration with SlurmdTimeout=0 (never mark
    node that is DOWN in ALPS as DOWN in SLURM).
 -- Fixed the setting of SLURM_SUBMIT_DIR for jobs submitted by Moab (BZ#1467).
    Patch by Don Lipari, LLNL.
 -- Correction to init.d/slurmdbd exit code for status option. Patch by Bill
    Brophy, Bull.
 -- When the optional max_time is not specified for --switches=count, the site
    max (SchedulerParameters=max_switch_wait=seconds) is used for the job.
    Based on patch from Rod Schultz.
 -- Fix bug in select/cons_res plugin when used with topology/tree and a node
    range count in job allocation request.
 -- Fixed moab_2_slurmdb.pl script to correctly work for end records.
 -- Add support for new SchedulerParameters of max_depend_depth defining the
    maximum number of jobs to test for circular dependencies (i.e. job A waits
    for job B to start and job B waits for job A to start). Default value is
    10 jobs.
 -- Fix potential race condition if MinJobAge is very low (i.e. 1) and using
    slurmdbd accounting and running large amounts of jobs (>50 sec).  Job
    information could be corrupted before it had a chance to reach the DBD.
 -- Fix state restore of job limit set from admin value for min_cpus.
 -- Fix clearing of limit values if an admin removes the limit for max cpus
    and time limit where it was previously set by an admin.
 -- Fix issue where log message is more than 256 chars and then has a format.
 -- Fix sched/wiki2 to support job account name, gres, partition name, wckey,
    or working directory that contains "#" (a job record separator). Also fix
    for wckey or working directory that contains a double quote '\"'.
 -- CRAY - fix for handling memory requests from user for an allocation.
 -- Add support for switches parameter to the job_submit/lua plugin. Work by
    Par Andersson, NSC.
 -- Fix to job preemption logic to preempt multiple jobs at the same time.
 -- Fix minor issue where uid and gid were switched in sview for submitting
    batch jobs.
 -- Fix possible illegal memory reference in slurmctld for job step with
    relative option. Work by Matthieu Hautreux (CEA).
 -- Reset priority of system held jobs when dependency is satisfied. Work by
    Don Lipari, LLNL.

* Changes in SLURM 2.3.4
========================
 -- Set DEFAULT flag in partition structure when slurmctld reads the
    configuration file. Patch from Rémi Palancher.
 -- Fix for possible deadlock in accounting logic: Avoid calling
    jobacct_gather_g_getinfo() until there is data to read from the socket.
 -- Fix typo in accounting when using reservations. Patch from Alejandro
    Lucero Palau.
 -- Fix to the multifactor priority plugin to calculate effective usage earlier
    to give a correct priority on the first decay cycle after a restart of the
    slurmctld. Patch from Martin Perry, Bull.
 -- Permit user root to run a job step for any job as any user. Patch from
    Didier Gazen, Laboratoire d'Aerologie.
 -- BLUEGENE - fix for not allowing jobs if all midplanes are drained and all
    blocks are in an error state.
 -- Avoid slurmctld abort due to bad pointer when setting an advanced
    reservation MAINT flag if it contains no nodes (only licenses).
 -- Fix bug when requeued batch job is scheduled to run on a different node
    zero, but attemts job launch on old node zero.
 -- Fix bug in step task distribution when nodes are not configured in numeric
    order. Patch from Hongjia Cao, NUDT.
 -- Fix for srun allocating running within existing allocation with --exclude
    option and --nnodes count small enough to remove more nodes. Patch from
    Phil Eckert, LLNL.
 -- Work around to handle certain combinations of glibc/kernel
    (i.e. glibc-2.14/Linux-3.1) to correctly open the pty of the slurmstepd
    as the job user. Patch from Mark Grondona, LLNL.
 -- Modify linking to include "-ldl" only when needed. Patch from Aleksej
    Saushev.
 -- Fix smap regression to display nodes that are drained or down correctly.
 -- Several bug fixes and performance improvements with related to batch
    scripts containing very large numbers of arguments. Patches from Par
    Andersson, NSC.
 -- Fixed extremely hard to reproduce threading issue in assoc_mgr.
 -- Correct "scontrol show daemons" output if there is more than one
    ControlMachine configured.
 -- Add node read lock where needed in slurmctld/agent code.
 -- Added test for LUA library named "liblua5.1.so.0" in addition to
    "liblua5.1.so" as needed by Debian. Patch by Remi Palancher.
 -- Added partition default_time field to job_submit LUA plugin. Patch by
    Remi Palancher.
 -- Fix bug in cray/srun wrapper stdin/out/err file handling.
 -- In cray/srun wrapper, only include aprun "-q" option when srun "--quiet"
    option is used.
 -- BLUEGENE - fix issue where if a small block was in error it could hold up
    the queue when trying to place a larger than midplane job.
 -- CRAY - ignore all interactive nodes and jobs on interactive nodes.
 -- Add new job state reason of "FrontEndDown" which applies only to Cray and
    IBM BlueGene systems.
 -- Cray - Enable configure option of "--enable-salloc-background" to permit
    the srun and salloc commands to be executed in the background. This does
    NOT remove the ALPS limitation that only one job reservation can be created
    for each Linux session ID.
 -- Cray - For srun wrapper when creating a job allocation, set the default job
    name to the executable file's name.
 -- Add support for Cray ALPS 5.0.0
 -- FRONTEND - if a front end unexpectedly reboots kill all jobs but don't
    mark front end node down.
 -- FRONTEND - don't down a front end node if you have an epilog error.
 -- Cray - fix for if a frontend slurmd was started after the slurmctld had
    already pinged it on startup the unresponding flag would be removed from
    the frontend node.
 -- Cray - Fix issue on smap not displaying grid correctly.
 -- Fixed minor memory leak in sview.

* Changes in SLURM 2.3.3
========================
 -- Fix task/cgroup plugin error when used with GRES. Patch by Alexander
    Bersenev (Institute of Mathematics and Mechanics, Russia).
 -- Permit pending job exceeding a partition limit to run if its QOS flag is
    modified to permit the partition limit to be exceeded. Patch from Bill
    Brophy, Bull.
 -- BLUEGENE - Fixed preemption issue.
 -- sacct search for jobs using filtering was ignoring wckey filter.
 -- Fixed issue with QOS preemption when adding new QOS.
 -- Fixed issue with comment field being used in a job finishing before it
    starts in accounting.
 -- Add slashes in front of derived exit code when modifying a job.
 -- Handle numeric suffix of "T" for terabyte units. Patch from John Thiltges,
    University of Nebraska-Lincoln.
 -- Prevent resetting a held job's priority when updating other job parameters.
    Patch from Alejandro Lucero Palau, BSC.
 -- Improve logic to import a user's environment. Needed with --get-user-env
    option used with Moab. Patch from Mark Grondona, LLNL.
 -- Fix bug in sview layout if node count less than configured grid_x_width.
 -- Modify PAM module to prefer to use SLURM library with same major release
    number that it was built with.
 -- Permit gres count configuration of zero.
 -- Fix race condition where sbcast command can result in deadlock of slurmd
    daemon. Patch by Don Albert, Bull.
 -- Fix bug in srun --multi-prog configuration file to avoid printing duplicate
    record error when "*" is used at the end of the file for the task ID.
 -- Let operators see reservation data even if "PrivateData=reservations" flag
    is set in slurm.conf. Patch from Don Albert, Bull.
 -- Added new sbatch option "--export-file" as needed for latest version of
    Moab. Patch from Phil Eckert, LLNL.
 -- Fix for sacct printing CPUTime(RAW) where the is greater than a 32 bit
    number.
 -- Fix bug in --switch option with topology resulting in bad switch count use.
    Patch from Alejandro Lucero Palau (Barcelona Supercomputer Center).
 -- Fix PrivateFlags bug when using Priority Multifactor plugin.  If using sprio
    all jobs would be returned even if the flag was set.
    Patch from Bill Brophy, Bull.
 -- Fix for possible invalid memory reference in slurmctld in job dependency
    logic. Patch from Carles Fenoy (Barcelona Supercomputer Center).

* Changes in SLURM 2.3.2
========================
 -- Add configure option of "--without-rpath" which builds SLURM tools without
    the rpath option, which will work if Munge and BlueGene libraries are in
    the default library search path and make system updates easier.
 -- Fixed issue where if a job ended with ESLURMD_UID_NOT_FOUND and
    ESLURMD_GID_NOT_FOUND where slurm would be a little over zealous
    in treating missing a GID or UID as a fatal error.
 -- Backfill scheduling - Add SchedulerParameters configuration parameter of
    "bf_res" to control the resolution in the backfill scheduler's data about
    when jobs begin and end. Default value is 60 seconds (used to be 1 second).
 -- Cray - Remove the "family" specification from the GPU reservation request.
 -- Updated set_oomadj.c, replacing deprecated oom_adj reference with
    oom_score_adj
 -- Fix resource allocation bug, generic resources allocation was ignoring the
    job's ntasks_per_node and cpus_per_task parameters. Patch from Carles
    Fenoy, BSC.
 -- Avoid orphan job step if slurmctld is down when a job step completes.
 -- Fix Lua link order, patch from Pär Andersson, NSC.
 -- Set SLURM_CPUS_PER_TASK=1 when user specifies --cpus-per-task=1.
 -- Fix for fatal error managing GRES. Patch by Carles Fenoy, BSC.
 -- Fixed race condition when using the DBD in accounting where if a job
    wasn't started at the time the eligible message was sent but started
    before the db_index was returned information like start time would be lost.
 -- Fix issue in accounting where normalized shares could be updated
    incorrectly when getting fairshare from the parent.
 -- Fixed if not enforcing associations  but want QOS support for a default
    qos on the cluster to fill that in correctly.
 -- Fix in select/cons_res for "fatal: cons_res: sync loop not progressing"
    with some configurations and job option combinations.
 -- BLUEGNE - Fixed issue with handling HTC modes and rebooting.

* Changes in SLURM 2.3.1
========================
 -- Do not remove the backup slurmctld's pid file when it assumes control, only
    when it actually shuts down. Patch from Andriy Grytsenko (Massive Solutions
    Limited).
 -- Avoid clearing a job's reason from JobHeldAdmin or JobHeldUser when it is
    otherwise updated using scontrol or sview commands. Patch based upon work
    by Phil Eckert (LLNL).
 -- BLUEGENE - Fix for if changing the defined blocks in the bluegene.conf and
    jobs happen to be running on blocks not in the new config.
 -- Many cosmetic modifications to eliminate warning message from GCC version
    4.6 compiler.
 -- Fix for sview reservation tab when finding correct reservation.
 -- Fix for handling QOS limits per user on a reconfig of the slurmctld.
 -- Do not treat the absence of a gres.conf file as a fatal error on systems
    configured with GRES, but set GRES counts to zero.
 -- BLUEGENE - Update correctly the state in the reason of a block if an
    admin sets the state to error.
 -- BLUEGENE - handle reason of blocks in error more correctly between
    restarts of the slurmctld.
 -- BLUEGENE - Fix minor potential memory leak when setting block error reason.
 -- BLUEGENE - Fix if running in Static/Overlap mode and full system block
    is in an error state, won't deny jobs.
 -- Fix for accounting where your cluster isn't numbered in counting order
    (i.e. 1-9,0 instead of 0-9).  The bug would cause 'sacct -N nodename' to
    not give correct results on these systems.
 -- Fix to GRES allocation logic when resources are associated with specific
    CPUs on a node. Patch from Steve Trofinoff, CSCS.
 -- Fix bugs in sched/backfill with respect to QOS reservation support and job
    time limits. Patch from Alejandro Lucero Palau (Barcelona Supercomputer
    Center).
 -- BGQ - fix to set up corner correctly for sub block jobs.
 -- Major re-write of the CPU Management User and Administrator Guide (web
    page) by Martin Perry, Bull.
 -- BLUEGENE - If removing blocks from system that once existed cleanup of old
    block happens correctly now.
 -- Prevent slurmctld crashing with configuration of MaxMemPerCPU=0.
 -- Prevent job hold by operator or account coordinator of his own job from
    being an Administrator Hold rather than User Hold by default.
 -- Cray - Fix for srun.pl parsing to avoid adding spaces between option and
    argument (e.g. "-N2" parsed properly without changing to "-N 2").
 -- Major updates to cgroup support by Mark Grondona (LLNL) and Matthieu
    Hautreux (CEA) and Sam Lang. Fixes timing problems with respect to the
    task_epilog. Allows cgroup mount point to be configurable. Added new
    configuration parameters MaxRAMPercent and MaxSwapPercent. Allow cgroup
    configuration parameters that are precentages to be floating point.
 -- Fixed issue where sview wasn't displaying correct nice value for jobs.
 -- Fixed issue where sview wasn't displaying correct min memory per node/cpu
    value for jobs.
 -- Disable some SelectTypeParameters for select/linear that aren't compatible.
 -- Move slurm_select_init to proper place to avoid loading multiple select
    plugins in the slurmd.
 -- BGQ - Include runjob_plugin.so in the bluegene rpm.
 -- Report correct job "Reason" if needed nodes are DOWN, DRAINED, or
    NOT_RESPONDING, "Resources" rather than "PartitionNodeLimit".
 -- BLUEGENE - Fixed issues with running on a sub-midplane system.
 -- Added some missing calls to allow older versions of SLURM to talk to newer.
 -- BGQ - allow steps to be ran.
 -- Do not attempt to run HeathCheckProgram on powered down nodes. Patch from
    Ramiro Alba, Centre Tecnològic de Tranferència de Calor, Spain.

* Changes in SLURM 2.3.0-2
==========================
 -- Fix for memory issue inside sview.
 -- Fix issue where if a job was pending and the slurmctld was restarted a
    variable wasn't initialized in the job structure making it so that job
    wouldn't run.

* Changes in SLURM 2.3.0
========================
 -- BLUEGENE - make sure we only set the jobinfo_select start_loc on a job
    when we are on a small block, not a regular one.
 -- BGQ - fix issue where not copying the correct amount of memory.
 -- BLUEGENE - fix clean start if jobs were running when the slurmctld was
    shutdown and then the system size changed.  This would probably only happen
    if you were emulating a system.
 -- Fix sview for calling a cray system from a non-cray system to get the
    correct geometry of the system.
 -- BLUEGENE - fix to correctly import pervious version of block state file.
 -- BLUEGENE - handle loading better when doing a clean start with static
    blocks.
 -- Add sinfo format and sort option "%n" for NodeHostName and "%o" for
    NodeAddr.
 -- If a job is deferred due to partition limits, then re-test those limits
    after a partition is modified. Patch from Don Lipari.
 -- Fix bug which would crash slurmcld if job's owner (not root) tries to clear
    a job's licenses by setting value to "".
 -- Cosmetic fix for printing out debug info in the priority plugin.
 -- In sview when switching from a bluegene machine to a regular linux cluster
    and vice versa the node->base partition lists will be displayed if setup
    in your .slurm/sviewrc file.
 -- BLUEGENE - Fix for creating full system static block on a BGQ system.
 -- BLUEGENE - Fix deadlock issue if toggling between Dynamic and Static block
    allocation with jobs running on blocks that don't exist in the static
    setup.
 -- BLUEGENE - Modify code to only give HTC states to BGP systems and not
    allow them on Q systems.
 -- BLUEGENE - Make it possible for an admin to define multiple dimension
    conn_types in a block definition.
 -- BGQ - Alter tools to output multiple dimensional conn_type.

* Changes in SLURM 2.3.0.rc2
============================
 -- With sched/wiki or sched/wiki2 (Maui or Moab scheduler), insure that a
    requeued job's priority is reset to zero.
 -- BLUEGENE - fix to run steps correctly in a BGL/P emulated system.
 -- Fixed issue where if there was a network issue between the slurmctld and
    the DBD where both remained up but were disconnected the slurmctld would
    get registered again with the DBD.
 -- Fixed issue where if the DBD connection from the ctld goes away because of
    a POLLERR the dbd_fail callback is called.
 -- BLUEGENE - Fix to smap command-line mode display.
 -- Change in GRES behavior for job steps: A job step's default generic
    resource allocation will be set to that of the job. If a job step's --gres
    value is set to "none" then none of the generic resources which have been
    allocated to the job will be allocated to the job step.
 -- Add srun environment value of SLURM_STEP_GRES to set default --gres value
    for a job step.
 -- Require SchedulerTimeSlice configuration parameter to be at least 5 seconds
    to avoid thrashing slurmd daemon.
 -- Cray - Fix to make nodes state in accounting consistent with state set by
    ALPS.
 -- Cray - A node DOWN to ALPS will be marked DOWN to SLURM only after reaching
    SlurmdTimeout. In the interim, the node state will be NO_RESPOND. This
    change makes behavior makes SLURM handling of the node DOWN state more
    consistent with ALPS. This change effects only Cray systems.
 -- Cray - Fix to work with 4.0.* instead of just 4.0.0
 -- Cray - Modify srun/aprun wrapper to map --exclusive to -F exclusive and
    --share to -F share. Note this does not consider the partition's Shared
    configuration, so it is an imperfect mapping of options.
 -- BLUEGENE - Added notice in the print config to tell if you are emulated
    or not.
 -- BLUEGENE - Fix job step scalability issue with large task count.
 -- BGQ - Improved c-node selection when asked for a sub-block job that
    cannot fit into the available shape.
 -- BLUEGENE - Modify "scontrol show step" to show  I/O nodes (BGL and BGP) or
    c-nodes (BGQ) allocated to each step. Change field name from "Nodes=" to
    "BP_List=".
 -- Code cleanup on step request to get the correct select_jobinfo.
 -- Memory leak fixed for rolling up accounting with down clusters.
 -- BGQ - fix issue where if first job step is the entire block and then the
    next parallel step is ran on a sub block, SLURM won't over subscribe cnodes.
 -- Treat duplicate switch name in topology.conf as fatal error. Patch from Rod
    Schultz, Bull
 -- Minor update to documentation describing the AllowGroups option for a
    partition in the slurm.conf.
 -- Fix problem with _job_create() when not using qos's.  It makes
    _job_create() consistent with similar logic in select_nodes().
 -- GrpCPURunMins in a QOS flushed out.
 -- Fix for squeue -t "CONFIGURING" to actually work.
 -- CRAY - Add cray.conf parameter of SyncTimeout, maximum time to defer job
    scheduling if SLURM node or job state are out of synchronization with ALPS.
 -- If salloc was run as interactive, with job control, reset the foreground
    process group of the terminal to the process group of the parent pid before
    exiting. Patch from Don Albert, Bull.
 -- BGQ - set up the corner of a sub block correctly based on a relative
    position in the block instead of absolute.
 -- BGQ - make sure the recently added select_jobinfo of a step launch request
    isn't sent to the slurmd where environment variables would be overwritten
    incorrectly.

* Changes in SLURM 2.3.0.rc1
============================
 -- NOTE THERE HAVE BEEN NEW FIELDS ADDED TO THE JOB AND PARTITION STATE SAVE
    FILES AND RPCS. PENDING AND RUNNING JOBS WILL BE LOST WHEN UPGRADING FROM
    EARLIER VERSION 2.3 PRE-RELEASES AND RPCS WILL NOT WORK WITH EARLIER
    VERSIONS.
 -- select/cray: Add support for Accelerator information including model and
    memory options.
 -- Cray systems: Add support to suspend/resume salloc command to insure that
    aprun does not get initiated when the job is suspended. Processes suspended
    and resumed are determined by using process group ID and parent process ID,
    so some processes may be missed. Since salloc runs as a normal user, it's
    ability to identify processes associated with a job is limited.
 -- Cray systems: Modify smap and sview to display all nodes even if multiple
    nodes exist at each coordinate.
 -- Improve efficiency of select/linear plugin with topology/tree plugin
    configured, Patch by Andriy Grytsenko (Massive Solutions Limited).
 -- For front-end architectures on which job steps are run (emulated Cray and
    BlueGene systems only), fix bug that would free memory still in use.
 -- Add squeue support to display a job's license information. Patch by Andy
    Roosen (University of Deleware).
 -- Add flag to the select APIs for job suspend/resume indicating if the action
    is for gang scheduling or an explicit job suspend/resume by the user. Only
    an explicit job suspend/resume will reset the job's priority and make
    resources exclusively held by the job available to other jobs.
 -- Fix possible invalid memory reference in sched/backfill. Patch by Andriy
    Grytsenko (Massive Solutions Limited).
 -- Add select_jobinfo to the task launch RPC. Based upon patch by Andriy
    Grytsenko (Massive Solutions Limited).
 -- Add DefMemPerCPU/Node and MaxMemPerCPU/Node to partition configuration.
    This improves flexibility when gang scheduling only specific partitions.
 -- Added new enums to print out when a job is held by a QOS instead of an
    association limit.
 -- Enhancements to sched/backfill performance with select/cons_res plugin.
    Patch from Bjørn-Helge Mevik, University of Oslo.
 -- Correct job run time reported by smap for suspended jobs.
 -- Improve job preemption logic to avoid preempting more jobs than needed.
 -- Add contribs/arrayrun tool providing support for job arrays. Contributed by
    Bjørn-Helge Mevik, University of Oslo. NOTE: Not currently packaged as RPM
    and manual file editing is required.
 -- When suspending a job, wait 2 seconds instead of 1 second between sending
    SIGTSTP and SIGSTOP. Some MPI implementation were not stopping within the
    1 second delay.
 -- Add support for managing devices based upon Linux cgroup container. Based
    upon patch by Yiannis Georgiou, Bull.
 -- Fix memory buffering bug if a AllowGroups parameter of a partition has 100
    or more users. Patch by Andriy Grytsenko (Massive Solutions Limited).
 -- Fix bug in generic resource tracking of gres associated with specific CPUs.
    Resources were being over-allocated.
 -- On systems with front-end nodes (IBM BlueGene and Cray) limit batch jobs to
    only one CPU of these shared resources.
 -- Set SLURM_MEM_PER_CPU or SLURM_MEM_PER_NODE environment variables for both
    interactive (salloc) and batch jobs if the job has a memory limit. For Cray
    systems also set CRAY_AUTO_APRUN_OPTIONS environment variable with the
    memory limit.
 -- Fix bug in select/cons_res task distribution logic when tasks-per-node=0.
    Patch from Rod Schultz, Bull.
 -- Restore node configuration information (CPUs, memory, etc.) for powered
    down when slurmctld daemon restarts rather than waiting for the node to be
    restored to service and getting the information from the node (NOTE: Only
    relevent if FastSchedule=0).
 -- For Cray systems with the srun2aprun wrapper, rebuild the srun man page
    identifying the srun optioins which are valid on that system.
 -- BlueGene: Permit users to specify a separate connection type for each
    dimension (e.g. "--conn-type=torus,mesh,torus").
 -- Add the ability for a user to limit the number of leaf switches in a job's
    allocation using the --switch option of salloc, sbatch and srun. There is
    also a new SchedulerParameters value of max_switch_wait, which a SLURM
    administrator can used to set a maximum job delay and prevent a user job
    from blocking lower priority jobs for too long. Based on work by Rod
    Schultz, Bull.

* Changes in SLURM 2.3.0.pre6
=============================
 -- NOTE: THERE HAS BEEN A NEW FIELD ADDED TO THE CONFIGURATION RESPONSE RPC
    AS SHOWN BY "SCONTROL SHOW CONFIG". THIS FUNCTION WILL ONLY WORK WHEN THE
    SERVER AND CLIENT ARE BOTH RUNNING SLURM VERSION 2.3.0.pre6
 -- Modify job expansion logic to support licenses, generic resources, and
    currently running job steps.
 -- Added an rpath if using the --with-munge option of configure.
 -- Add support for multiple sets of DEFAULT node, partition, and frontend
    specifications in slurm.conf so that default values can be changed multiple
    times as the configuration file is read.
 -- BLUEGENE - Improved logic to place small blocks in free space before freeing
    larger blocks.
 -- Add optional argument to srun's --kill-on-bad-exit so that user can set
    its value to zero and override a SLURM configuration parameter of
    KillOnBadExit.
 -- Fix bug in GraceTime support for preempted jobs that prevented proper
    operation when more than one job was being preempted. Based on patch from
    Bill Brophy, Bull.
 -- Fix for running sview from a non-bluegene cluster to a bluegene cluster.
    Regression from pre5.
 -- If job's TMPDIR environment is not set or is not usable, reset to "/tmp".
    Patch from Andriy Grytsenko (Massive Solutions Limited).
 -- Remove logic for defunct RPC: DBD_GET_JOBS.
 -- Propagate DebugFlag changes by scontrol to the plugins.
 -- Improve accuracy of REQUEST_JOB_WILL_RUN start time with respect to higher
    priority pending jobs.
 -- Add -R/--reservation option to squeue command as a job filter.
 -- Add scancel support for --clusters option.
 -- Note that scontrol and sprio can only support a single cluster at one time.
 -- Add support to salloc for a new environment variable SALLOC_KILL_CMD.
 -- Add scontrol ability to increment or decrement a job or step time limit.
 -- Add support for SLURM_TIME_FORMAT environment variable to control time
    stamp output format. Work by Gerrit Renker, CSCS.
 -- Fix error handling in mvapich plugin that could cause srun to enter an
    infinite loop under rare circumstances.
 -- Add support for multiple task plugins. Patch from Andriy Grytsenko (Massive
    Solutions Limited).
 -- Addition of per-user node/cpu limits for QOS's. Patch from Aaron Knister,
    UMBC.
 -- Fix logic for multiple job resize operations.
 -- BLUEGENE - many fixes to make things work correctly on a L/P system.
 -- Fix bug in layout of job step with --nodelist option plus node count. Old
    code could allocate too few nodes.

* Changes in SLURM 2.3.0.pre5
=============================
 -- NOTE: THERE HAS BEEN A NEW FIELD ADDED TO THE JOB STATE FILE. UPGRADES FROM
    VERSION 2.3.0-PRE4 WILL RESULT IN LOST JOBS UNLESS THE "orig_dependency"
    FIELD IS REMOVED FROM JOB STATE SAVE/RESTORE LOGIC. ON CRAY SYSTEMS A NEW
    "confirm_cookie" FIELD WAS ADDED AND HAS THE SAME EFFECT OF DISABLING JOB
    STATE RESTORE.
 -- BLUEGENE - Improve speed of start up when removing blocks at the beginning.
 -- Correct init.d/slurm status to have non-zero exit code if ANY Slurm
    damon that should be running on the node is not running. Patch from Rod
    Schulz, Bull.
 -- Improve accuracy of response to "srun --test-only jobid=#".
 -- Fix bug in front-end configurations which reports job_cnt_comp underflow
    errors after slurmctld restarts.
 -- Eliminate "error from _trigger_slurmctld_event in backup.c" due to lack of
    event triggers.
 -- Fix logic in BackupController to properly recover front-end node state and
    avoid purging active jobs.
 -- Added man pages to html pages and the new cpu_management.html page.
    Submitted by Martin Perry / Rod Schultz, Bull.
 -- Job dependency information will only show the currently active dependencies
    rather than the original dependencies. From Dan Rusak, Bull.
 -- Add RPCs to get the SPANK environment variables from the slurmctld daemon.
    Patch from Andrej N. Gritsenko.
 -- Updated plugins/task/cgroup/task_cgroup_cpuset.c to support newer
    HWLOC_API_VERSION.
 -- Do not build select/bluegene plugin if C++ compiler is not installed.
 -- Add new configure option --with-srun2aprun to build an srun command
    which is a wrapper over Cray's aprun command and supports many srun
    options. Without this option, the srun command will advise the user
    to use the aprun command.
 -- Change container ID supported by proctrack plugin from 32-bit to 64-bit.
 -- Added contribs/cray/libalps_test_programs.tar.gz with tools to validate
    SLURM's logic used to support Cray systems.
 -- Create RPM for srun command that is a wrapper for the Cray/ALPS aprun
    command. Dependent upon .rpmmacros parameter of "%_with_srun2aprun".
 -- Add configuration parameter MaxStepCount to limit effect of bad batch
    scripts.
 -- Moving to github
 -- Fix for handling a 2.3 system talking to a 2.2 slurmctld.
 -- Add contribs/lua/job_submit.license.lua script. Update job_submit and Lua
    related documentation.
 -- Test if _make_batch_script() is called with a NULL script.
 -- Increase hostlist support from 24k to 64k nodes.
 -- Renamed the Accounting Storage database's "DerivedExitString" job field to
    "Comment".  Provided backward compatible support for "DerivedExitString" in
    the sacctmgr tool.
 -- Added the ability to save the job's comment field to the Accounting
    Storage db (to the formerly named, "DerivedExitString" job field).  This
    behavior is enabled by a new slurm.conf parameter:
    AccountingStoreJobComment.
 -- Test if _make_batch_script() is called with a NULL script.
 -- Increase hostlist support from 24k to 64k nodes.
 -- Fix srun to handle signals correctly when waiting for a step creation.
 -- Preserve the last job ID across slurmctld daemon restarts even if the job
    state file can not be fully recovered.
 -- Made the hostlist functions be able to arbitrarily handle any size
    dimension no matter what the size of the cluster is in dimensions.

* Changes in SLURM 2.3.0.pre4
=============================
 -- Add GraceTime to Partition and QOS data structures. Preempted jobs will be
    given this time interval before termination. Work by Bill Brophy, Bull.
 -- Add the ability for scontrol and sview to modify slurmctld DebugFlags
    values.
 -- Various Cray-specific patches:
    - Fix a bug in distinguishing XT from XE.
    - Avoids problems with empty nodenames on Cray.
    - Check whether ALPS is hanging on to nodes, which happens if ALPS has not
      yet cleaned up the node partition.
    - Stops select/cray from clobbering node_ptr->reason.
    - Perform 'safe' release of ALPS reservations using inventory and apkill.
    - Compile-time sanity check for the apbasil and apkill files.
    - Changes error handling in do_basil_release() (called by
      select_g_job_fini()).
    - Warn that salloc --no-shell option is not supported on Cray systems.
 -- Add a reservation flag of "License_Only". If set, then jobs using the
    reservation may use the licenses associated with it plus any compute nodes.
    Otherwise the job is limited to the compute nodes associated with the
    reservation.
 -- Change slurm.conf node configuration parameter from "Procs" to "CPUs".
    Both parameters will be supported for now.
 -- BLUEGENE - fix for when user requests only midplane names with no count at
    job submission time to process the node count correctly.
 -- Fix job step resource allocation problem when both node and tasks counts
    are specified. New logic selects nodes with larger CPU counts as needed.
 -- BGQ - make it so srun wraps runjob (still under construction, but works
    for most cases)
 -- Permit a job's QOS and Comment field to both change in a single RPC. This
    was previously disabled since Moab stored the QOS within the Comment field.
 -- Add support for jobs to expand in size. Submit additional batch job with
    the option "--dependency=expand:<jobid>". See web page "faq.html#job_size"
    for details. Restrictions to be removed in the future.
 -- Added --with-alps-emulation to configure, and also an optional cray.conf
    to setup alps location and database information.
 -- Modify PMI data types from 16-bits to 32-bits in order to support MPICH2
    jobs with more than 65,536 tasks. Patch from Hongjia Cao, NUDT.
 -- Set slurmd's soft process CPU limit equal to it's hard limit and notify the
    user if the limit is not infinite.
 -- Added proctrack/cgroup and task/cgroup plugins from Matthieu Hautreux, CEA.
 -- Fix slurmctld restart logic that could leave nodes in UNKNOWN state for a
    longer time than necessary after restart.

* Changes in SLURM 2.3.0.pre3
=============================
 -- BGQ - Appears to work correctly in emulation mode, no sub blocks just yet.
 -- Minor typos fixed
 -- Various bug fixes for Cray systems.
 -- Fix bug that when setting a compute node to idle state, it was failing to
    set the systems up_node_bitmap.
 -- BLUEGENE - code reorder
 -- BLUEGENE - Now only one select plugin for all Bluegene systems.
 -- Modify srun to set the SLURM_JOB_NAME environment variable when srun is
    used to create a new job allocation. Not set when srun is used to create a
    job step within an existing job allocation.
 -- Modify init.d/slurm script to start multiple slurmd daemons per compute
    node if so configured. Patch from Matthieu Hautreux, CEA.
 -- Change license data structure counters from uint16_t to uint32_t to support
    larger license counts.

* Changes in SLURM 2.3.0.pre2
=============================
 -- Log a job's requeue or cancellation due to preemption to that job's stderr:
    "*** JOB 65547 CANCELLED AT 2011-01-21T12:59:33 DUE TO PREEMPTION ***".
 -- Added new job termination state of JOB_PREEMPTED, "PR" or "PREEMPTED" to
    indicate job termination was due to preemption.
 -- Optimize advanced reservations resource selection for computer topology.
    The logic has been added to select/linear and select/cons_res, but will
    not be enabled until the other select plugins are modified.
 -- Remove checkpoint/xlch plugin.
 -- Disable deletion of partitions that have unfinished jobs (pending,
    running or suspended states). Patch from Martin Perry, BULL.
 -- In sview, disable the sorting of node records by name at startup for
    clusters over 1000 nodes. Users can enable this by selecting the "Name"
    tab. This change dramatically improves scalability of sview.
 -- Report error when trying to change a node's state from scontrol for Cray
    systems.
 -- Do not attempt to read the batch script for non-batch jobs. This patch
    eliminates some inappropriate error messages.
 -- Preserve NodeHostName when reordering nodes due to system topology.
 -- On Cray/ALPS systems  do node inventory before scheduling jobs.
 -- Disable some salloc options on Cray systems.
 -- Disable scontrol's wait_job command on Cray systems.
 -- Disable srun command on native Cray/ALPS systems.
 -- Updated configure option "--enable-cray-emulation" (still under
    development) to emulate a cray XT/XE system, and auto-detect a real
    Cray XT/XE systems (removed no longer needed --enable-cray configure
    option).  Building on native Cray systems requires the
    cray-MySQL-devel-enterprise rpm and expat XML parser library/headers.

* Changes in SLURM 2.3.0.pre1
=============================
 -- Added that when a slurmctld closes the connection to the database it's
    registered host and port are removed.
 -- Added flag to slurmdbd.conf TrackSlurmctldDown where if set will mark idle
    resources as down on a cluster when a slurmctld disconnects or is no
    longer reachable.
 -- Added support for more than one front-end node to run slurmd on
    architectures where the slurmd does not execute on the compute nodes
    (e.g. BlueGene). New configuration parameters FrontendNode and FrontendAddr
    added. See "man slurm.conf" for more information.
 -- With the scontrol show job command when using the --details option, show
    a batch job's script.
 -- Add ability to create reservations or partitions and submit batch jobs
    using sview. Also add the ability to delete reservations and partitions.
 -- Added new configuration parameter MaxJobId. Once reached, restart job ID
    values at FirstJobId.
 -- When restarting slurmctld with priority/basic, increment all job priorities
    so the highest job priority becomes TOP_PRIORITY.

* Changes in SLURM 2.2.8
========================
 -- Prevent background salloc disconnecting terminal at termination. Patch by
    Don Albert, Bull.
 -- Fixed issue where preempt mode is skipped when creating a QOS. Patch by
    Bill Brophy, Bull.
 -- Fixed documention (html) for PriorityUsageResetPeriod to match that in the
    man pages. Patch by Nancy Kritkausky, Bull.

* Changes in SLURM 2.2.7
========================
 -- Eliminate zombie process created if salloc exits with stopped child
    process. Patch from Gerrit Renker, CSCS.
 -- With default configuration on non-Cray systems, enable salloc to be
    spawned as a background process. Based upon work by Don Albert (Bull) and
    Gerrit Renker (CSCS).
 -- Fixed Regression from 2.2.4 in accounting where an inherited limit
    would not be set correctly in the added child association.
 -- Fixed issue with accounting when asking for jobs with a hostlist.
 -- Avoid clearing a node's Arch, OS, BootTime and SlurmdStartTime when
    "scontrol reconfig" is run. Patch from Martin Perry, Bull.

* Changes in SLURM 2.2.6
========================
 -- Fix displaying of account coordinators with sacctmgr.  Possiblity to show
    deleted accounts.  Only a cosmetic issue, since the accounts are already
    deleted, and have no associations.
 -- Prevent opaque ncurses WINDOW struct on OS X 10.6.
 -- Fix issue with accounting when using PrivateData=jobs... users would not be
    able to view there own jobs unless they were admin or coordinators which is
    obviously wrong.
 -- Fix bug in node stat if slurmctld is restarted while nodes are in the
    process of being powered up. Patch from Andriy Grytsenko.
 -- Change maximum batch script size from 128k to 4M.
 -- Get slurmd -f option working. Patch from Andriy Grytsenko.
 -- Fix for linking problem on OSX. Patches from Jon Bringhurst (LANL) and
    Tyler Strickland.
 -- Reset a job's priority to zero (suspended) when Moab requeues the job.
    Patch from Par Andersson, NSC.
 -- When enforcing accounting, fix polling for unknown uids for users after
    the slurmctld started.  Previously one would have to issue a reconfigure
    to the slurmctld to have it look for new uids.
 -- BLUEGENE - if a block goes into an error state.  Fix issue where accounting
    wasn't updated correctly when the block was resumed.
 -- Synchronize power-save module better with scheduler. Patch from
    Andriy Grytsenko (Massive Solutions Limited).
 -- Avoid SEGV in association logic with user=NULL. Patch from
    Andriy Grytsenko (Massive Solutions Limited).
 -- Fixed issue in accounting where it was possible for a new
    association/wckey to be set incorrectly as a default the new object
    was added after an original default object already existed.  Before
    the slurmctld would need to be restarted to fix the issue.
 -- Updated the Normalized Usage section in priority_multifactor.shtml.
 -- Disable use of SQUEUE_FORMAT env var if squeue -l, -o, or -s option is
    used. Patch from Aaron Knister (UMBC).

* Changes in SLURM 2.2.5
========================
 -- Correct init.d/slurm status to have non-zero exit code if ANY Slurm
    damon that should be running on the node is not running. Patch from Rod
    Schulz, Bull.
 -- Improve accuracy of response to "srun --test-only jobid=#".
 -- Correct logic to properly support --ntasks-per-node option in the
    select/cons_res plugin. Patch from Rod Schulz, Bull.
 -- Fix bug in select/cons_res with respect to generic resource (gres)
    scheduling which prevented some jobs from starting as soon as possible.
 -- Fix memory leak in select/cons_res when backfill scheduling generic
    resources (gres).
 -- Fix for when configuring a node with more resources than in real life
    and using task/affinity.
 -- Fix so slurmctld will pack correctly 2.1 step information. (Only needed if
    a 2.1 client is talking to a 2.2 slurmctld.)
 -- Set powered down node's state to IDLE+POWER after slurmctld restart instead
    of leaving in UNKNOWN+POWER. Patch from Andrej Gritsenko.
 -- Fix bug where is srun's executable is not on it's current search path, but
    can be found in the user's default search path. Modify slurmstepd to find
    the executable. Patch from Andrej Gritsenko.
 -- Make sview display correct cpu count for steps.
 -- BLUEGENE - when running in overlap mode make sure to check the connection
    type so you can create overlapping blocks on the exact same nodes with
    different connection types (i.e. one torus, one mesh).
 -- Fix memory leak if MPI ports are reserved (for OpenMPI) and srun's
    --resv-ports option is used.
 -- Fix some anomalies in select/cons_res task layout when using the
    --cpus-per-task option. Patch from Martin Perry, Bull.
 -- Improve backfill scheduling logic when job specifies --ntasks-per-node and
    --mem-per-cpu options on a heterogeneous cluster. Patch from Bjorn-Helge
    Mevik, University of Oslo.
 -- Print warning message if srun specifies --cpus-per-task larger than used
    to create job allocation.
 -- Fix issue when changing a users name in accounting, if using wckeys would
    execute correctly, but bad memcopy would core the DBD.  No information
    would be lost or corrupted, but you would need to restart the DBD.

* Changes in SLURM 2.2.4
========================
 -- For batch jobs for which the Prolog fails, substitute the job ID for any
    "%j" in the job's output or error file specification.
 -- Add licenses field to the sview reservation information.
 -- BLUEGENE - Fix for handling extremely overloaded system on Dynamic system
    dealing with starting jobs on overlapping blocks.  Previous fallout
    was job would be requeued.  (happens very rarely)
 -- In accounting_storage/filetxt plugin, substitute spaces within job names,
    step names, and account names with an underscore to insure proper parsing.
 -- When building contribs/perlapi ignore both INSTALL_BASE and PERL_MM_OPT.
    Use PREFIX instead to avoid build errors from multiple installation
    specifications.
 -- Add job_submit/cnode plugin to support resource reservations of less than
    a full midplane on BlueGene computers. Treat cnodes as liceses which can
    be reserved and are consumed by jobs. This reservation mechanism for less
    than an entire midplane is still under development.
 -- Clear a job's "reason" field when a held job is released.
 -- When releasing a held job, calculate a new priority for it rather than
    just setting the priority to 1.
 -- Fix for sview started on a non-bluegene system to pick colors correctly
    when talking to a real bluegene system.
 -- Improve sched/backfill's expected start time calculation.
 -- Prevent abort of sacctmgr for dump command with invalid (or no) filename.
 -- Improve handling of job updates when using limits in accounting, and
    updating jobs as a non-admin user.
 -- Fix for "squeue --states=all" option. Bug would show no jobs.
 -- Schedule jobs with reservations before those without reservations.
 -- Fix squeue/scancel to query correctly against accounts of different case.
 -- Abort an srun command when it's associated job gets aborted due to a
    dependency that can not be satisfied.
 -- In jobcomp plugins, report start time of zeroif pending job is cancelled.
    Previously may report expected start time.
 -- Fixed sacctmgr man to state correct variables.
 -- Select nodes based upon their Weight when job allocation requests include
    a constraint field with a count (e.g. "srun --constraint=gpu*2 -N4 a.out").
 -- Add support for user names that are entirely numeric and do not treat them
    as UID values. Patch from Dennis Leepow.
 -- Patch to un/pack double values properly if negative value.  Patch from
    Dennis Leepow
 -- Do not reset a job's priority when requeued or suspended.
 -- Fix problemm that could let new jobs start on a node in DRAINED state.
 -- Fix cosmetic sacctmgr issue where if the user you are trying to add
    doesn't exist in the /etc/passwd file and the account you are trying
    to add them to doesn't exist it would print (null) instead of the bad
    account name.
 -- Fix associations/qos for when adding back a previously deleted object
    the object will be cleared of all old limits.
 -- BLUEGENE - Added back a lock when creating dynamic blocks to be more thread
    safe on larger systems with heavy load.

* Changes in SLURM 2.2.3
========================
 -- Update srun, salloc, and sbatch man page description of --distribution
    option. Patches from Rod Schulz, Bull.
 -- Applied patch from Martin Perry to fix "Incorrect results for task/affinity
    block second distribution and cpus-per-task > 1" bug.
 -- Avoid setting a job's eligible time while held (priority == 0).
 -- Substantial performance improvement to backfill scheduling. Patch from
    Bjorn-Helge Mevik, University of Oslo.
 -- Make timeout for communications to the slurmctld be based upon the
    MessageTimeout configuration parameter rather than always 3 seconds.
    Patch from Matthieu Hautreux, CEA.
 -- Add new scontrol option of "show aliases" to report every NodeName that is
    associated with a given NodeHostName when running multiple slurmd daemons
    per compute node (typically used for testing purposes). Patch from
    Matthieu Hautreux, CEA.
 -- Fix for handling job names with a "'" in the name within MySQL accounting.
    Patch from Gerrit Renker, CSCS.
 -- Modify condition under which salloc execution delayed until moved to the
    foreground. Patch from Gerrit Renker, CSCS.
	Job control for interactive salloc sessions: only if ...
	a) input is from a terminal (stdin has valid termios attributes),
	b) controlling terminal exists (non-negative tpgid),
	c) salloc is not run in allocation-only (--no-shell) mode,
	d) salloc runs in its own process group (true in interactive
	   shells that support job control),
	e) salloc has been configured at compile-time to support background
	   execution and is not currently in the background process group.
 -- Abort salloc if no controlling terminal and --no-shell option is not used
    ("setsid salloc ..." is disabled). Patch from Gerrit Renker, CSCS.
 -- Fix to gang scheduling logic which could cause jobs to not be suspended
    or resumed when appropriate.
 -- Applied patch from Martin Perry to fix "Slurmd abort when using task
    affinity with plane distribution" bug.
 -- Applied patch from Yiannis Georgiou to fix "Problem with cpu binding to
    sockets option" behaviour. This change causes "--cpu_bind=sockets" to bind
    tasks only to the CPUs on each socket allocated to the job rather than all
    CPUs on each socket.
 -- Advance daily or weekly reservations immediately after termination to avoid
    having a job start that runs into the reservation when later advanced.
 -- Fix for enabling users to change there own default account, wckey, or QOS.
 -- BLUEGENE - If using OVERLAP mode fixed issue with multiple overlapping
    blocks in error mode.
 -- Fix for sacctmgr to display correctly default accounts.
 -- scancel -s SIGKILL will always sent the RPC to the slurmctld rather than
    the slurmd daemon(s). This insures that tasks in the process of getting
    spawned are killed.
 -- BLUEGENE - If using OVERLAP mode fixed issue with jobs getting denied
    at submit if the only option for their job was overlapping a block in
    error state.

* Changes in SLURM 2.2.2
========================
 -- Correct logic to set correct job hold state (admin or user) when setting
    the job's priority using scontrol's "update jobid=..." rather than its
    "hold" or "holdu" commands.
 -- Modify squeue to report unset --mincores, --minthreads or --extra-node-info
    values as "*" rather than 65534. Patch from Rod Schulz, BULL.
 -- Report the StartTime of a job as "Unknown" rather than the year 2106 if its
    expected start time was too far in the future for the backfill scheduler
    to compute.
 -- Prevent a pending job reason field from inappropriately being set to
    "Priority".
 -- In sched/backfill with jobs having QOS_FLAG_NO_RESERVE set, then don't
    consider the job's time limit when attempting to backfill schedule. The job
    will just be preempted as needed at any time.
 -- Eliminated a bug in sbatch when no valid target clusters are specified.
 -- When explicitly sending a signal to a job with the scancel command and that
    job is in a pending state, then send the request directly to the slurmctld
    daemon and do not attempt to send the request to slurmd daemons, which are
    not running the job anyway.
 -- In slurmctld, properly set the up_node_bitmap when setting it's state to
    IDLE (in case the previous node state was DOWN).
 -- Fix smap to process block midplane names correctly when on a bluegene
    system.
 -- Fix smap to once again print out the Letter 'ID' for each line of a block/
    partition view.
 -- Corrected the NOTES section of the scancel man page
 -- Fix for accounting_storage/mysql plugin to correctly query cluster based
    transactions.
 -- Fix issue when updating database for clusters that were previously deleted
    before upgrade to 2.2 database.
 -- BLUEGENE - Handle mesh torus check better in dynamic mode.
 -- BLUEGENE - Fixed race condition when freeing block, most likely only would
    happen in emulation.
 -- Fix for calculating used QOS limits correctly on a slurmctld reconfig.
 -- BLUEGENE - Fix for bad conn-type set when running small blocks in HTC mode.
 -- If salloc's --no-shell option is used, then do not attempt to preserve the
    terminal's state.
 -- Add new SLURM configure time parameter of --disable-salloc-background. If
    set, then salloc can only execute in the foreground. If started in the
    background, then a message will be printed and the job allocation halted
    until brought into the foreground.
    NOTE: THIS IS A CHANGE IN DEFAULT SALLOC BEHAVIOR FROM V2.2.1, BUT IS
    CONSISTENT WITH V2.1 AND EARLIER.
 -- Added the Multi-Cluster Operation web page.
 -- Removed remnant code for enforcing max sockets/cores/threads in the
    cons_res plugin (see last item in 2.1.0-pre5).  This was responsible
    for a bug reported by Rod Schultz.
 -- BLUEGENE - Set correct env vars for HTC mode on a P system to get correct
    block.
 -- Correct RunTime reported by "scontrol show job" for pending jobs.

* Changes in SLURM 2.2.1
========================
 -- Fix setting derived exit code correctly for jobs that happen to have the
    same jobid.
 -- Better checking for time overflow when rolling up in accounting.
 -- Add scancel --reservation option to cancel all jobs associated with a
    specific reservation.
 -- Treat reservation with no nodes like one that starts later (let jobs of any
    size get queued and do not block any pending jobs).
 -- Fix bug in gang scheduling logic that would temporarily resume to many jobs
    after a job completed.
 -- Change srun message about job step being deferred due to SlurmctldProlog
    running to be more clear and only print when --verbose option is used.
 -- Made it so you could remove the hold on jobs with sview by setting the
    priority to infinite.
 -- BLUEGENE - better checking small blocks in dynamic mode whether a full
    midplane job could run or not.
 -- Decrease the maximum sleep time between srun job step creation retry
    attempts from 60 seconds to 29 seconds. This should eliminate a possible
    synchronization problem with gang scheduling that could result in job
    step creation requests only occuring when a job is suspended.
 -- Fix to prevent changing a held job's state from HELD to DEPENDENCY
    until the job is released. Patch from Rod Schultz, Bull.
 -- Fixed sprio -M to reflect PriorityWeight values from remote cluster.
 -- Fix bug in sview when trying to update arbitrary field on more than one
    job. Formerly would display information about one job, but update next
    selected job.
 -- Made it so QOS with UsageFactor set to 0 would make it so jobs running
    under that QOS wouldn't add time to fairshare or association/qos
    limits.
 -- Fixed issue where QOS priority wasn't re-normalized until a slurmctld
    restart when a QOS priority was changed.
 -- Fix sprio to use calculated numbers from slurmctld instead of
    calulating it own numbers.
 -- BLUEGENE - fixed race condition with preemption where if the wind blows the
    right way the slurmctld could lock up when preempting jobs to run others.
 -- BLUEGENE - fixed epilog to wait until MMCS job is totally complete before
    finishing.
 -- BLUEGENE - more robust checking for states when freeing blocks.
 -- Added correct files to the slurm.spec file for correct perl api rpm
    creation.
 -- Added flag "NoReserve" to a QOS to make it so all jobs are created equal
    within a QOS.  So if larger, higher priority jobs are unable to run they
    don't prevent smaller jobs from running even if running the smaller
    jobs delay the start of the larger, higher priority jobs.
 -- BLUEGENE - Check preemptees one by one to preempt lower priority jobs first
    instead of first fit.
 -- In select/cons_res, correct handling of the option
    SelectTypeParameters=CR_ONE_TASK_PER_CORE.
 -- Fix for checking QOS to override partition limits, previously if not using
    QOS some limits would be overlooked.
 -- Fix bug which would terminate a job step if any of the nodes allocated to
    it were removed from the job's allocation. Now only the tasks on those
    nodes are terminated.
 -- Fixed issue when using a storage_accounting plugin directly without the
    slurmDBD updates weren't always sent correctly to the slurmctld, appears to
    OS dependent, reported by Fredrik Tegenfeldt.

* Changes in SLURM 2.2.0
========================
 -- Change format of Duration field in "scontrol show reservation" output from
    an integer number of minutes to "[days-]hours:minutes:seconds".
 -- Add support for changing the reservation of pending or running jobs.
 -- On Cray systems only, salloc sends SIGKILL to spawned process group when
    job allocation is revoked. Patch from Gerrit Renker, CSCS.
 -- Fix for sacctmgr to work correctly when modifying user associations where
    all the associations contain a partition.
 -- Minor mods to salloc signal handling logic: forwards more signals and
    releases allocation on real-time signals. Patch from Gerrit Renker, CSCS.
 -- Add salloc logic to preserve tty attributes after abnormal exit. Patch
    from Mark Grondona, LLNL.
 -- BLUEGENE - Fix for issue in dynamic mode when trying to create a block
    overlapping a block with no job running on it but in configuring state.
 -- BLUEGENE - Speedup by skipping blocks that are deallocating for other jobs
    when starting overlapping jobs in dynamic mode.
 -- Fix for sacct --state to work correctly when not specifying a start time.
 -- Fix upgrade process in accounting from 2.1 for clusters named "cluster".
 -- Export more jobacct_common symbols needed for the slurm api on some systems.

* Changes in SLURM 2.2.0.rc4
============================
 -- Correction in logic to spread out over time highly parallel messages to
    minimize lost messages. Effects slurmd epilog complete messages and PMI
    key-pair transmissions. Patch from Gerrit Renker, CSCS.
 -- Fixed issue where if a system has unset messages to the dbd in 2.1 and
    upgrades to 2.2.  Messages are now processed correctly now.
 -- Fixed issue where assoc_mgr cache wasn't always loaded correctly if the
    slurmdbd wasn't running when the slurmctld was started.
 -- Make sure on a pthread create in step launch that the error code is looked
    at. Improves fault-tolerance of slurmd.
 -- Fix setting up default acct/wckey when upgrading from 2.1 to 2.2.
 -- Fix issue with associations attached to a specific partition with no other
    association, and requesting a different partition.
 -- Added perlapi to the slurmdb to the slurm.spec.
 -- In sched/backfill, correct handling of CompleteWait parameter to avoid
    backfill scheduling while a job is completing. Patch from Gerrit Renker,
    CSCS.
 -- Send message back to user when trying to launch job on computing lacking
    that user ID. Patch from Hongjia Cao, NUDT.
 -- BLUEGENE - Fix it so 1 midplane clusters will run small block jobs.
 -- Add Command and WorkDir to the output of "scontrol show job" for job
    allocations created using srun (not just sbatch).
 -- Fixed sacctmgr to not add blank defaultqos' when doing a cluster dump.
 -- Correct processing of memory and disk space specifications in the salloc,
    sbatch, and srun commands to work properly with a suffix of "MB", "GB",
    etc. and not only with a single letter (e.g. "M", "G", etc.).
 -- Prevent nodes with suspended jobs from being powered down by SLURM.
 -- Normalized the way pidfile are created by the slurm daemons.
 -- Fixed modifying the root association to no read in it's last value
    when clearing a limit being set.
 -- Revert some resent signal handling logic from salloc so that SIGHUP sent
    after the job allocation will properly release the allocation and cause
    salloc to exit.
 -- BLUEGENE - Fix for recreating a block in a ready state.
 -- Fix debug flags for incorrect logic when dealing with DEBUG_FLAG_WIKI.
 -- Report reservation's Nodes as a hostlist expression of all nodes rather
    than using "ALL".
 -- Fix reporting of nodes in BlueGene reservation (was reporting CPU count
    rather than cnode count in scontrol output for NodeCnt field).

* Changes in SLURM 2.2.0.rc3
============================
 -- Modify sacctmgr command to accept plural versions of options (e.g. "Users"
    in addition to "User"). Patch from Don Albert, BULL.
 -- BLUEGENE - make it so reset of boot counter happens only on state change
    and not when a new job comes along.
 -- Modify srun and salloc signal handling so they can be interrupted while
    waiting for an allocation. This was broken in version 2.2.0.rc2.
 -- Fix NULL pointer reference in sview. Patch from Gerrit Renker, CSCS.
 -- Fix file descriptor leak in slurmstepd on spank_task_post_fork() failure.
    Patch from Gerrit Renker, CSCS.
 -- Fix bug in preserving job state information when upgrading from SLURM
    version 2.1. Bug introduced in version 2.2.0-pre10. Patch from Par
    Andersson, NSC.
 -- Fix bug where if using the slurmdbd if a job wasn't able to start right
    away some accounting information may be lost.
 -- BLUEGENE - when a prolog failure happens the offending block is put in
    an error state.
 -- Changed the last column heading of the sshare output from "FS Usage" to
    "FairShare" and added more detail to the sshare man page.
 -- Fix bug in enforcement of reservation by account name. Used wrong index
    into an array. Patch from Gerrit Renker, CSCS.
 -- Modify job_submit/lua plugin to treat any non-zero return code from the
    job_submit and job_modify functions as an error and the user request should
    be aborted.
 -- Fix bug which would permit pending job to be started on completing node
    when job preemption is configured.

* Changes in SLURM 2.2.0.rc2
============================
 -- Fix memory leak in job step allocation logic. Patch from Hongjia Cao, NUDT.
 -- If a preempted job was submitted with the --no-requeue option then cancel
    rather than requeue it.
 -- Fix for problems when adding a user for the first time to a new cluster
    with a 2.1 sacctmgr without specifying a default account.
 -- Resend TERMINATE_JOB message only to nodes that the job still has not
    terminated on. Patch from Hongjia Cao, NUDT.
 -- Treat time limit specification of "0:300" as a request for 300 seconds
    (5 minutes) instead of one minute.
 -- Modify sched/backfill plugin logic to continue working its way down the
    queue of jobs rather than restarting at the top if there are no changes in
    job, node, or partition state between runs. Patch from Hongjia Cao, NUDT.
 -- Improve scalability of select/cons_res logic. Patch from Matthieu Hautreux,
    CEA.
 -- Fix for possible deadlock in the slurmstepd when cancelling a job that is
    also writing a large amount of data to stderr.
 -- Fix in select/cons_res to eliminate "mem underflow" error when the
    slurmctld is reconfigured while a job is in completing state.
 -- Send a message to the a user's job when it's real or virual memory limit
    is exceeded. :
 -- Apply rlimits right before execing the users task so to lower the risk of
    the task exiting because the slurmstepd ran over a limit (log file size,
    etc.)
 -- Add scontrol command of "uhold <job_id>" so that an administrator can hold
    a job and let the job's owner release it. The scontrol command of
    "hold <job_id>" when executed by a SLURM administrator can only be released
    by a SLURM administrator and not the job owner.
 -- Change atoi to slurm_atoul in mysql plugin, needed for running on 32-bit
    systems in some cases.
 -- If a batch job is found to be missing from a node, make its termination
    state be NODE_FAIL rather than CANCELLED.
 -- Fatal error put back if running a bluegene or cray plugin from a controller
    not of that type.
 -- Make sure jobacct_gather plugin is not shutdown before messing with the
    proccess list.
 -- Modify signal handling in srun and salloc commands to avoid deadlock if the
    malloc function is interupted and called again. The malloc function is
    thread safe, but not reentrant, which is a problem when signal handling if
    the malloc function itself has a lock. Problem fixed by moving signal
    handling in those commands to a new pthread.
 -- In srun set job abort flag on completion to handle the case when a user
    cancels a job while the node is not responding but slurmctld has not yet
    the node down. Patch from Hongjia Cao, NUDT.
 -- Streamline the PMI logic if no duplicate keys are included in the key-pairs
    managed. Substantially improves performance for large numbers of tasks.
    Adds support for SLURM_PMI_KVS_NO_DUP_KEYS environment variable. Patch
    from Hongjia Cao, NUDT.
 -- Fix issues with sview dealing with older versions of sview and saving
    defaults.
 -- Remove references to --mincores, --minsockets, and --minthreads from the
    salloc, sbatch and srun man pages. These options are defunct, Patch from
    Rod Schultz, Bull.
 -- Made openssl not be required to build RPMs, it is not required anymore
    since munge is the default crypto plugin.
 -- sacctmgr now has smarts to figure out if a qos is a default qos when
    modifing a user/acct or removing a qos.
 -- For reservations on BlueGene systems, set and report c-node counts rather
    than midplane counts.

* Changes in SLURM 2.2.0.rc1
============================
 -- Add show_flags parameter to the slurm_load_block_info() function.
 -- perlapi has been brought up to speed courtesy of Hongjia Coa. (make sure to
    run 'make clean' if building in a different dir than source)
 -- Fixed regression in pre12 in crypto/munge when running with
    --enable-multiple-slurmd which would cause the slurmd's to core.
 -- Fixed regression where cpu count wasn't figured out correctly for steps.
 -- Fixed issue when using old mysql that can't handle a '.' in the table
    name.
 -- Mysql plugin works correctly without the SlurmDBD
 -- Added ability to query batch step with sstat.  Currently no accounting data
    is stored for the batch step, but the internals are inplace if we decide to
    do that in the future.
 -- Fixed some backwards compatibility issues with 2.2 talking to 2.1.
 -- Fixed regression where modifying associations didn't get sent to the
    slurmctld.
 -- Made sshare sort things the same way saccmgr list assoc does
    (alphabetically)
 -- Fixed issue with default accounts being set up correctly.
 -- Changed sortting in the slurmctld so sshare output is similar to that of
    sacctmgr list assoc.
 -- Modify reservation logic so that daily and weekly reservations maintain
    the same time when daylight savings time starts or ends in the interim.
 -- Edit to make reservations handle updates to associations.
 -- Added the derived exit code to the slurmctld job record and the derived
    exit code and string to the job record in the SLURM db.
 -- Added slurm-sjobexit RPM for SLURM job exit code management tools.
 -- Added ability to use sstat/sacct against the batch step.
 -- Added OnlyDefaults option to sacctmgr list associations.
 -- Modified the fairshare priority formula to F = 2**(-Ue/S)
 -- Modify the PMI functions key-pair exchange function to support a 32-bit
    counter for larger job sizes. Patch from Hongjia Cao, NUDT.
 -- In sched/builtin - Make the estimated job start time logic faster (borrowed
    new logic from sched/backfill and added pthread) and more accurate.
 -- In select/cons_res fix bug that could result in a job being allocated zero
    CPUs on some nodes. Patch from Hongjia Cao, NUDT.
 -- Fix bug in sched/backfill that could set expected start time of a job too
    far in the future.
 -- Added ability to enforce new limits given to associations/qos on
    pending jobs.
 -- Increase max message size for the slurmdbd from 1000000 to 16*1024*1024
 -- Increase number of active threads in the slurmdbd from 50 to 100
 -- Fixed small bug in src/common/slurmdb_defs.c reported by Bjorn-Helge Mevik
 -- Fixed sacctmgr's ability to query associations against qos again.
 -- Fixed sview show config on non-bluegene systems.
 -- Fixed bug in selecting jobs based on sacct -N option
 -- Fix bug that prevented job Epilog from running more than once on a node if
    a job was requeued and started no job steps.
 -- Fixed issue where node index wasn't stored correcting when using DBD.
 -- Enable srun's use of the --nodes option with --exclusive (previously the
    --nodes option was ignored).
 -- Added UsageThreshold and Flags to the QOS object.
 -- Patch to improve threadsafeness in the mysql plugins.
 -- Add support for fair-share scheduling to be based upon resource use at
    the level of bank accounts and ignore use of individual users. Patch by
    Par Andersson, National Supercomputer Centre, Sweden.

* Changes in SLURM 2.2.0.pre12
==============================
 -- Log if Prolog or Epilog run for longer than MessageTimeout / 2.
 -- Log the RPC number associated with messages from slurmctld that timeout.
 -- Fix bug in select/cons_res logic when job allocation includes --overcommit
    and --ntasks-per-node options and the node has fewer CPUs than the count
    specified by --ntasks-per-node.
 -- Fix bug in gang scheduling and job preemption logic so that preempted jobs
    get resumed properly after a slurmctld hot-start.
 -- Fix bug in select/linear handling of gang scheduled jobs that could result
    in run_job_cnt underflow error message.
 -- Fix bug in gang scheduling logic to properly support partitions added
    using the scontrol command.
 -- Fix a segmentation fault in sview where the 'excluded_partitions' field
    was set to NULL, caused by the absence of ~/.slurm/sviewrc.
 -- Rewrote some calls to is_user_any_coord() in src/plugins/accounting_storage
    modules to make use of is_user_any_coord()'s return value.
 -- Add configure option of --with=dimensions=#.
 -- Modify srun ping logic so that srun would only be considered not responsive
    if three ping messages were not responded to. Patch from Hongjia Cao (NUDT).
 -- Preserve a node's ReasonTime field after scontrol reconfig command. Patch
    from Hongjia Cao (NUDT).
 -- Added the authority for users with AdminLevel's defined in the SLURM db
    (Operators and Admins) and account coordinators to invoke commands that
    affect jobs, reservations, nodes, etc.
 -- Fix for slurmd restart on completing node with no tasks to get the correct
    state, completing. Patch from Hongjia Cao (NUDT).
 -- Prevent scontrol setting a node's Reason="". Patch from Hongjia Cao (NUDT).
 -- Add new functions hostlist_ranged_string_malloc,
    hostlist_ranged_string_xmalloc, hostlist_deranged_string_malloc, and
    hostlist_deranged_string_xmalloc which will allocate memory as needed.
 -- Make the slurm commands support both the --cluster and --clusters option.
    Previously, some commands support one of those options, but not the other.
 -- Fix bug when resizing a job that has steps running on some of those nodes.
    Avoid killing the job step on remaining nodes. Patch from Rod Schultz
    (BULL). Also fix bug related to tracking the CPUs allocated to job steps
    on each node after releasing some nodes from the job's allocation.
 -- Applied patch from Rod Schultz / Matthieu Hautreux to keep the Node-to-Host
    cache from becoming corrupted when a hostname cannot be resolved.
 -- Export more symbols in libslurm for job and node state information
    translation (numbers to strings). Patch from Hongia Cao, NUDT.
 -- Add logic to retry sending RESPONSE_LAUNCH_TASKS messages from slurmd to
    srun. Patch from Hongia Cao, NUDT.
 -- Modify bit_unfmt_hexmask() and bit_unfmt_binmask() functions to clear the
    bitmap input before setting the bits indicated in the input string.
 -- Add SchedulerParameters option of bf_window to control how far into the
    future that the backfill scheduler will look when considering jobs to start.
    The default value is one day. See "man slurm.conf" for details.
 -- Fix bug that can result in duplicate job termination records in accounting
    for job termination when slurmctld restarts or reconfigures.
 -- Modify plugin and library logic as needed to support use of the function
    slurm_job_step_stat() from user commands.
 -- Fix race condition in which PrologSlurmctld failure could cause slurmctld
    to abort.
 -- Fix bug preventing users in secondary user groups from being granted access
    to partitions configured with AllowGroups.
 -- Added support for a default account and wckey per cluster within accounting.
 -- Modified select/cons_res plugin so that if MaxMemPerCPU is configured and a
    job specifies it's memory requirement, then more CPUs than requested will
    automatically be allocated to a job to honor the MaxMemPerCPU parameter.
 -- Added the derived_ec (exit_code) member to job_info_t.  exit_code captures
    the exit code of the job script (or salloc) while derived_ec contains the
    highest exit code of all the job steps.
 -- Added SLURM_JOB_EXIT_CODE and SLURM_JOB_DERIVED_EC variables to the
    EpilogSlurmctld environment
 -- More work done on the accounting_storage/pgsql plugin, still beta.
    Patch from Hongjia Cao (NUDT).
 -- Major updates to sview from Dan Rusak (Bull), including:
    - Persistent option selections for each tab page
    - Clean up topology in grids
    - Leverage AllowGroups and Hidden options
    - Cascade full-info popups for ease of selection
 -- Add locks around the MySQL calls for proper operation if the non-thread
    safe version of the MySQL library is used.
 -- Remove libslurm.a, libpmi.a and libslurmdb.a from SLURM RPM. These static
    libraries are not generally usable.
 -- Fixed bug in sacctmgr when zeroing raw usage reported by Gerrit Renker.

* Changes in SLURM 2.2.0.pre11
==============================
 -- Permit a regular user to change the partition of a pending job.
 -- Major re-write of the job_submit/lua plugin to pass pointers to available
    partitions and use lua metatables to reference the job and partition fields.
 -- Add support for serveral new trigger types: SlurmDBD failure/restart,
    Database failure/restart, Slurmctld failure/restart.
 -- Add support for SLURM_CLUSTERS environment variable in the sbatch, sinfo,
    squeue commands.
 -- Modify the sinfo and squeue commands to report state of multiple clusters
    if the --clusters option is used.
 -- Added printf __attribute__ qualifiers to info, debug, ... to help prevent
    bad/incorrect parameters being sent to them.  Original patch from
    Eygene Ryabinkin (Russian Research Centre).
 -- Fix bug in slurmctld job completion logic when nodes allocated to a
    completing job are re-booted. Patch from Hongjia Cao (NUDT).
 -- In slurmctld's node record data structure, rename "hilbert_integer" to
    "node_rank".
 -- Add topology/node_rank plugin to sort nodes based upon rank loaded from
    BASIL on Cray computers.
 -- Fix memory leak in the auth/munge and crypto/munge plugins in the case of
    some failure modes.

* Changes in SLURM 2.2.0.pre10
==============================
 -- Fix issue when EnforcePartLimits=yes in slurm.conf all jobs where no nodecnt
    was specified the job would be seen to have maxnodes=0 which would not
    allow jobs to run.
 -- Fix issue where if not suspending a job the gang scheduler does the correct
    kill procedure.
 -- Fixed some issues when dealing with jobs from a 2.1 system so they live
    after an upgrade.
 -- In srun, log if --cpu_bind options are specified, but not supported by the
    current system configuration.
 -- Various Patchs from Hongjia Cao dealing with bugs found in sacctmgr and
    the slurmdbd.
 -- Fix bug in changing the nodes allocated to a running job and some node
    names specified are invalid, avoid invalid memory reference.
 -- Fixed filename substitution of %h and %n based on patch from Ralph Bean
 -- Added better job sorting logic when preempting jobs with qos.
 -- Log the IP address and port number for some communication errors.
 -- Fix bug in select/cons_res when --cpus_per_task option is used, could
    oversubscribe resources.
 -- In srun, do not implicitly set the job's maximum node count based upon a
    required hostlist.
 -- Avoid running the HealthCheckProgram on non-responding nodes rather than
    DOWN nodes.
 -- Fix bug in handling of poll() functions on OS X (SLURM was ignoring POLLIN
    if POLLHUP flag was set at the same time).
 -- Pulled Cray logic out of common/node_select.c into it's own
    select/cray plugin cons_res is the default.  To use linear add 'Linear' to
    SelectTypeParameters.
 -- Fixed bug where resizing jobs didn't correctly set used limits correctly.
 -- Change sched/backfill default time interval to 30 seconds and defer attempt
    to backfill schedule if slurmctld has more than 5 active RPCs. General
    improvements in logic scalability.
 -- Add SchedulerParameters option of default_sched_depth=# to control how
    many jobs on queue should be tested for attempted scheduling when a job
    completes or other routine events. Default value is 100 jobs. The full job
    queue is tested on a less frequent basis. This option can dramatically
    improve performance on systems with thousands of queued jobs.
 -- Gres/gpu now sets the CUDA_VISIBLE_DEVICES environment to control which
    GPU devices should be used for each job or job step and CUDA version 3.1+
    is used. NOTE: SLURM's generic resource support is still under development.
 -- Modify select/cons_res to pack jobs onto allocated nodes differently and
    minimize system fragmentation. For example on nodes with 8 CPUs each, a
    job needing 10 CPUs will now ideally be allocated 8 CPUs on one node and
    2 CPUs on another node. Previously the job would have ideally been
    allocated 5 CPUs on each node, fragmenting the unused resources more.
 -- Modified the behavior of update_job() in job_mgr.c to return when the first
    error is encountered instead of continuing with more job updates.
 -- Removed all references to the following slurm.conf parameters, all of which
    have been removed or replaced since version 2.0 or earlier: HashBase,
    HeartbeatInterval, JobAcctFrequency, JobAcctLogFile (instead use
    AccountingStorageLoc), JobAcctType, KillTree, MaxMemPerTask, and
    MpichGmDirectSupport.
 -- Fix bug in slurmctld restart logic that improperly reported jobs had
    invalid features: "Job 65537 has invalid feature list: fat".
 -- BLUEGENE - Removed thread pool for destroying blocks.  It turns out the
    memory leak we were concerned about for creating and destroying threads
    in a plugin doesn't exist anymore.  This increases throughput dramatically,
    allowing multiple jobs to start at the same time.
 -- BLUEGENE - Removed thread pool for starting and stopping jobs.  For similar
    reasons as noted above.
 -- BLUEGENE - Handle blocks that never deallocate.

* Changes in SLURM 2.2.0.pre9
=============================
 -- sbatch can now submit jobs to multiple clusters and run on the earliest
    available.
 -- Fix bug introduced in pre8 that prevented job dependencies and job
    triggers from working without the --enable-debug configure option.
 -- Replaced slurm_addr with slurm_addr_t
 -- Replaced slurm_fd with slurm_fd_t
 -- Skeleton code added for BlueGeneQ.
 -- Jobs can now be submitted to multiple partitions (job queues) and use the
    one permitting earliest start time.
 -- Change slurmdb_coord_table back to acct_coord_table to keep consistant
    with < 2.1.
 -- Introduced locking system similar to that in the slurmctld for the
    assoc_mgr.
 -- Added ability to change a users name in accounting.
 -- Restore squeue support for "%G" format (group id) accidentally removed in
    2.2.0.pre7.
 -- Added preempt_mode option to QOS.
 -- Added a grouping=individual for sreport size reports.
 -- Added remove_qos logic to jobs running under a QOS that was removed.
 -- scancel now exits with a 1 if any job is non-existant when canceling.
 -- Better handling of select plugins that don't exist on various systems for
    cross cluster communication.  Slurmctld, slurmd, and slurmstepd now only
    load the default select plugin as well.
 -- Better error handling when loading plugins.
 -- Prevent scontrol from aborting if getlogin() returns NULL.
 -- Prevent scontrol segfault when there are hidden nodes.
 -- Prevent srun segfault after task launch failure.
 -- Added job_submit/lua plugin.
 -- Fixed sinfo on a bluegene system to print correctly the output for:
    sinfo -e -o "%9P %6m %.4c %.22F %f"
 -- Add scontrol commands "hold" and "release" to simplify setting a job's
    priority to 0 or 1. Also tests that the job is in pending state.
 -- Increase maximum node list size (for incoming RPC) from 1024 bytes to 64k.
 -- In the backup slurmctld, purge triggers before recovering trigger state to
    avoid duplicate entries.
 -- Fix bug in sacct processing of --fields= option.
 -- Fix bug in checkpoint/blcr for jobs spanning multiple nodes introduced when
    changing some variable names in version 2.2.0.pre5.
 -- Removed the vestigal set_max_cluster_usage() function from the Priority
    Plugin API.
 -- Modify the output of "scontrol show job" for the field ReqS:C:T=. Fields
    not specified by the user will be reported as "*" instead of 65534.
 -- Added DefaultQOS option for an association.
 -- BLUEGENE - Added -B option to the slurmctld to clear created blocks from
    the system on start.
 -- BLUEGENE - Added option to scontrol & sview to recreate existing blocks.
 -- Fixed flags for returning messages to use the correct munge key when going
    cross-cluster.
 -- BLUEGENE - Added option to scontrol & sview to resume blocks in an error
    state instead of just freeing them.
 -- sview patched to allow multiple row selection of jobs, patch from Dan Rusak
 -- Lower default slurmctld server thread count from 1024 to 256. Some systems
    process threads on a last-in first-out basis and the high thread count was
    causing unexpectedly high delays for some RPCs.
 -- Added to sacctmgr the ability for admins to reset the raw usage of a user
    or account
 -- Improved the efficiency of a few lines in sacctmgr

* Changes in SLURM 2.2.0.pre8
=============================
 -- Add DebugFlags parameter of "Backfill" for sched/backfill detailed logging.
 -- Add DebugFlags parameter of "Gang" for detailed logging of gang scheduling
    activities.
 -- Add DebugFlags parameter of "Priority" for detailed logging of priority
    multifactor activities.
 -- Add DebugFlags parameter of "Reservation" for detailed logging of advanced
    reservations.
 -- Add run time to mail message upon job termination and queue time for mail
    message upon job begin.
 -- Add email notification option for job requeue.
 -- Generate a fatal error if the srun --relative option is used when not
    within an existing job allocation.
 -- Modify the meaning of InactiveLimit slightly. It will now cancel the job
    allocation created using the salloc or srun command if those commands
    cease responding for the InactiveLimit regardless of any running job steps.
    This parameter will no longer effect jobs spawned using sbatch.
 -- Remove AccountingStoragePass and JobCompPass from configuration RPC and
    scontrol show config command output. The use of SlurmDBD is still strongly
    recommended as SLURM will have limited database functionality or protection
    otherwise.
 -- Add sbatch options of --export and SBATCH_EXPORT to control which
    environment variables (if any) get propagated to the spawned job. This is
    particularly important for jobs that are submitted on one cluster and run
    on a different cluster.
 -- Fix bug in select/linear when used with gang scheduling and there are
    preempted jobs at the time slurmctld restarts that can result in over-
    subscribing resources.
 -- Added keeping track of the qos a job is running with in accounting.
 -- Fix for handling correctly jobs that resize, and also reporting correct
    stats on a job after it finishes.
 -- Modify gang scheduler so with SelectTypeParameter=CR_CPUS and task
    affinity is enabled, keep track of the individual CPUs allocated to jobs
    rather than just the count of CPUs allocated (which could overcommit
    specific CPUs for running jobs).
 -- Modify select/linear plugin data structures to eliminate underflow errors
    for the exclusive_cnt and tot_job_cnt variables (previously happened when
    slurmctld reconfigured while the job was in completing state).
 -- Change slurmd's working directory (and location of core files) to match
    that of the slurmctld daemon: the same directory used for log files,
    SlurmdLogFile (if specified with an absolute pathname) otherwise the
    directory used to save state, SlurmdSpoolDir.
 -- Add sattach support for the --pty option.
 -- Modify slurmctld communications logic to accept incoming messages on more
    than one port for improved scalability.
 -- Add SchedulerParameters option of "defer" to avoid trying to schedule a
    job at submission time, but to attempt scheduling many jobs at once for
    improved performance under heavy load.
 -- Correct logic controlling slurmctld thread limit eliminating check of
    RLIMIT_STACK.
 -- Make slurmctld's trigger logic more robust in the event that job records
    get purged before their trigger can be processed (e.g. MinJobAge=1).
 -- Add support for users to hold/release their own jobs (submit the job with
    srun/sbatch --hold/-H option or use "scontrol update jobid=# priority=0"
    to hold and "scontrol update jobid=# priority=1" to release).
 -- Added ability for sacct to query jobs by qos and a range of timelimits.
 -- Added ability for sstat to query pids of steps running.
 -- Support time specification in UTS format with a prefix of "uts" (e.g.
    "sbatch --begin=uts458389988 my.script").

* Changes in SLURM 2.2.0.pre7
=============================
 -- Fixed issue with sacctmgr if querying against non-existent cluster it
    works the same way as 2.1.
 -- Added infrastructure to support allocation of generic node resources (gres).
    -Modified select/linear and select/cons_res plugins to allocate resources
     at the level of a job without oversubcription.
    -Get sched/backfill operating with gres allocations.
    -Get gres configuration changes (reconfiguration) working.
    -Have job steps allocate resources.
    -Modified job step credential to include the job's and step's gres
     allocation details.
    -Integrate with HWLOC library to identify GPUs and NICs configured on each
     node.
 -- SLURM commands (squeue, sinfo, etc...) can now go cross-cluster on like
    linux systems.  Cross-cluster for bluegene to linux and such should
    work fine, even sview.
 -- Added the ability to configure PreemptMode on a per-partition basis.
 -- Change slurmctld's default thread limit count to 1024, but adjust that down
    as needed based upon the process's resource limits.
 -- Removed the non-functional "SystemCPU" and "TotalCPU" reporting fields from
    sstat and updated man page
 -- Correct location of apbasil command on Cray XT systems.
 -- Fixed bug in MinCPU and AveCPU calculations in sstat command
 -- Send message to srun when the Prolog takes too long (MessageTimeout) to
    complete.
 -- Change timeout for socket connect() to be half of configured MessageTimeout.
 -- Added high-throughput computing web page with configuration guidance.
 -- Use more srun sockets to process incoming PMI (MPICH2) connections for
    better scalability.
 -- Added DebugFlags for the select/bluegene plugin: DEBUG_FLAG_BG_PICK,
    DEBUG_FLAG_BG_WIRES, DEBUG_FLAG_BG_ALGO, and DEBUG_FLAG_BG_ALGO_DEEP.
 -- Remove vestigial job record field "kill_on_step_done" (internal to the
    slurmctld daemon only).
 -- For MPICH2 jobs: Clear PMI state between job steps.

* Changes in SLURM 2.2.0.pre6
=============================
 -- sview - added ability to see database configuration.
 -- sview - added ability to add/remove visible tabs.
 -- sview - change way grid highlighting takes place on selected objects.
 -- Added infrastructure to support allocation of generic node resources.
    -Added node configuration parameter of Gres=.
    -Added ability to view/modify a node's gres using scontrol, sinfo and sview.
    -Added salloc, sbatch and srun --gres option.
    -Added ability to view a job or job step's gres using scontrol, squeue and
     sview.
    -Added new configuration parameter GresPlugins to define plugins used to
     manage generic resources.
    -Added framework for gres plugins.
    -Added DebugFlags option of "gres" for detailed debugging of gres actions.
 -- Slurmd modified to log slow slurmstepd startup and note possible file system
    problem.
 -- sview - There is now a .slurm/sviewrc created when running sview.
    Defaults are put in there as to how sview looks when first launched.
    You can set these by Ctrl-S or Options->Set Default Settings.
 -- Add scontrol "wait_job <job_id>" option to wait for nodes to boot as needed.
    Useful for batch jobs (in Prolog, PrologSlurmctld or the script) if powering
    down idle nodes.
 -- Added salloc and sbatch option --wait-all-nodes. If set non-zero, job
    initiation will be delayed until all allocated nodes have booted. Salloc
    will log the delay with the messages "Waiting for nodes to boot" and "Nodes
    are ready for job".
 -- The Priority/mulitfactor plugin now takes into consideration size of job
    in cpus as well as size in nodes when looking at the job size factor.
    Previously only nodes were considered.
 -- When using the SlurmDBD messages waiting to be sent will be combined
    and sent in one message.
 -- Remove srun's --core option. Move the logic to an optional SPANK plugin
    (currently in the contribs directory, but plan to distribute through
    http://code.google.com/p/slurm-spank-plugins/).
 -- Patch for adding CR_CORE_DEFAULT_DIST_BLOCK as a select option to layout
    jobs using block layout across cores within each node instead of cyclic
    which was previously the default.
 -- Accounting - When removing associations if jobs are running, those jobs
    must be killed before proceeding.  Before the jobs were killed
    automatically thus causing user confusion on what is most likely an
    admin's mistake.
 -- sview - color column keeps reference color when highlighting.
 -- Configuration parameter MaxJobCount changed from 16-bit to 32-bit field.
    The default MaxJobCount was changed from 5,000 to 10,000.
 -- SLURM commands (squeue, sinfo, etc...) can now go cross-cluster on like
    linux systems.  Cross-cluster for bluegene to linux and such does not
    currently work.  You can submit jobs with sbatch.  Salloc and srun are not
    cross-cluster compatible, and given their nature to talk to actual compute
    nodes these will likely never be.
 -- salloc modified to forward SIGTERM to the spawned program.
 -- In sched/wiki2 (for Moab support) - Add GRES and WCKEY fields to MODIFYJOBS
    and GETJOBS commands. Add GRES field to GETNODES command.
 -- In struct job_descriptor and struct job_info: rename min_sockets to
    sockets_per_node, min_cores to cores_per_socket, and min_threads to
    threads_per_core (the values are not minimum, but represent the target
    values).
 -- Fixed bug in clearing a partition's DisableRootJobs value reported by
    Hongjia Cao.
 -- Purge (or ignore) terminated jobs in a more timely fashion based upon the
    MinJobAge configuration parameter. Small values for MinJobAge should improve
    responsiveness for high job throughput.

* Changes in SLURM 2.2.0.pre5
=============================
 -- Modify commands to accept time format with one or two digit hour value
    (e.g. 8:00 or 08:00 or 8:00:00 or 08:00:00).
 -- Modify time parsing logic to accept "minute", "hour", "day", and "week" in
    addition to the currently accepted "minutes", "hours", etc.
 -- Add slurmd option of "-C" to print actual hardware configuration and exit.
 -- Pass EnforcePartLimits configuration parameter from slurmctld for user
    commands to see the correct value instead of always "NO".
 -- Modify partition data structures to replace the default_part,
    disable_root_jobs, hidden and root_only fields with a single field called
    "flags" populated with the flags PART_FLAG_DEFAULT, PART_FLAG_NO_ROOT
    PART_FLAG_HIDDEN and/or PART_FLAG_ROOT_ONLY. This is a more flexible
    solution besides making for smaller data structures.
 -- Add node state flag of JOB_RESIZING. This will only exist when a job's
    accounting record is being written immediately before or after it changes
    size. This permits job accounting records to be written for a job at each
    size.
 -- Make calls to jobcomp and accounting_storage plugins before and after a job
    changes size (with the job state being JOB_RESIZING). All plugins write a
    record for the job at each size with intermediate job states being
    JOB_RESIZING.
 -- When changing a job size using scontrol, generate a script that can be
    executed by the user to reset SLURM environment variables.
 -- Modify select/linear and select/cons_res to use resources released by job
    resizing.
 -- Added to contribs foundation for Perl extension for slurmdb library.
 -- Add new configuration parameter JobSubmitPlugins which provides a mechanism
    to set default job parameters or perform other site-configurable actions at
    job submit time.
 -- Better postgres support for accounting, still beta.
 -- Speed up job start when using the slurmdbd.
 -- Forward step failure reason back to slurmd before in some cases it would
    just be SLURM_FAILURE returned.
 -- Changed squeue to fail when passed invalid -o <output_format> or
    -S <sort_list> specifications.

* Changes in SLURM 2.2.0.pre4
=============================
 -- Add support for a PropagatePrioProcess configuration parameter value of 2
    to restrict spawned task nice values to that of the slurmd daemon plus 1.
    This insures that the slurmd daemon always have a higher scheduling
    priority than spawned tasks.
 -- Add support in slurmctld, slurmd and slurmdbd for option of "-n <value>" to
    reset the daemon's nice value.
 -- Fixed slurm_load_slurmd_status and slurm_pid2jobid to work correctly when
    multiple slurmds are in use.
 -- Altered srun to set max_nodes to min_nodes if not set when doing an
    allocation to mimic that which salloc and sbatch do.  If running a step if
    the max isn't set it remains unset.
 -- Applied patch from David Egolf (David.Egolf@Bull.com). Added the ability
    to purge/archive accounting data on a day or hour basis, previously
    it was only available on a monthly basis.
 -- Add support for maximum node count in job step request.
 -- Fix bug in CPU count logic for job step allocation (used count of CPUS per
    node rather than CPUs allocated to the job).
 -- Add new configuration parameters GroupUpdateForce and GroupUpdateTime.
    See "man slurm.conf" for details about how these control when slurmctld
    updates its information of which users are in the groups allowed to use
    partitions.
 -- Added sacctmgr list events which will list events that have happened on
    clusters in accounting.
 -- Permit a running job to shrink in size using a command of
    "scontrol update JobId=# NumNodes=#" or
    "scontrol update JobId=# NodeList=<names>". Subsequent job steps must
    explicitly specify an appropriate node count to work properly.
 -- Added resize_time field to job record noting the time of the latest job
    size change (to be used for accounting purposes).
 -- sview/smap now hides hidden partitions and their jobs by default, with an
    option to display them.

* Changes in SLURM 2.2.0.pre3
=============================
 -- Refine support for TotalView partial attach. Add parameter to configure
    program of "--enable-partial-attach".
 -- In select/cons_res, the count of CPUs on required nodes was formerly
    ignored in enforcing the maximum CPU limit. Also enforce maximum CPU
    limit when the topology/tree plugin is configured (previously ignored).
 -- In select/cons_res, allocate cores for a job using a best-fit approach.
 -- In select/cons_res, for jobs that can run on a single node, use a best-fit
    packing approach.
 -- Add support for new partition states of DRAIN and INACTIVE and new partition
    option of "Alternate" (alternate partition to use for jobs submitted to
    partitions that are currently in a state of DRAIN or INACTIVE).
 -- Add group membership cache. This can substantially speed up slurmctld
    startup or reconfiguration if many partitions have AllowGroups configured.
 -- Added slurmdb api for accessing slurm DB information.
 -- In select/linear: Modify data structures for better performance and to
    avoid underflow error messages when slurmctld restarts while jobs are
    in completing state.
 -- Added hash for slurm.conf so when nodes check in to the controller it can
    verify the slurm.conf is the same as the one it is running.  If not an
    error message is displayed.  To silence this message add NO_CONF_HASH
    to DebugFlags in your slurm.conf.
 -- Added error code ESLURM_CIRCULAR_DEPENDENCY and prevent circular job
    dependencies (e.g. job 12 dependent upon job 11 AND job 11 is dependent
    upon job 12).
 -- Add BootTime and SlurmdStartTime to available node information.
 -- Fixed moab_2_slurmdb to work correctly under new database schema.
 -- Slurmd will drain a compute node when the SlurmdSpoolDir is full.

* Changes in SLURM 2.2.0.pre2
=============================
 -- Add support for spank_get_item() to get S_STEP_ALLOC_CORES and
    S_STEP_ALLOC_MEM. Support will remain for S_JOB_ALLOC_CORES and
    S_JOB_ALLOC_MEM.
 -- Kill individual job steps that exceed their memory limit rather than
    killing an entire job if one step exceeds its memory limit.
 -- Added configuration parameter VSizeFactor to enforce virtual memory limits
    for jobs and job steps as a percentage of their real memory allocation.
 -- Add scontrol ability to update job step's time limits.
 -- Add scontrol ability to update job's NumCPUs count.
 -- Add --time-min options to salloc, sbatch and srun. The scontrol command
    has been modified to display and modify the new field. sched/backfill
    plugin has been changed to alter time limits of jobs with the
    --time-min option if doing so permits earlier job initiation.
 -- Add support for TotalView symbol MPIR_partial_attach_ok with srun support
    to release processes which TotalView does not attach to.
 -- Add new option for SelectTypeParameters of CR_ONE_TASK_PER_CORE. This
    option will allocate one task per core by default. Without this option,
    by default one task will be allocated per thread on nodes with more than
    one ThreadsPerCore configured.
 -- Avoid accounting separately for a current pid corresponds to a Light Weight
    Process (Thread POSIX) appearing in the /proc directory. Only account for
    the original process (pid==tgid) to avoid accounting for memory use more
    than once.
 -- Add proctrack/cgroup plugin which uses Linux control groups (aka cgroup)
    to track processes on Linux systems having this feature enabled (kernel
    >= 2.6.24).
 -- Add logging of license transations including job_id.
 -- Add configuration parameters SlurmSchedLogFile and SlurmSchedLogLevel to
    support writing scheduling events to a separate log file.
 -- Added contribs/web_apps/chart_stats.cgi, a web app that invokes sreport to
    retrieve from the accounting storage db a user's request for job usage or
    machine utilization statistics and charts the results to a browser.
 -- Massive change to the schema in the storage_accounting/mysql plugin.  When
    starting the slurmdbd the process of conversion may take a few minutes.
    You might also see some errors such as 'error: mysql_query failed: 1206
    The total number of locks exceeds the lock table size'.  If you get this,
    do not worry, it is because your setting of innodb_buffer_pool_size in
    your my.cnf file is not set or set too low.  A decent value there should
    be 64M or higher depending on the system you are running on.  See
    RELEASE_NOTES for more information.  But setting this and then
    restarting the mysqld and slurmdbd will put things right.  After this
    change we have noticed 50-75% increase in performance with sreport and
    sacct.
 -- Fix for MaxCPUs to honor partitions of 1 node that have more than the
    maxcpus for a job.
 -- Add support for "scontrol notify <message>" to work for batch jobs.

* Changes in SLURM 2.2.0.pre1
=============================
 -- Added RunTime field to scontrol show job report
 -- Added SLURM_VERSION_NUMBER and removed SLURM_API_VERSION from
    slurm/slurm.h.
 -- Added support to handle communication with SLURM 2.1 clusters.  Job's
    should not be lost in the future when upgrading to higher versions of
    SLURM.
 -- Added withdeleted options for listing clusters, users, and accounts
 -- Remove PLPA task affinity functions due to that package being deprecated.
 -- Preserve current partition state information and node Feature and Weight
    information rather than use contents of slurm.conf file after slurmctld
    restart with -R option or SIGHUP. Replace information with contents of
    slurm.conf after slurmctld restart without -R or "scontrol reconfigure".
    See RELEASE_NOTES file fore more details.
 -- Modify SLURM's PMI library (for MPICH2) to properly execute an executable
    program stand-alone (single MPI task launched without srun).
 -- Made GrpCPUs and MaxCPUs limits work for select/cons_res.
 -- Moved all SQL dependant plugins into a seperate rpm slurm-sql.  This
    should be needed only where a connection to a database is needed (i.e.
    where the slurmdbd is running)
 -- Add command line option "no_sys_info" to PAM module to supress system
    logging of "access granted for user ...", access denied and other errors
    will still be logged.
 -- sinfo -R now has the user and timestamp in separate fields from the reason.
 -- Much functionality has been added to account_storage/pgsql.  The plugin
    is still in a very beta state.  It is still highly advised to use the
    mysql plugin, but if you feel like living on the edge or just really
    like postgres over mysql for some reason here you go. (Work done
    primarily by Hongjia Cao, NUDT.)

* Changes in SLURM 2.1.17
=========================
 -- Correct format of --begin reported in salloc, sbatch and srun --help
    message.
 -- Correct logic for regular users to increase nice value of their own jobs.

* Changes in SLURM 2.1.16
=========================
 -- Fixed minor warnings from gcc-4.5
 -- Fixed initialization of accounting_stroage_enforce in the slurmctld.
 -- Fixed bug where if GrpNodes was lowered while pending jobs existed and where
    above the limit the slurmctld would seg fault.
 -- Fixed minor memory leak when unpack error happens on an
    association_shares_object_t.
 -- Set Lft and Rgt correctly when adding association.  Fix for regression
    caused in 2.1.15, cosmetic fix only.
 -- Replaced optarg which was undefined in some spots to make sure ENV vars are
    set up correctly.
 -- When removing an account from a cluster with sacctmgr you no longer get
    a list of previously deleted associations.
 -- Fix to make jobcomp/(pg/my)sql correctly work when the database name is
    different than the default.

* Changes in SLURM 2.1.15
=========================
 -- Fix bug in which backup slurmctld can purge job scripts (and kill batch
    jobs) when it assumes primary control, particularly when this happens
    multiple times in a short time interval.
 -- In sched/wiki and sched/wiki2 add IWD (Initial Working Directory) to the
    information reported about jobs.
 -- Fix bug in calculating a daily or weekly reservation start time when the
    reservation is updated. Patch from Per Lundqvist (National Supercomputer
    Centre, Linköping University, Sweden).
 -- Fix bug in how job step memory limits are calculated when the --relative
    option is used.
 -- Restore operation of srun -X option to forward SIGINT to spawned tasks
    without killing them.
 -- Fixed a bug in calculating the root account's raw usage reported by Par
    Andersson
 -- Fixed a bug in sshare displaying account hierarchy reported by Per
    Lundqvist.
 -- In select/linear plugin, when a node allocated to a running job is removed
    from a partition, only log the event once. Fixes problem reported by Per
    Lundqvist.

* Changes in SLURM 2.1.14
=========================
 -- Fixed coding mistakes in _slurm_rpc_resv_show() and job_alloc_info() found
    while reviewing the code.
 -- Fix select/cons_res logic to prevent allocating resources while jobs
    previously allocated resources on the node are still completing.
 -- Fixed typo in job_mgr.c dealing with qos instead of associations.
 -- Make sure associations and qos' are initiated when added.
 -- Fixed wrong initialization for wckeys in the association manager.
 -- Added wiki.conf configuration parameter of HidePartitionNodes. See
    "man wiki.conf" for more information.
 -- Add "JobAggregationTime=#" field SchedulerParameter configuration parameter
    output.
 -- Modify init.d/slurm and slurmdbd scripts to prevent the possible
    inadvertent inclusion of "." in LD_LIBRARY_PATH environment variable.
    To fail, the script would need to be executed by user root or SlurmUser
    without the LD_LIBRARY_PATH environment variable set and there would
    have to be a maliciously altered library in the working directory.
    Thanks to Raphael Geissert for identifying the problem. This addresses
    security vulnerability CVE-2010-3380.

* Changes in SLURM 2.1.13
=========================
 -- Fix race condition which can set a node state to IDLE on slurmctld startup
    even if it has running jobs.

* Changes in SLURM 2.1.12
=========================
 -- Fixes for building on OS X 10.5.
 -- Fixed a few '-' without a '\' in front of them in the man pages.
 -- Fixed issues in client tools where a requeued job did get displayed
    correctly.
 -- Update typos in doc/html/accounting.shtml doc/html/resource_limits.shtml
    doc/man/man5/slurmdbd.conf.5 and doc/man/man5/slurm.conf.5
 -- Fixed a bug in exitcode:signal display in sacct
 -- Fix bug when request comes in for consumable resources and the -c option
    is used in conjunction with -O
 -- Fixed squeue -o "%h" output formatting
 -- Change select/linear message "error: job xxx: best_fit topology failure"
    to debug type.
 -- BLUEGENE - Fix for sinfo -R to group all midplanes together in a single
    line for midplanes in an error state instead of 1 line for each midplane.
 -- Fix srun to work correctly with --uid when getting an allocation
    and creating a step, also fix salloc to assume identity at the correct
    time as well.
 -- BLUEGENE - Fixed issue with jobs being refused when running dynamic mode
    and every job on the system happens to be the same size.
 -- Removed bad #define _SLURMD_H from slurmd/get_mach_stat.h.  Didn't appear
    to cause any problems being there, just incorrect syntax.
 -- Validate the job ID when salloc or srun receive an SRUN_JOB_COMPLETE RPC to
    avoid killing the wrong job if the original command exits and the port gets
    re-used by another command right away.
 -- Fix to node in correct state in accounting when updating it to drain from
    scontrol/sview.
 -- BLUEGENE - Removed incorrect unlocking on error cases when starting jobs.
 -- Improve logging of invalid sinfo and squeue print options.
 -- BLUEGENE - Added check to libsched_if to allow root to run even outside of
    SLURM.  This is needed when running certain blocks outside of SLURM in HTC
    mode.

* Changes in SLURM 2.1.11-2
===========================
 -- BLUEGENE - make it so libsched_if.so is named correctly on 'L' it is
    libsched_if64.so and on 'P' it is libsched_if.so

* Changes in SLURM 2.1.11
=========================
 -- BLUEGENE - fix sinfo to not get duplicate entries when running command
    sinfo -e -o "%9P %6m %.4c %.22F %f"
 -- Fix bug that caused segv when deleting a partition with pending jobs.
 -- Better error message for when trying to modify an account's name with
    sacctmgr.
 -- Added back removal of #include "src/common/slurm_xlator.h" from
    select/cons_res.
 -- Fix incorrect logic in global_accounting in regression tests for
    setting QOS.
 -- BLUEGENE - Fixed issue where removing a small block in dynamic mode,
    and other blocks also in that midplane needed to be removed and were in
    and error state.  They all weren't removed correctly in accounting.
 -- Prevent scontrol segv with "scontrol show node <name>" command with nodes
    in a hidden partition.
 -- Fixed sizing of popup grids in sview.
 -- Fixed sacct when querying against a jobid the start time is not set.
 -- Fix configure to get correct version of pkg-config if both 32bit and 64bit
    libs are installed.
 -- Fix issue with sshare not sorting correctly the tree of associations.
 -- Update documentation for sreport.
 -- BLUEGENE - fix regression in 2.1.10 on assigning multiple jobs to one block.
 -- Minor memory leak fixed when killing job error happens.
 -- Fix sacctmgr list assoc when talking to a 2.2 slurmdbd.

* Changes in SLURM 2.1.10
=========================
 -- Fix memory leak in sched/builtin plugin.
 -- Fixed sbatch to work correctly when no nodes are specified, but
    --ntasks-per-node is.
 -- Make sure account and wckey for a job are lower case before inserting into
    accounting.
 -- Added note to squeue documentation about --jobs option displaying jobs
    even if they are on hidden partitions.
 -- Fix srun to work correctly with --uid when getting an allocation
    and creating a step.
 -- Fix for when removing a limit from a users association inside the
    fairshare tree the parents limit is now inherited automatically in
    the slurmctld.  Previously the slurmctld would have to be restarted.
    This problem only exists when setting a users association limit to -1.
 -- Patch from Matthieu Hautreux (CEA) dealing with possible overflows that
    could come up with the select/cons_res plugin with uint32_t's being treated
    as uint16_t's.
 -- Correct logic for creating a reservation with a Duration=Infinite (used to
    set reservation end time in the past).
 -- Correct logic for creating a reservation that properly handles the OVERLAP
    and IGNORE_JOBS flags (flags were ignored under some conditions).
 -- Fixed a fair-share calculation bug in the priority/multifactor plugin.
 -- Make sure a user entry in the database that was previously deleted is
    restored clean when added back, i.e. remove admin privileges previously
    given.
 -- BLUEGENE - Future start time is set correctly when eligible time for a job
    is in the future, but the job can physically run earlier.
 -- Updated Documentation for sacctmgr for Wall and CPUMin options stating when
    the limit is reached running jobs will be killed.
 -- Fix deadlock issue in the slurmctld when lowering limits in accounting to
    lower than that of pending jobs.
 -- Fix bug in salloc, sbatch and srun that could under some conditions process
    the --threads-per-core, --cores-per-socket and --sockets-per-node options
    improperly.
 -- Fix bug in select/cons_res with memory management plus job preemption with
    job removal (e.g. requeue) which under some conditions failed to preempt
    jobs.
 -- Fix deadlock potential when using qos and associations in the slurmctld.
 -- Update documentation to state --ntasks-per-* is for a maximum value
    instead of an absolute.
 -- Get ReturnToService=2 working for front-end configurations (e.g. Cray or
    BlueGene).
 -- Do not make a non-responding node available for use after running
    "scontrol update nodename=<name> state=resume". Wait for node to respond
    before use.
 -- Added slurm_xlator.h to jobacct_gather plugins so they resolve symbols
    correctly when linking to the slurm api.
 -- You can now update a jobs QOS from scontrol.  Previously you could only do
    this from sview.
 -- BLUEGENE - Fixed bug where if running in non-dynamic mode sometimes the
    start time returned for a job when using test-only would not be correct.

* Changes in SLURM 2.1.9
========================
 -- In select/linear - Fix logic to prevent over-subscribing memory with shared
    nodes (Shared=YES or Shared=FORCE).
 -- Fix for handling -N and --ntasks-per-node without specifying -n with
    salloc and sbatch.
 -- Fix jobacct_gather/linux if not polling on tasks to give tasks time to
    start before doing initial gather.
 -- When changing priority with the multifactor plugin we make sure we update
    the last_job_update variable.
 -- Fixed sview for gtk < 2.10 to display correct debug level at first.
 -- Fixed sview to not select too fast when using a mouse right click.
 -- Fixed sacct to display correct timelimits for jobs from accounting.
 -- Fixed sacct when running as root by default query all users as documented.
 -- In proctrack/linuxproc, skip over files in /proc that are not really user
    processes (e.g. "/proc/bus").
 -- Fix documentation bug for slurmdbd.conf
 -- Fix slurmctld to update qos preempt list without restart.
 -- Fix bug in select/cons_res that in some cases would prevent a preempting job
    from using of resources already allocated to a preemptable running job.
 -- Fix for sreport in interactive mode to honor parsable/2 options.
 -- Fixed minor bugs in sacct and sstat commands
 -- BLUEGENE - Fixed issue if the slurmd becomes unresponsive and you have
    blocks in an error state accounting is correct when the slurmd comes
    back up.
 -- Corrected documentation for -n option in srun/salloc/sbatch
 -- BLUEGENE - when running a willrun test along with preemption the bluegene
    plugin now does the correct thing.
 -- Fix possible memory corruption issue which can cause slurmctld to abort.
 -- BLUEGENE - fixed small memory leak when setting up env.
 -- Fixed deadlock if using accounting and cluster changes size in the
    database.  This can happen if you mistakenly have multiple primary
    slurmctld's running for a single cluster, which should rarely if ever
    happen.
 -- Fixed sacct -c option.
 -- Critical bug fix in sched/backfill plugin that caused memory corruption.

* Changes in SLURM 2.1.8
========================
 -- Update BUILD_NOTES for AIX and bgp systems on how to get sview to
    build correctly.
 -- Update man page for scontrol when nodes are in the "MIXED" state.
 -- Better error messages for sacctmgr.
 -- Fix bug in allocation of CPUs with select/cons_res and --cpus-per-task
    option.
 -- Fix bug in dependency support for afterok and afternotok options to insure
    that the job's exit status gets checked for dependent jobs prior to puring
    completed job records.
 -- Fix bug in sched/backfill that could set an incorrect expected start time
    for a job.
 -- BLUEGENE - Fix for systems that have midplanes defined in the database
    that don't exist.
 -- Accounting, fixed bug where if removing an object a rollback wasn't
    possible.
 -- Fix possible scontrol stack corruption when listing jobs with very a long
    job or working directory name (over 511 characters).
 -- Insure that SPANK environment variables set by salloc or sbatch get
    propagated to the Prolog on all nodes by setting SLURM_SPANK_* environment
    variables for srun's use.
 -- In sched/wiki2 - Add support for the MODIFYJOB command to alter a job's
    comment field
 -- When a cluster first registers with the SlurmDBD only send nodes in an
    non-usable state.  Before all nodes were sent.
 -- Alter sacct to be able to query jobs by association id.
 -- Edit documentation for scontrol stating ExitCode as something not alterable.
 -- Update documentation about ReturnToService and silently rebooting nodes.
 -- When combining --ntasks-per-node and --exclusive in an allocation request
    the correct thing, giving the allocation the entire node but only
    ntasks-per-node, happens.
 -- Fix accounting transaction logs when deleting associations to put the
    ids instead of the lfts which could change over time.
 -- Fix support for salloc, sbatch and srun's --hint option to avoid allocating
    a job more sockets per node or more cores per socket than desired. Also
    when --hint=compute_bound or --hint=memory_bound then avoid allocating more
    than one task per hyperthread (a change in behavior, but almost certainly
    a preferable mode of operation).

* Changes in SLURM 2.1.7
========================
 -- Modify srun, salloc and sbatch parsing for the --signal option to accept
    either a signal name in addition to the previously supported signal
    numbers (e.g. "--signal=USR2@200").
 -- BLUEGENE - Fixed sinfo --long --Node output for cpus on a single cnode.
 -- In sched/wiki2 - Fix another logic bug in support of Moab being able to
    identify preemptable jobs.
 -- In sched/wiki2 - For BlueGene systems only: Fix bug preventing Moab from
    being able to correctly change the node count of pending jobs.
 -- In select/cons_res - Fix bug preventing job preemption with a configuration
    of Shared=FORCE:1 and PreemptMode=GANG,SUSPEND.
 -- In the TaskProlog, add support for an "unset" option to clear environment
    variables for the user application. Also add support for embedded white-
    space in the environment variables exported to the user application
    (everything after the equal sign to the end of the line is included without
    alteration).
 -- Do not install /etc/init.d/slurm or /etc/init.d/slurmdbd on AIX systems.
 -- BLUEGENE - fixed check for small blocks if a node card of a midplane is
    in an error state other jobs can still run on the midplane on other
    nodecards.
 -- BLUEGENE - Check to make sure job killing is in the active job table in
    DB2 when killing the job.
 -- Correct logic to support ResvOverRun configuration parameter.
 -- Get --acctg-freq option working for srun and salloc commands.
 -- Fix sinfo display of drained nodes correctly with the summarize flag.
 -- Fix minor memory leaks in slurmd and slurmstepd.
 -- Better error messages for failed step launch.
 -- Modify srun to insure compatability of the --relative option with the node
    count requested.

* Changes in SLURM 2.1.6-2
==========================
 -- In sched/wiki2 - Fix logic in support of Moab being able to identify
    preemptable jobs.
 -- Applied fixes to a debug4 message in priority_multifactor.c sent in by
    Per Lundqvist
 -- BLUEGENE - Fixed issue where incorrect nodecards could be picked when
    looking at combining small blocks to make a larger small block.

* Changes in SLURM 2.1.6
========================
 -- For newly submitted jobs, report expected start time in squeue --start as
    "N/A" rather than current time.
 -- Correct sched/backfill logic so that it runs in a more timely fashion.
 -- Fixed issue if running on accounting cache and priority/multifactor to
    initialize the root association when the database comes back up.
 -- Emulated BLUEGENE - fixed issue where blocks weren't always created
    correctly when loading from state.  This does not apply to a real
    bluegene system, only emulated.
 -- Fixed bug when job is completing and its cpu_cnt would be calculated
    incorrectly, possibly resulting in an underflow being logged.
 -- Fixed bug where if there are pending jobs in a partition which was
    updated to have no nodes in it the slurmctld would dump core.
 -- Fixed smap and sview to display partitions with no nodes in them.
 -- Improve configure script's logic to detect LUA libraries.
 -- Fix bug that could cause slurmctld to abort if select/cons_res is used AND a
    job is submitted using the --no-kill option AND one of the job's nodes goes
    DOWN AND slurmctld restarts while that job is still running.
 -- In jobcomp plugins, job time limit was sometimes recorded improperly if not
    set by user (recorded huge number rather than partition's time limit).

* Changes in SLURM 2.1.5
========================
 -- BLUEGENE - Fixed display of draining nodes for sinfo -R.
 -- Fixes to scontrol and sview when setting a job to an impossible start time.
 -- Added -h to srun for help.
 -- Fix for sacctmgr man page to remove erroneous 'with' statements.
 -- Fix for unpacking jobs with accounting statistics, previously it appears
    only steps were unpacked correctly, for the most case sacct would only
    display this information making this fix a very minor one.
 -- Changed scontrol and sview output for jobs with unknown end times from
    'NONE' to 'Unknown'.
 -- Fixed mysql plugin to reset classification when adding a
    previously deleted cluster.
 -- Permit a batch script to reset umask and have that propagate to tasks
    spawed by subsequent srun. Previously the umask in effect when sbatch was
    executed was propagated to tasks spawed by srun.
 -- Modify slurm_job_cpus_allocated_on_node_id() and
    slurm_job_cpus_allocated_on_node() functions to not write explanation of
    failures to stderr. Only return -1 and set errno.
 -- Correction in configurator.html script. Prolog and Epilog were reversed.
 -- BLUEGENE - Fixed race condition where if a nodecard has an error on an
    un-booted block when a job comes to use it before the state checking
    thread notices it which could cause the slurmctld to lock up on a
    non-dynamic system.
 -- In select/cons_res with FastSchedule=0 and Procs=# defined for the node,
    but no specific socket/core/thread count configured, avoid fatal error if
    the number of cores on a node is less than the number of Procs configured.
 -- Added ability for the perlapi to utilize opaque data types returned from
    the C api.
 -- BLUEGENE - made the perlapi get correct values for cpus per node,
    Previously it would give the number of cpus per cnode instead of midplane.
 -- BLEUGENE - Fixed issue where if a block being selected for a job to use
    and during the process a hardware failure happens, previously the block
    would still be allowed to be used which would fail or requeue the job
    depending on the configuration.
 -- For SPANK job environment, avoid duplicate "SPANK_" prefix for environment
    set by sbatch jobs.
 -- Make squeue select jobs on hidden partitions when requesting more than one.
 -- Avoid automatically cancelling job steps when all of the tasks on some node
    have gracefully terminated.

* Changes in SLURM 2.1.4
========================
 -- Fix for purge script in accounting to use correct options.
 -- If SelectType=select/linear and SelectTypeParameters=CR_Memory fix bug that
    would fail to release memory reserved for a job if "scontrol reconfigure"
    is executed while the job is in completing state.
 -- Fix bug in handling event trigger for job time limit while job is still
    in pending state.
 -- Fixed display of Ave/MaxCPU in sacct for jobs. Steps were printed
    correctly.
 -- When node current features differs from slurm.conf, log the node names
    using a hostlist expression rather than listing individual node names.
 -- Improve ability of srun to abort job step for some task launch failures.
 -- Fix mvapich plugin logic to release the created job allocation on
    initialization failure (previously the failures would cancel job step,
    but retain job allocation).
 -- Fix bug in srun for task count so large that it overflows int data type.
 -- Fix important bug in select/cons_res handling of ntasks-per-core parameter
    that was uncovered by a bug fixed in v2.1.3. Bug produced fatal error for
    slurmctld: "cons_res: cpus computation error".
 -- Fix bug in select/cons_res handling of partitions configured with
    Shared=YES. Prior logic failed to support running multiple jobs per node.

* Changes in SLURM 2.1.3-2
==========================
 -- Modified spec file to obsolete pam_slurm when installing
    the slurm-pam_slurm rpm.

* Changes in SLURM 2.1.3-1
==========================
 -- BLUEGENE - Fix issues on static/overlap systems where if a midplane
    was drained you would not be able to create new blocks on it.
 -- In sched/wiki2 (for Moab): Add excluded host list to job information
    using new keyword "EXCLUDE_HOSTLIST".
 -- Correct slurmd reporting of incorrect socket/core/thread counts.
 -- For sched/wiki2 (Moab): Do not extend a job's end time for suspend/resume
    or startup delay due to node boot time. A job's end time will always be
    its start time plus time limit.
 -- Added build-time option (to configure program) of --with-pam_dir to
    specify the directory into which PAM modules get installed, although it
    should pick the proper directory by default. "make install" and "rpmbuild"
    should now put the pam_slurm.so file in the proper directory.
 -- Modify PAM module to link against SLURM API shared library and use exported
    slurm_hostlist functions.
 -- Do not block new jobs with --immediate option while another job is in the
    process of being requeued (which can take a long time for some node failure
    modes).
 -- For topology/tree, log invalid hostnames in a single hostlist expression
    rather than one per line.
 -- A job step's default time limit will be UNLIMITED rather than partition's
    default time limit. The step will automatically be cancelled as part of the
    job termination logic when the job's time limit is reached.
 -- sacct - fixed bug when checking jobs against a reservation
 -- In select/cons_res, fix support for job allocation with --ntasks_per_node
    option. Previously could allocate too few CPUs on some nodes.
 -- Adjustment made to init message to the slurmdbd to allow backwards
    compatibility with future 2.2 release. YOU NEED TO UPGRADE SLURMDBD
    BEFORE ANYTHING ELSE.
 -- Fix accounting when comment of down/drained node has double quotes in it.

* Changes in SLURM 2.1.2
========================
 -- Added nodelist to sview for jobs on non-bluegene systems
 -- Correction in value of batch job environment variable SLURM_TASKS_PER_NODE
    under some conditions.
 -- When a node silently fails which is already drained/down the reason
    for draining for the node is not changed.
 -- Srun will ignore SLURM_NNODES environment variable and use the count of
    currently allocated nodes if that count changes during the job's lifetime
    (e.g. job allocation uses the --no-kill option and a node goes DOWN, job
    step would previously always fail).
 -- Made it so sacctmgr can't add blank user or account.  The MySQL plugin
    will also reject such requests.
 -- Revert libpmi.so version for compatibility with SLURM version 2.0 and
    earlier to avoid forcing applications using a specific libpmi.so version to
    rebuild unnecessarily (revert from libpmi.so.21.0.0 to libpmi.so.0.0.0).
 -- Restore support for a pending job's constraints (required node features)
    when slurmctld is restarted (internal structure needed to be rebuilt).
 -- Removed checkpoint_blcr.so from the plugin rpm in the slurm.spec since
    it is also in the blcr rpm.
 -- Fixed issue in sview where you were unable to edit the count
    of jobs to share resources.
 -- BLUEGENE - Fixed issue where tasks on steps weren't being displayed
    correctly with scontrol and sview.
 -- BLUEGENE - fixed wiki2 plugin to report correct task count for pending
    jobs.
 -- BLUEGENE - Added /etc/ld.so.conf.d/slurm.conf to point to the
    directory holding libsched_if64.so when building rpms.
 -- Adjust get_wckeys call in slurmdbd to allow operators to list wckeys.

* Changes in SLURM 2.1.1
========================
 -- Fix for case sensitive databases when a slurmctld has a mixed case
    clustername to lower case the string to easy compares.
 -- Fix squeue if job is completing and failed to print remaining
    nodes instead of failed message.
 -- Fix sview core when searching for partitions by state.
 -- Fixed setting the start time when querying in sacct to the
    beginning of the day if not set previously.
 -- Defined slurm_free_reservation_info_msg and slurm_free_topo_info_msg
    in common/slurm_protocol_defs.h
 -- Avoid generating error when a job step includes a memory specification and
    memory is not configured as a consumable resource.
 -- Patch for small memory leak in src/common/plugstack.c
 -- Fix sview search on node state.
 -- Fix bug in which improperly formed job dependency specification can cause
    slurmctld to abort.
 -- Fixed issue where slurmctld wouldn't always get a message to send cluster
    information when registering for the first time with the slurmdbd.
 -- Add slurm_*_trigger.3 man pages for event trigger APIs.
 -- Fix bug in job preemption logic that would free allocated memory twice.
 -- Fix spelling issues (from Gennaro Oliva)
 -- Fix issue when changing parents of an account in accounting all children
    weren't always sent to their respected slurmctlds until a restart.
 -- Restore support for srun/salloc/sbatch option --hint=nomultithread to
    bind tasks to cores rather than threads (broken in slurm v2.1.0-pre5).
 -- Fix issue where a 2.0 sacct could not talk correctly to a 2.1 slurmdbd.
 -- BLUEGENE - Fix issue where no partitions have any nodes assigned them to
    alert user no blocks can be created.
 -- BLUEGENE - Fix smap to put BGP images when using -Dc on a Blue Gene/P
    system.
 -- Set SLURM_SUBMIT_DIR environment variable for srun and salloc commands to
    match behavior of sbatch command.
 -- Report WorkDir from "scontrol show job" command for jobs launched using
    salloc and srun.
 -- Update correctly the wckey when changing it on a pending job.
 -- Set wckeyid correctly in accounting when cancelling a pending job.
 -- BLUEGENE - critical fix where jobs would be killed incorrectly.
 -- BLUEGENE - fix for sview putting multiple ionodes on to nodelists when
    viewing the jobs tab.
 -- Remove SLURM_DIST_LLLP environment variable in favor of just
    SLURM_DISTRIBUTION.

* Changes in SLURM 2.1.0
========================
 -- Improve sview layout of blocks in use.
 -- A user can now change the dimensions of the grid in sview.
 -- BLUEGENE - improved startup speed further for large numbers of defined
    blocks
 -- Fix to _get_job_min_nodes() in wiki2/get_jobs.c suggested by Michal Novotny
 -- BLUEGENE - fixed issues when updating a pending job when a node
    count was incorrect for the asked for connection type.
 -- BLUEGENE - fixed issue when combining blocks that are in ready states to
    make a larger block from those or make multiple smaller blocks by
    splitting the larger block.  Previously this would only work with block
    in a free state.
 -- Fix bug in wiki(2) plugins where if HostFormat=2 and the task list is
    greater than 64 we don't truncate.  Previously this would mess up Moab
    by sending a truncated task list when doing a get jobs.
 -- Added update slurmctld debug level to sview when in admin mode.
 -- Added logic to make sure if enforcing a memory limit when using the
    jobacct_gather plugin a user can no longer turn off the logic to enforce
    the limit.
 -- Replaced many calls to getpwuid() with reentrant uid_to_string()
 -- The slurmstepd will now refresh it's log file handle on a reconfig,
    previously if a log was rolled any output from the stepd was lost.