aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@gmail.com>2011-05-14 19:30:37 -0400
committerUlrich Drepper <drepper@gmail.com>2011-05-14 19:30:37 -0400
commit2fc54d6f9f7d6770ecb0e0bb5a3b977965bfe273 (patch)
tree0a877a640655c1c919d3196d8b28ab11c09a261d
parent98d76b46d2db565b22be647d611cc2649ba6ff87 (diff)
downloadglibc-2fc54d6f9f7d6770ecb0e0bb5a3b977965bfe273.tar
glibc-2fc54d6f9f7d6770ecb0e0bb5a3b977965bfe273.tar.gz
glibc-2fc54d6f9f7d6770ecb0e0bb5a3b977965bfe273.tar.bz2
glibc-2fc54d6f9f7d6770ecb0e0bb5a3b977965bfe273.zip
Fix initialization of optimization values for AIO
-rw-r--r--ChangeLog4
-rw-r--r--NEWS10
-rw-r--r--sysdeps/pthread/aio_misc.c8
3 files changed, 14 insertions, 8 deletions
diff --git a/ChangeLog b/ChangeLog
index 549a23dcdb..26c431771a 100644
--- 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 3db9aea549..650fff8a35 100644
--- 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.
diff --git a/sysdeps/pthread/aio_misc.c b/sysdeps/pthread/aio_misc.c
index c82acbbc2d..ca3d1111e8 100644
--- a/sysdeps/pthread/aio_misc.c
+++ b/sysdeps/pthread/aio_misc.c
@@ -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)