Index: trunk/Ohana/src/opihi/pcontrol/CheckSystem.c
===================================================================
--- trunk/Ohana/src/opihi/pcontrol/CheckSystem.c	(revision 18098)
+++ trunk/Ohana/src/opihi/pcontrol/CheckSystem.c	(revision 21379)
@@ -22,5 +22,8 @@
 
   /* we want to give each block a maximum allowed time */
-  CheckIdleHosts(0.020); /* submit a new job */
+  CheckIdleHosts(0.015, PCONTROL_JOB_STAGE_NEEDHOST); /* submit a new job */
+  CheckIdleHosts(0.015, PCONTROL_JOB_STAGE_WANTHOST); /* submit a new job */
+  CheckIdleHosts(0.015, PCONTROL_JOB_STAGE_ANYHOST);  /* submit a new job */
+  CheckIdleHosts(0.015, PCONTROL_JOB_STAGE_OLDWANT);  /* submit a new job */
 
   CheckBusyJobs(0.020);  /* get job status */
@@ -109,5 +112,8 @@
     if (RunLevel == PCONTROL_RUN_ALL) {
       // we want to give each block a maximum allowed time
-      Nhostchecks += CheckIdleHosts(0.020); /* submit a new job (PCLIENT) */
+      Nhostchecks += CheckIdleHosts(0.015, PCONTROL_JOB_STAGE_NEEDHOST); /* submit a new job (PCLIENT) */
+      Nhostchecks += CheckIdleHosts(0.015, PCONTROL_JOB_STAGE_WANTHOST); /* submit a new job (PCLIENT) */
+      Nhostchecks += CheckIdleHosts(0.015, PCONTROL_JOB_STAGE_ANYHOST); /* submit a new job (PCLIENT) */
+      Nhostchecks += CheckIdleHosts(0.015, PCONTROL_JOB_STAGE_OLDWANT); /* submit a new job (PCLIENT) */
       TestCheckPoint ();
     }
@@ -367,5 +373,7 @@
 }
 
-int CheckIdleHosts (float MaxDelay) {
+// if we have any IDLE hosts, check if there are jobs to be launched 
+// for each pass, we only check one type of job: stage = NEED, WANT, ANY, OLDWANT
+int CheckIdleHosts (float MaxDelay, int Stage) {
 
   struct timeval start, stop;
@@ -389,8 +397,9 @@
     host = PullStackByLocation (stack, STACK_TOP);
     if (host == NULL) break;
-    CheckIdleHost (host);
-    gettimeofday (&stop, (void *) NULL);
-    dtime = DTIME (stop, start);
-  }
+    CheckIdleHost (host, Stage);
+    gettimeofday (&stop, (void *) NULL);
+    dtime = DTIME (stop, start);
+  }
+
   if (DEBUG) gprint (GP_ERR, "checked %d hosts\n", i);
   return (i);
