diff options
author | Ulrich Drepper <drepper@redhat.com> | 2004-08-26 18:35:05 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2004-08-26 18:35:05 +0000 |
commit | a95a08b4af38992cbcf3d1da97199ef19528fbde (patch) | |
tree | 669bba61a337bf8b9c9c15857877bc589792435c /nscd/nscd.c | |
parent | 1114ffff54dfbd35cbff9c845376b8221c2c9ced (diff) | |
download | glibc-a95a08b4af38992cbcf3d1da97199ef19528fbde.tar glibc-a95a08b4af38992cbcf3d1da97199ef19528fbde.tar.gz glibc-a95a08b4af38992cbcf3d1da97199ef19528fbde.tar.bz2 glibc-a95a08b4af38992cbcf3d1da97199ef19528fbde.zip |
Update.
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.
Diffstat (limited to 'nscd/nscd.c')
-rw-r--r-- | nscd/nscd.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/nscd/nscd.c b/nscd/nscd.c index e3040bb20f..35e48ca348 100644 --- a/nscd/nscd.c +++ b/nscd/nscd.c @@ -36,6 +36,7 @@ #include <string.h> #include <syslog.h> #include <unistd.h> +#include <sys/mman.h> #include <sys/socket.h> #include <sys/stat.h> #include <sys/un.h> @@ -69,7 +70,6 @@ int disabled_passwd; int disabled_group; int go_background = 1; -int secure[lastdb]; int secure_in_use; static const char *conffile = _PATH_NSCDCONF; @@ -342,11 +342,11 @@ parse_opt (int key, char *arg, struct argp_state *state) case 'S': if (strcmp (arg, "passwd,yes") == 0) - secure_in_use = secure[pwddb] = 1; + secure_in_use = dbs[pwddb].secure = 1; else if (strcmp (arg, "group,yes") == 0) - secure_in_use = secure[grpdb] = 1; + secure_in_use = dbs[grpdb].secure = 1; else if (strcmp (arg, "hosts,yes") == 0) - secure_in_use = secure[hstdb] = 1; + secure_in_use = dbs[hstdb].secure = 1; break; default: @@ -406,6 +406,14 @@ termination_handler (int signum) /* Clean up pid file. */ unlink (_PATH_NSCDPID); + // XXX Terminate threads. + + /* Synchronize memory. */ + for (int cnt = 0; cnt < lastdb; ++cnt) + if (dbs[cnt].persistent) + // XXX async OK? + msync (dbs[cnt].head, dbs[cnt].memsize, MS_ASYNC); + _exit (EXIT_SUCCESS); } |