Fix initialization of optimization values for AIO
authorUlrich Drepper <drepper@gmail.com>
Sat, 14 May 2011 23:30:37 +0000 (19:30 -0400)
committerUlrich Drepper <drepper@gmail.com>
Sat, 14 May 2011 23:30:37 +0000 (19:30 -0400)
ChangeLog
NEWS
sysdeps/pthread/aio_misc.c

index 549a23d..26c4317 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 2011-05-14  Ulrich Drepper  <drepper@gmail.com>
 
+       [BZ #12083]
+       * sysdeps/pthread/aio_misc.c (__aio_init): Compute optim.aio_num
+       correctly.
+
        [BZ #12601]
        * iconvdata/cp932.c (BODY to UCS4): Fix incrementing inptr in case of
        two-byte sequence errors.
diff --git a/NEWS b/NEWS
index 3db9aea..650fff8 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -10,11 +10,11 @@ Version 2.14
 * The following bugs are resolved with this release:
 
   386, 11257, 11258, 11487, 11532, 11578, 11653, 11668, 11724, 11945, 11947,
-  12052, 12158, 12178, 12200, 12346, 12393, 12420, 12432, 12445, 12449,
-  12454, 12460, 12469, 12489, 12509, 12510, 12511, 12518, 12527, 12541,
-  12545, 12551, 12583, 12587, 12597, 12601, 12611, 12625, 12626, 12631,
-  12650, 12653, 12655, 12660, 12681, 12685, 12711, 12713, 12714, 12717,
-  12723, 12724, 12734, 12738
+  12052, 12083, 12158, 12178, 12200, 12346, 12393, 12420, 12432, 12445,
+  12449, 12454, 12460, 12469, 12489, 12509, 12510, 12511, 12518, 12527,
+  12541, 12545, 12551, 12583, 12587, 12597, 12601, 12611, 12625, 12626,
+  12631, 12650, 12653, 12655, 12660, 12681, 12685, 12711, 12713, 12714,
+  12717, 12723, 12724, 12734, 12738
 
 * The RPC implementation in libc is obsoleted.  Old programs keep working
   but new programs cannot be linked with the routines in libc anymore.
index c82acbb..ca3d111 100644 (file)
@@ -1,5 +1,5 @@
 /* Handle general operations.
-   Copyright (C) 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2006, 2007, 2009
+   Copyright (C) 1997-2001, 2003, 2004, 2006, 2007, 2009, 2011
    Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@@ -26,6 +26,7 @@
 #include <pthread.h>
 #include <stdlib.h>
 #include <unistd.h>
+#include <sys/param.h>
 #include <sys/stat.h>
 #include <sys/time.h>
 #include <aio_misc.h>
@@ -87,7 +88,7 @@ static int idle_thread_count;
 static struct aioinit optim =
 {
   20,  /* int aio_threads;     Maximal number of threads.  */
-  64,  /* int aio_num;         Number of expected simultanious requests. */
+  64,  /* int aio_num;         Number of expected simultaneous requests. */
   0,
   0,
   0,
@@ -282,9 +283,10 @@ __aio_init (const struct aioinit *init)
   if (pool == NULL)
     {
       optim.aio_threads = init->aio_threads < 1 ? 1 : init->aio_threads;
+      assert (powerof2 (ENTRIES_PER_ROW));
       optim.aio_num = (init->aio_num < ENTRIES_PER_ROW
                       ? ENTRIES_PER_ROW
-                      : init->aio_num & ~ENTRIES_PER_ROW);
+                      : init->aio_num & ~(ENTRIES_PER_ROW - 1));
     }
 
   if (init->aio_idle_time != 0)