diff --git a/src/plugins/select/bluegene/plugin/dynamic_block.c b/src/plugins/select/bluegene/plugin/dynamic_block.c
index ecb53e6642054cccf2e2b9570a93cc59dda516a8..3a345c4ebb32791b5782238b86bf06bbe142bd9e 100644
--- a/src/plugins/select/bluegene/plugin/dynamic_block.c
+++ b/src/plugins/select/bluegene/plugin/dynamic_block.c
@@ -66,6 +66,7 @@ extern List create_dynamic_block(List block_list,
 	int i;
 	blockreq_t blockreq;
 	int cnodes = request->procs / bg_conf->proc_ratio;
+	char *unusable_nodes = NULL;
 
 	if(cnodes < bg_conf->smallest_block) {
 		error("Can't create this size %d "
@@ -120,7 +121,6 @@ extern List create_dynamic_block(List block_list,
 	}
 
 	if(request->avail_node_bitmap) {
- 		char *nodes = NULL;
 		bitstr_t *bitmap = bit_alloc(node_record_count);
 		
 		/* we want the bps that aren't in this partition to
@@ -128,12 +128,11 @@ extern List create_dynamic_block(List block_list,
 		 */
 		bit_or(bitmap, request->avail_node_bitmap);
 		bit_not(bitmap);
-		nodes = bitmap2node_name(bitmap);
+		unusable_nodes = bitmap2node_name(bitmap);
 		
 		//info("not using %s", nodes);
-		removable_set_bps(nodes);
+		removable_set_bps(unusable_nodes);
 
-		xfree(nodes);
 		FREE_NULL_BITMAP(bitmap);
 	}
 
@@ -254,17 +253,20 @@ extern List create_dynamic_block(List block_list,
 		   && (bit_ffs(bg_record->ionode_bitmap) != 0))
 			continue;
 		
-		debug2("removing %s for request %d",
+		debug3("removing %s for request %d",
 		       bg_record->nodes, request->size);
 		remove_block(bg_record->bg_block_list, (int)NO_VAL);
+		/* need to set any unusable nodes that this last block
+		   used */
+		removable_set_bps(unusable_nodes);
 		rc = SLURM_SUCCESS;
 		if(results)
 			list_flush(results);
 		else
 			results = list_create(NULL);
-		if (allocate_block(request, results)) 
+		if (allocate_block(request, results))
 			break;
-
+		
 		debug2("allocate failure for size %d base partitions", 
 		       request->size);
 		rc = SLURM_ERROR;
@@ -291,6 +293,7 @@ setup_records:
 finished:
 	reset_all_removed_bps();
 	
+	xfree(unusable_nodes);
 	xfree(request->save_name);
 	
 	if(request->elongate_geos) {