diff --git a/doc/man/man1/sreport.1 b/doc/man/man1/sreport.1
index f8ae3dacae0f56884271d2c581ad0bc723811150..60712c10fb12b7fe922c4844019dbbdd19918646 100644
--- a/doc/man/man1/sreport.1
+++ b/doc/man/man1/sreport.1
@@ -285,6 +285,7 @@ List of users jobs to include in report.  Default is all.
 .RE  
 
 .TP
+ 
 .SH "Format Options for Each Report"
 
 \fBCluster\fP
@@ -306,7 +307,7 @@ List of users jobs to include in report.  Default is all.
        TopUsage
              - Account, Cluster, Login, Proper, Used
                                                                            
-.TP         
+.TP
 All commands and options are case-insensitive.
 .TP
 
diff --git a/src/plugins/select/bluegene/plugin/bg_record_functions.c b/src/plugins/select/bluegene/plugin/bg_record_functions.c
index 796535d2ffc2241e60e1fde777e983d2d9fedb26..aa25e3acd4756cd283c6ada87eb98d9065f347e0 100644
--- a/src/plugins/select/bluegene/plugin/bg_record_functions.c
+++ b/src/plugins/select/bluegene/plugin/bg_record_functions.c
@@ -298,12 +298,19 @@ extern void process_nodes(bg_record_t *bg_record, bool startup)
 	       alpha_num[bg_record->geo[Y]],
 	       alpha_num[bg_record->geo[Z]],
 	       bg_record->bp_count);
-
-	if ((bg_record->geo[X] == DIM_SIZE[X])
-	    && (bg_record->geo[Y] == DIM_SIZE[Y])
-	    && (bg_record->geo[Z] == DIM_SIZE[Z])) {
-		bg_record->full_block = 1;	
-	}	
+	/* This check is for sub midplane systems to figure out what
+	   the largest block can be.
+	*/
+	if((DIM_SIZE[X] > 1) || (DIM_SIZE[Y] > 1) || (DIM_SIZE[Z] > 1)) {
+		/* means we have more than 1 base partition */
+		if ((bg_record->geo[X] == DIM_SIZE[X])
+		    && (bg_record->geo[Y] == DIM_SIZE[Y])
+		    && (bg_record->geo[Z] == DIM_SIZE[Z])) {
+			bg_record->full_block = 1;	
+		}	
+	} else if(bg_record->node_cnt == bluegene_bp_node_cnt)
+		bg_record->full_block = 1;
+	
 	
 /* #ifndef HAVE_BG_FILES */
 /* 	max_dim[X] = MAX(max_dim[X], end[X]); */
diff --git a/src/plugins/select/bluegene/plugin/block_sys.c b/src/plugins/select/bluegene/plugin/block_sys.c
index 1db8077d6950b3b6a771e9d85eb8ee47f4047861..0a27b03dfb37435a0719ab8405d8e27d878bf6ed 100755
--- a/src/plugins/select/bluegene/plugin/block_sys.c
+++ b/src/plugins/select/bluegene/plugin/block_sys.c
@@ -803,7 +803,10 @@ int read_bg_blocks()
 		       bg_record->state);
 		
 		process_nodes(bg_record, false);
-	
+
+		/* We can stop processing information now since we
+		   don't need to rest of the information to decide if
+		   this is the correct block. */
 		if(bluegene_layout_mode == LAYOUT_DYNAMIC) {
 			bg_record_t *tmp_record = xmalloc(sizeof(bg_record_t));
 			copy_bg_record(bg_record, tmp_record);
diff --git a/src/plugins/select/bluegene/plugin/bluegene.c b/src/plugins/select/bluegene/plugin/bluegene.c
index d0cd8db0d17fc8b66849bcef667fe219c4f5c1fb..33176a5de00cbd193b8745f2b72bc233b11c2154 100644
--- a/src/plugins/select/bluegene/plugin/bluegene.c
+++ b/src/plugins/select/bluegene/plugin/bluegene.c
@@ -1449,7 +1449,6 @@ static int _validate_config_nodes(List *bg_found_block_list, char *dir)
 	int rc = SLURM_ERROR;
 	bg_record_t* bg_record = NULL;	
 	bg_record_t* init_bg_record = NULL;
-	bg_record_t* full_system_bg_record = NULL;	
 	int full_created = 0;
 	ListIterator itr_conf;
 	ListIterator itr_curr;
@@ -1473,23 +1472,15 @@ static int _validate_config_nodes(List *bg_found_block_list, char *dir)
 
 	if(!bg_curr_block_list)
 		return SLURM_ERROR;
-
-	itr_curr = list_iterator_create(bg_curr_block_list);
-	while ((init_bg_record = list_next(itr_curr))) 
-		if(init_bg_record->full_block) 
-			full_system_bg_record = init_bg_record;	
 	
 	if(!*bg_found_block_list)
 		(*bg_found_block_list) = list_create(NULL);
-	
+
+	itr_curr = list_iterator_create(bg_curr_block_list);
 	itr_conf = list_iterator_create(bg_list);
 	while ((bg_record = (bg_record_t*) list_next(itr_conf))) {
-		/* translate hostlist to ranged 
-		   string for consistent format
-		   search here 
-		*/
 		list_iterator_reset(itr_curr);
-		while ((init_bg_record = list_next(itr_curr))) {		
+		while ((init_bg_record = list_next(itr_curr))) {
 			if (strcasecmp(bg_record->nodes, 
 				       init_bg_record->nodes))
 				continue; /* wrong nodes */
@@ -1526,6 +1517,10 @@ static int _validate_config_nodes(List *bg_found_block_list, char *dir)
 				continue;
 		       			
 			copy_bg_record(init_bg_record, bg_record);
+			/* remove from the curr list since we just
+			   matched it no reason to keep it around
+			   anymore */
+			list_delete_item(itr_curr);
 			break;
 		}
 			
@@ -1554,30 +1549,39 @@ static int _validate_config_nodes(List *bg_found_block_list, char *dir)
 				list_push(bg_booted_block_list, bg_record);
 		}
 	}		
-	list_iterator_destroy(itr_conf);
-	list_iterator_destroy(itr_curr);
 	if(bluegene_layout_mode == LAYOUT_DYNAMIC)
 		goto finished;
 
-	if(!full_created && full_system_bg_record) {
-		bg_record = xmalloc(sizeof(bg_record_t));
-		copy_bg_record(full_system_bg_record, bg_record);
-		list_append(bg_list, bg_record);
-		list_push(*bg_found_block_list, bg_record);
-		format_node_name(bg_record, tmp_char, sizeof(tmp_char));
-		info("Existing: BlockID:%s Nodes:%s Conn:%s",
-		     bg_record->bg_block_id, 
-		     tmp_char,
-		     convert_conn_type(bg_record->conn_type));
-		if(((bg_record->state == RM_PARTITION_READY)
-		    || (bg_record->state == RM_PARTITION_CONFIGURING))
-		   && !block_exist_in_list(bg_booted_block_list, 
-					   bg_record))
-			list_push(bg_booted_block_list, bg_record);
+	if(!full_created) {
+		list_iterator_reset(itr_curr);
+		while ((init_bg_record = list_next(itr_curr))) {
+			if(init_bg_record->full_block) {
+				list_remove(itr_curr);
+				bg_record = init_bg_record;
+				list_append(bg_list, bg_record);
+				list_push(*bg_found_block_list, bg_record);
+				format_node_name(bg_record, tmp_char,
+						 sizeof(tmp_char));
+				info("Existing: BlockID:%s Nodes:%s Conn:%s",
+				     bg_record->bg_block_id, 
+				     tmp_char,
+				     convert_conn_type(bg_record->conn_type));
+				if(((bg_record->state == RM_PARTITION_READY)
+				    || (bg_record->state 
+					== RM_PARTITION_CONFIGURING))
+				   && !block_exist_in_list(
+					   bg_booted_block_list, bg_record))
+					list_push(bg_booted_block_list,
+						  bg_record);
+				break;
+			}
+		}
 	}
 		
 finished:
-	if(list_count(bg_list) == list_count(bg_curr_block_list))
+	list_iterator_destroy(itr_conf);
+	list_iterator_destroy(itr_curr);
+	if(!list_count(bg_curr_block_list))
 		rc = SLURM_SUCCESS;
 	
 	return rc;
diff --git a/src/plugins/select/bluegene/plugin/select_bluegene.c b/src/plugins/select/bluegene/plugin/select_bluegene.c
index bc8766d03a1375e6e171acfa5e346c12292e2ff4..abe836f21c7f308ab7e1e59bfa844e3b6a0c7f69 100644
--- a/src/plugins/select/bluegene/plugin/select_bluegene.c
+++ b/src/plugins/select/bluegene/plugin/select_bluegene.c
@@ -369,7 +369,7 @@ extern int select_p_job_init(List job_list)
 extern int select_p_node_init(struct node_record *node_ptr, int node_cnt)
 {
 	if(node_cnt>0)
-		if(node_ptr->cpus > 512)
+		if(node_ptr->cpus >= bluegene_bp_node_cnt)
 			procs_per_node = node_ptr->cpus;
 	return SLURM_SUCCESS;
 }
diff --git a/src/sreport/sreport.c b/src/sreport/sreport.c
index 08b7857835b9cd1513335a7672149cd9646169b4..19f0c754381d1cd1e45d335b9e23140e635aac19 100644
--- a/src/sreport/sreport.c
+++ b/src/sreport/sreport.c
@@ -655,8 +655,6 @@ sreport [<OPTION>] [<COMMAND>]                                             \n\
                                   displayed, not the accounts specified.   \n\
                                   In the Sizes reports the default for     \n\
                                   accounts is root.                        \n\
-             - Clusters=<OPT>   - List of clusters to include in report.   \n\
-                                  Default is local cluster.                \n\
              - GID=<OPT>        - List of group ids to include in report.  \n\
                                   Default is all.                          \n\
              - Grouping=<OPT>   - Comma separated list of size groupings.  \n\
@@ -673,8 +671,6 @@ sreport [<OPTION>] [<COMMAND>]                                             \n\
                                                                            \n\
      user    - Accounts=<OPT>   - List of accounts to use for the report   \n\
                                   Default is all.                          \n\
-             - Clusters=<OPT>   - List of clusters to include in report.   \n\
-                                  Default is local cluster.                \n\
              - Group            - Group all accounts together for each user.\n\
                                   Default is a separate entry for each user\n\
                                   and account reference.                   \n\