This change adds a warning to nscd.conf about running multiple caching
services together and that it may lead to unexpected behaviours. Also we
add a note that enabling the 'shared' option will cause cache hit rates
to be misreported (a side effect of the implementation).
v2
- Rewrite comment to avoid implementation details.
when the lookup call failed.
* nscd/nscd.h (struct database_dyn): Rename prunelock to prune_lock.
Add prune_cond and wakeup_time.
(CACHE_PRUNE_INTERNAL): Define.
Update declarations of prune_cache and setup_thread.
* nscd/connections.c (dbs): Update initializers.
(CACHE_PRUNE_INTERNAL): Moved to nscd.h.
(nscd_init): Default number of threads is now 4.
(invalidate_cache): Take lock before calling prune_cache.
(handle_request): If SELinux forbids the request, say so.
(readylist_cond): Use static initializer.
(nscd_run_prune): New function. Used only by pruning threads.
(nscd_run_worder): Renamed from nscd_run. Remove support for pruning
here.
(fd_ready): Update nscd_run reference.
(start_threads): No need to initialize readylist_cond.
Start pruning threads separately.
* nscd/nscd_setup_thread.c: Change return value type to int and always
return 0.
* sysdeps/unix/sysv/linux/nscd_setup_thread.c: Change return value type
to int and return nonzero value if we can use the TID address hack.
* nscd/cache.c (cache_add): If next wakeup time of cleanup thread for
the database is later than the new entry's timeout, update the
wakeup time and wake the cleanup thread.
(prune_cache): Return seconds the next entry in the database is still
valid. Remove locking for pruning here.
* nscd/nscd.conf: Document default number of threads.
* nscd/nscd_conf.c (nscd_parse_file): Parse auto-propagate lines.
* nscd/nscd.conf: Add auto-propagate lines.
* nscd/connections.c (dbs): Initialize .propagate fields.
* nscd/grpcache.c (cache_addgr): Do not add ID entry for name lookups
and vice versa if propagation is disabled for the database.
* nscd/pwdcache.c (cache_addpw): Likewise.
(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.
Dynamically create new threads if necessary.
* nscd/connections.c (fd_ready): If no thread available for processing
the request, create a new one unless the limit is reached.
(start_threads): Check errors from pthread_create.
* nscd/nscd.h: Declare max_nthreads.
* nscd/nscd_conf.c: Parse max-nthreads entry.
* nscd/nscd.conf: Add max-threads entry.
* nscd/nscd_stat.c: Print current and maximum number of threads.
Implement paranoia mode.
* nscd/connections.c (nscd_init): Mark database and socket descriptors
as close on exec.
(restart): New function.
(restart_p): New function.
(nscd_run): Add missing descrement of nready in case readylist is
empty.
(main_loop_poll): Call restart_p and restart.
(main_loop_epoll): Likewise.
(begin_drop_privileges): Save original UID and GID.
* nscd/nscd.c: Define new variables paranoia, restart_time,
restart_interval, oldcwd, old_gid, old_uid.
(main): Disable paranoia mode if we are not forking.
(check_pid): When re-execing, the PID file contains the same PID as
the current process. Do not fail in this case.
* nscd/nscd.conf: Add paranoia and restart-interval entries.
* nscd/nscd.h: Define RESTART_INTERVAL. Declare new variables.
* nscd/nscd_conf.c: Parse paranoia and restart-internal configurations.
* nscd/nscd_stat.c: Print paranoia and restart-internal values.
* nscd/connections.c: Implement r/o sharing of nscd's cache with client
processes via shared memory.
* nscd/nscd-client.h: Likewise.
* nscd/nscd.h: Likewise.
* nscd/nscd_conf.c: Likewise.
* nscd/nscd_getgr_r.c: Likewise.
* nscd/nscd_getpw_r.c: Likewise.
* nscd/nscd_gethst_r.c: Likewise.
* nscd/nscd.conf: Add new config parameters.
* nscd/Makefile (aux): Add nscd_helper.
* nscd/nscd_helper.c: New file.
* nscd/mem.c (gc): Indicate beginning and end of the gc cycle.
* nscd/hstcache.c: Simplify a lot. We cache only the request itself,
no derived information.
* connections.c (nscd_init): Fix bug in testing size of the persistent.
* nis/Makefile (aux): Add nis_hash.
* nis/nis_hash.c: New file. Split out from nis_util.c.
* nis/nis_util.c: Move __nis_hash code in separate file.
* csu/tst-atomic.c: Improve atomic_increment_val test which would
not have found a ppc bug.
2004-08-26 Ulrich Drepper <drepper@redhat.com>
* nscd/cache.c: Major rewrite. The data is now optionally kept in
a mmaped memory region which is automatically mirrored on disk.
This implements persistent data storage. The Memory handled
needed to be completely revamped, it now uses a garbage collection
mechanism instead of malloc.
* nscd/connections.c: Likewise.
* nscd/nscd.c: Likewise.
* nscd/nscd.h: Likewise.
* nscd/nscd_conf.c: Likewise.
* nscd/nscd_stat.c: Likewise.
* nscd/grpcache.c: Likewise.
* nscd/hstcache.c:: Likewise.
* nscd/pwdcache.c:: Likewise.
* nscd/Makefile: Add rules to build mem.c.
* nscd/mem.c: New file.
* nscd/nscd.conf: Describe new configuration options.
* iconv/iconv_prog.c (main): Handle input file name "-" correctly.
Recognize option -s, -c, and -l.
2000-04-20 Thorsten Kukuk <kukuk@suse.de>
* nscd/nscd.c: Start new session for nscd, drop privilegs
to configured user if requested and no -S parameter are used.
* nscd/nscd.conf: Add new option "server-user".
* nscd/nscd_conf.c: Add support for new "server-user" option.
* nscd/nscd.h: Add declaration for server_user variable.
Based on patch by Chris Wing <wingc@engin.umich.edu>
2000-04-29 Mark Kettenis <kettenis@gnu.org>
* sysdeps/unix/sysv/linux/i386/sigaction.c: Add comment explaining
that changing the __restore and __restore_rt signal return code
will break GDB.
2000-04-29 Mark Kettenis <kettenis@gnu.org>
* sysdeps/unix/sysv/linux/i386/sys/ucontext.h: Do not include
<sys/user.h>.
2000-04-29 Mark Kettenis <kettenis@gnu.org>
* conform/data/ucontext.h-data: Allow ss_* instead of SS_*.
2000-04-29 Ulrich Drepper <drepper@redhat.com>
1998-10-19 Ulrich Drepper <drepper@cygnus.com>
* include/ldsodefs.h: New file.
* iconv/gconv.c: Include ldsodefs.h, not elf/ldsodefs.h.
Remove change to avoid using _CALL_DL_FCT.
* iconv/gconv_db.c: Likewise.
* iconv/gconv_dl.c: Likewise.
* iconv/skeleton.c: Likewise, here for DL_CALL_FCT.
* malloc/mtrace.c: Include ldsodefs.h, not elf/ldsodefs.h.
* nss/nsswitch.c: Likewise.
* nss/nsswitch.h: Likewise.
1998-10-19 Philip Blundell <pb@nexus.co.uk>
* sunrpc/Makefile (otherlibs): If static NSS is in use, set to the
required libraries.
* login/Makefile (otherlibs): Likewise.
* nscd/Makefile (otherlibs): Likewise.
* Makeconfig (link-libc) [! build_shared]: Add $(otherlibs).
* debug/Makefile (install-bin): Only build catchsegv if using ELF.
* inet/Makefile: Add -DSTATIC_NSS to CFLAGS.
1998-10-19 Philip Blundell <pb@nexus.co.uk>
* sysdeps/unix/sysv/linux/arm/syscalls.list: Added setfsgid
and setfsuid.
1998-10-19 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* nscd/connections.c: Fix typos in comments and strings.
* nscd/nscd.conf: Update according to recent changes to nscd.
* nscd/cache.c (prune_cache): Remove wrong comment.
copy_posix.mask for copy instruction.
1998-10-18 Ulrich Drepper <drepper@cygnus.com>
* resolv/nss_dns/dns-host.c: Add missing errnop parameter to the
NSS functions.
* resolv/nss_dns/dns-network.c: Likewise.
* grp/Makefile: Don't search for linuxhtreads in add-ons, use
have-thread-library to determine whether threads are available.
* pwd/Makefile: Remove wrong comment.
* inet/Makefile: Define CFLAGS-gethstbyad_r.c, CFLAGS-gethstbynm_r.c,
and CFLAGS-gethstbynm2_r.c to -DUSE_NSCD=1.
* locale/C-messages.c: Define default strings for YESTR and NOSTR.
* nss/Versions: Add __nss_hosts_lookup.
* nss/getXXbyYY.c: Remove unneeded assignment.
* nss/getXXbyYY_r.c: Include nscd/nscd_proto.h only if needed.
Almost complete rewrite of the NSCD to make it smaller, faster,
add more functionnality and make it easier to extend.
* nscd/Makfile (routines): Add nscd_gethst_r.
(nscd-modules): Add hstcache, gethstbyad_r, gethstbynm2_r, and cache.
* nscd/cache.c: New file.
* nscd/gethstbyad_r.c: New file.
* nscd/gethstbynm2_r.c: New file.
* nscd/hstcache.c: New file.
* nscd/nscd_gethst_r.c: New file.
* nscd/connections.c: Rewritten. Don't start new thread for every
new connection. Use a fixed set of threads which handle all
connections and also the cache cleanup.
* nscd/grpcache.c: Rewritten to use generic cache handling functions
in cache.c.
* nscd/nscd.c: Recognize new parameter nthreads. Adjust initialization
for rewrite. Remove handle_requests function.
* nscd/nscd.h (NSCD_VERSION): Bump to 2.
Define new data structure for the new unified cache and the host
database entries.
* nscd/nscd_conf.c: Rewrite parsing partly to allow adding of more
databases easily. Recognize check-files and threads definitions.
* nscd/nscd.conf: Add definition of enable-cache and check-files to
passwd and group definitions. Add new set of definitions for hosts.
* nscd/nscd_getgr_r.c: Rewrite for new protocol.
* nscd/nscd_getpw_r.c: Likewise.
* nscd/nscd_proto.h: Add prototype for host database functions.
* nscd/nscd_stat.c: Rewrite to simplify printing of information
for many databases.
* nscd/dbg_log.c: Remove unnecessary variable initializations.
Global variable debug_flag is renamed to dbg_level.
* nscd/dbg_log.h: Declare set_logfile.
1998-01-31 Phil Blundell <philb@gnu.org>
* configure.in: Add --without-cvs option to suppress automatic
checkin of regenerated files.
* config.make: Likewise.
* Makefile: Respect with-cvs setting.
* Makerules: Likewise.
* configure.in: Allow the standalone ARM port to be configured.
1998-01-31 Thorsten Kukuk <kukuk@vt.uni-paderborn.de>
* grp/getgrgid_r.c: Define USE_NSCD.
* grp/getgrnam_r.c: Likewise.
* pwd/getpwuid_r.c: Likewise.
* pwd/getpwnam_r.c: Likewise.
* sysdeps/unix/inet/Subdirs: Add nscd subdir.
* nss/getXXbyYY_r.c: Try at first nscd.
* nscd/Makefile: New, for the Name Switch Cache Daemon (nscd).
* nscd/connections.c: New file.
* nscd/dbg_log.c: New file.
* nscd/dbg_log.h: New file.
* nscd/grpcache.c: New file.
* nscd/nscd.c: New file.
* nscd/nscd.h: New file.
* nscd/nscd_conf.c: New file.
* nscd/nscd_stat.c: New file.
* nscd/pwdcache.c: New file.
* nscd/nscd_getgr_r.c: New, client code, linked into libc.
* nscd/nscd_getpw_r.c: Likewise.
* nscd/nscd_proto.h: New, prototypes for client functions.
* nscd/nscd.conf: New, example for a configuration file.
* nscd/nscd.init: New, example for a startup script.
* nscd/getgrgid_r.c: Old grp/getgrgid_r version, used from nscd to
avoid deadlocks.
* nscd/getgrnam_r.c: Likewise.
* nscd/getpwnam_r.c: Likewise.
* nscd/getpwuid_r.c: Likewise.
* nis/nis_cache.c: New file.
* nis/nis_cache2.h: New file.
* nis/nis_cache2_xdr.c: New file.