diff --git a/NEWS b/NEWS
index 76418cd46a4913c9b14934b6518f758168959d90..843c3a9786584314d14f00211363ec94d8bcb16c 100644
--- a/NEWS
+++ b/NEWS
@@ -205,6 +205,8 @@ documents those changes that are of interest to users and admins.
  -- 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.
 
 * Changes in SLURM 2.3.3
 ========================
diff --git a/src/plugins/select/bluegene/bg_dynamic_block.c b/src/plugins/select/bluegene/bg_dynamic_block.c
index 2ed633f8326a3154bc81b8c3fa8044e6f154b62a..82c7372087541de77bb7c4400c601b750a8eca03 100644
--- a/src/plugins/select/bluegene/bg_dynamic_block.c
+++ b/src/plugins/select/bluegene/bg_dynamic_block.c
@@ -383,12 +383,15 @@ extern List create_dynamic_block(List block_list,
 			   this midplane that have jobs running.
 			*/
 			while ((found_record = list_next(itr2))) {
-				if (!found_record->free_cnt
-				    && ((found_record->job_running
-					 != NO_JOB_RUNNING)
-					|| (found_record->job_list
-					    && list_count(
-						    found_record->job_list)))
+				/* Don't check free_cnt here since
+				   if this block shares the same
+				   midplane it will automatically be
+				   -1. So just look for running jobs.
+				*/
+				if (((found_record->job_running
+				      != NO_JOB_RUNNING)
+				     || (found_record->job_list
+					 && list_count(found_record->job_list)))
 				    && bit_overlap(bg_record->mp_bitmap,
 						   found_record->mp_bitmap)) {
 					found = 1;