]> err.no Git - moreutils/commitdiff
parallel: Fix to really avoid running new jobs when load is too high.
authorJoey Hess <joey@gnu.kitenet.net>
Tue, 23 Feb 2010 19:36:50 +0000 (14:36 -0500)
committerJoey Hess <joey@gnu.kitenet.net>
Tue, 23 Feb 2010 19:36:50 +0000 (14:36 -0500)
The conditions were ORed before, which typically made the load limit be
ignored since the jobs limit was satisfied.

Also, -l 0 makes little sense, so don't really wait for the load to become
lower than 0 in that case.

debian/changelog
parallel.c

index b5d2a7f1e7675dba0dded49535719ccd2327f4fe..fe89fdfaa25d77dd6e947f7fe6824bbdc6790d18 100644 (file)
@@ -3,6 +3,7 @@ moreutils (0.39) UNRELEASED; urgency=low
   * Cap sillyness. Closes: #570815
   * parallel: Fix exit code handling when commands are specified after --
   * parallel: Make -j 0 do something reasonable (start all jobs at once).
+  * parallel: Fix to really avoid running new jobs when load is too high.
 
  -- Joey Hess <joeyh@debian.org>  Sun, 21 Feb 2010 13:16:10 -0500
 
index 06f9041da58355106579797cc945e136f1d85da5..19f341aa92a42696d419ea0f7a4591bf16176077 100644 (file)
@@ -201,8 +201,9 @@ int main(int argc, char **argv) {
 
                getloadavg(&load, 1);
 
-               if ((maxjobs == 0 || curjobs < maxjobs) ||
-                   (maxload > 0 && load < maxload)) {
+               if ((maxjobs == 0 || curjobs < maxjobs) &&
+                   (maxload <= 0 || load < maxload)) {
+
                        if (argsatonce > arglen - argidx)
                                argsatonce = arglen - argidx;
                        exec_child(command, arguments + argidx,