diff --git a/NEWS b/NEWS
index 6a65ed381f8ee22b66d35001e033ded0c4081c32..488478f2809e0c37debf16f3ac56e5514039b6f6 100644
--- a/NEWS
+++ b/NEWS
@@ -262,6 +262,7 @@ documents those changes that are of interest to users and administrators.
     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.
 
 * Changes in Slurm 14.03.8
 ==========================
diff --git a/doc/html/publications.shtml b/doc/html/publications.shtml
index 0d468b719fdf3d5528493cee7450cdb3521dd8ed..de3c661806ca85996c1e942da42f138ce1cdc567 100644
--- a/doc/html/publications.shtml
+++ b/doc/html/publications.shtml
@@ -10,10 +10,13 @@
 <li><b>Presentations from SLURM User Group Meeting, September 2014</b></li>
 <ul>
 
+<li><a href="http://www.hsiphotography.com/p96779352/h24431f4d#h33c5b153">Group photo</a>
+Paul Hsi (MIT Kavli Institute for Astrophysics and Space Research)</li>
+
 <li><a href="SUG14/welcome.pdf">Welcoming Address</a>
 Colin McMurtrie (Swiss National Supercomputing Centre, CSCS)</li>
 
-<!-- Keynote -->
+<!-- Schurmann keynote (EPFL) -->
 
 <li><a href="SUG14/v1411.pdf">Overview of Slurm Versions 14.03 and 14.11</a>
 Jacob Jenson (SchedMD) and Yiannis Georgiou (Bull)</li>
@@ -34,7 +37,7 @@ Danny Auble and Morris Jette (SchedMD)</li>
 <li><a href="SUG14/sched_tutorial.pdf">Tuning Slurm Scheduling for Optimal Responsiveness and Utilization</a>
 Morris Jette (SchedMD)</li>
 
-<!-- Carles -->
+<!-- Carles (BSC) -->
 
 <li><a href="SUG14/ostrich.pdf">OStrich: Fair Scheduler for Burst Submissions of Parallel Job</a>
 Krzysztof Rzadca (University of Warsaw) and Filip Skalski ((University of Warsaw / Google)</li>
@@ -70,9 +73,11 @@ Ryan Cox and Levi Morrison (Brigham Young University)</li>
 Thomas Cadeau and Yiannis Georgiou (Bull),
 Matthieu Hautreux (CEA)</li>
 
-<!-- Emmanuel -->
+<li><a href="SUG14/topo_aware.pdf">Topology-Aware Resource Selectiont</a>
+Emmanuel Jeannot, Guillaume Mercier, and Ad&egrave;le Villiermet (Inria)</li>
 
-<li><a href="SUG14/inter_cluster.pdf">Slurm Inter-Cluster Project</a>
+<li><a href="SUG14/inter_cluster.pdf">Slurm Inter-Cluster Project (presentation)</a>,
+<a href="SUG14/SICP.pdf">(paper)</a>
 Stephen Trofinoff (CSCS)</li>
 
 <li><a href="SUG14/cray_native.pdf">Slurm Native Workload Management on Cray Systems</a>
@@ -533,6 +538,6 @@ Danny Auble of LLNL about Slurm.</p>
 Learning Chef: Compute Cluter with Slurm</a>
 A Slurm Cookbook by Adam DeConinck</p>
 
-<p style="text-align:center;">Last modified 29 September 2014</p>
+<p style="text-align:center;">Last modified 30 September 2014</p>
 
 <!--#include virtual="footer.txt"-->
diff --git a/src/sinfo/sinfo.c b/src/sinfo/sinfo.c
index d660e9fc2d2115c32720c4787d62a862c2dbe7df..82009f7f83cfe89033ad2828164206fec013066b 100644
--- a/src/sinfo/sinfo.c
+++ b/src/sinfo/sinfo.c
@@ -678,6 +678,11 @@ static bool _filter_out(node_info_t *node_ptr)
 					SELECT_NODEDATA_SUBCNT,
 					NODE_STATE_ALLOCATED,
 					&cpus);
+				if (params.cluster_flags & CLUSTER_FLAG_BG
+				    && !cpus &&
+				    (IS_NODE_ALLOCATED(node_ptr) ||
+				     IS_NODE_COMPLETING(node_ptr)))
+					cpus = node_ptr->cpus;
 				if (cpus) {
 					match = true;
 					break;
@@ -1099,6 +1104,8 @@ static int _handle_subgrps(List sinfo_list, uint16_t part_num,
 	 * then we can use this to tack on the end of the node name
 	 * the subgrp stuff.  On bluegene systems this would be nice
 	 * to see the ionodes in certain states.
+	 * When asking for nodes that are reserved, we need to return
+	 * all states of those nodes.
 	 */
 	if (params.state_list)
 		iterator = list_iterator_create(params.state_list);
@@ -1109,9 +1116,10 @@ static int _handle_subgrps(List sinfo_list, uint16_t part_num,
 			while ((node_state = list_next(iterator))) {
 				tmp_node_ptr->node_state = *node_state;
 				if ((((state[i] == NODE_STATE_ALLOCATED)
-				     && IS_NODE_DRAINING(tmp_node_ptr))
-				    || (*node_state == NODE_STATE_DRAIN))
-				   || (*node_state == state[i]))
+				      && IS_NODE_DRAINING(tmp_node_ptr))
+				     || (*node_state == NODE_STATE_DRAIN))
+				    || (*node_state == state[i])
+				    || (*node_state == NODE_STATE_RES))
 					break;
 			}
 			list_iterator_reset(iterator);
@@ -1137,8 +1145,9 @@ static int _handle_subgrps(List sinfo_list, uint16_t part_num,
 			node_info_t tmp_node, *tmp_node_ptr = &tmp_node;
 			tmp_node_ptr->node_state = *node_state;
 			if (((*node_state == NODE_STATE_DRAIN)
-			    || IS_NODE_DRAINED(tmp_node_ptr))
-			   || (*node_state == NODE_STATE_IDLE))
+			     || IS_NODE_DRAINED(tmp_node_ptr))
+			    || (*node_state == NODE_STATE_IDLE)
+			    || (*node_state == NODE_STATE_RES))
 				break;
 		}
 		list_iterator_destroy(iterator);