diff options
author | Ulrich Drepper <drepper@redhat.com> | 2005-08-23 23:21:53 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2005-08-23 23:21:53 +0000 |
commit | 2c210d1eb88d4ab44bfce576b8fbac8e89a946f4 (patch) | |
tree | ba61cc9d2f2ee26f7edc7d92549499175274a374 /nscd/nscd_conf.c | |
parent | fd4af66481e49b3dca42ecb0eadf75dbeea09bfc (diff) | |
download | glibc-2c210d1eb88d4ab44bfce576b8fbac8e89a946f4.zip glibc-2c210d1eb88d4ab44bfce576b8fbac8e89a946f4.tar.gz glibc-2c210d1eb88d4ab44bfce576b8fbac8e89a946f4.tar.bz2 |
* nscd/connection.c (DEFAULT_DATASIZE_PER_BUCKET): Move to nscd.h.
(dbs): Initialize max_db_size fields.
(nscd_init): When mapping the database, use max_db_size as the
mapping size even if it is bigger than the file size.
* nscd/mem.c (mempool_alloc): When resizing the file make sure the
limit in max_db_size is not exceeded. Don't use mremap, just
posix_fallocate is enough (according to Linus). Use posix_fallocate
correctly.
* nscd/nscd.conf: Add max-db-size parameters.
* nscd/nscd.h (struct database_dyn): Add max_db_size field.
Define DEFAULT_MAX_DB_SIZE and DEFAULT_DATASIZE_PER_BUCKET.
Temporarily define TEMP_FAILURE_RETRY_VAL here.
* nscd/nscd_conf.c (nscd_parse_file): Parse max-db-size parameter
and add sanity checks for it.
* nscd/aicache.c (addhstaiX): Use send with MSG_NOSIGNAL not write to
send reply.
* nscd/connection.c (writeall): Likewise.
(handle_request): Likewise.
* nscd/grpcache.c (cache_addgr): Likewise.
* nscd/hstcache.c (cache_addhst): Likewise.
* nscd/initgrcache.c (addinitgroupsX): Likewise.
* nscd/nscd.c (parse_opt): Likewise.
* nscd/nscd_stat.c (send_stats): Likewise.
(receive_print_stats): Likewise.
* nscd/pwdcache.c (cache_addpw): Likewise.
Diffstat (limited to 'nscd/nscd_conf.c')
-rw-r--r-- | nscd/nscd_conf.c | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/nscd/nscd_conf.c b/nscd/nscd_conf.c index d21f2fc..c5c06ae 100644 --- a/nscd/nscd_conf.c +++ b/nscd/nscd_conf.c @@ -1,4 +1,4 @@ -/* Copyright (c) 1998, 2000, 2003, 2004 Free Software Foundation, Inc. +/* Copyright (c) 1998, 2000, 2003, 2004, 2005 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Thorsten Kukuk <kukuk@suse.de>, 1998. @@ -171,6 +171,17 @@ nscd_parse_file (const char *fname, struct database_dyn dbs[lastdb]) if (cnt == lastdb) dbg_log ("database %s is not supported\n", arg1); } + else if (strcmp (entry, "max-db-size") == 0) + { + for (cnt = 0; cnt < lastdb; ++cnt) + if (strcmp (arg1, dbnames[cnt]) == 0) + { + dbs[cnt].max_db_size = atol (arg2); + break; + } + if (cnt == lastdb) + dbg_log ("database %s is not supported\n", arg1); + } else if (strcmp (entry, "logfile") == 0) set_logfile (arg1); else if (strcmp (entry, "debug-level") == 0) @@ -290,6 +301,22 @@ cannot get current working directory: %s; disabling paranoia mode"), if (max_nthreads < nthreads) max_nthreads = nthreads; + for (cnt = 0; cnt < lastdb; ++cnt) + { + size_t datasize = (sizeof (struct database_pers_head) + + roundup (dbs[cnt].suggested_module + * sizeof (ref_t), ALIGN) + + (dbs[cnt].suggested_module + * DEFAULT_DATASIZE_PER_BUCKET)); + if (datasize > dbs[cnt].max_db_size) + { + dbg_log (_("maximum file size for %s database too small"), + dbnames[cnt]); + dbs[cnt].max_db_size = datasize; + } + + } + /* Free the buffer. */ free (line); /* Close configuration file. */ |