Hi, I've been seeing the same issues with nscd not caching, but unfortunately your patch doesn't seem to change things, for better or worse. My nsswitch.conf looks as follows: group: cache files nis hosts: cache files dns networks: cache files passwd: cache files nis shells: files services: cache files nis protocols: cache files rpc: cache files When I start "nscd -n -s -t" and then run top in another shell, top takes ~10 seconds to start up every time; if nscd did its thing, repeat invocations should be much faster. nscd doesn't seem to see any activity either, based on its log: [elars_at_one: ~] sudo nscd -n -s -t M1 from main: request agents registered successfully M2 from cache: cache was successfully initialized M2 from runtime environment: using socket /var/run/nscd M2 from runtime environment: successfully initialized M1 from main: working in single-threaded mode <no further output> Lars On 2014-9-30, at 5:40, David Shane Holden <dpejesh_at_yahoo.com> wrote: > So, I've noticed nscd hasn't worked right for awhile now. Since I > upgraded to 10.0 it never seemed to cache properly but I never bothered > to really dig into it until recently and here's what I've found. In my > environment I have nsswitch set to use caching and LDAP as such: > > group: files cache ldap > passwd: files cache ldap > > The LDAP part works fine, but caching didn't on 10.0 for some reason. > On my 9.2 machines it works as expected though. What I've found is in > usr.sbin/nscd/query.c > > struct query_state * > init_query_state(int sockfd, size_t kevent_watermark, uid_t euid, gid_t > egid) > { > ... > memcpy(&retval->timeout, &s_configuration->query_timeout, > sizeof(struct timeval)); > ... > } > > s_configuration->query_timeout is an 'int' which is being memcpy'd into > a 'struct timeval' causing it to grab other parts of the s_configuration > struct along with the query_timeout value and polluting retval->timeout. > In this case it appears to be grabbing s_configuration->threads_num and > shoving that into timeout.tv_sec along with the query_timeout. This ends > up confusing nscd later on (instead of being 8 it ends up being set to > 34359738376) and breaks it's ability to cache. I've attached a patch to > set the retval->timeout properly and gets nscd working again. I'm > guessing gcc was handling this differently from clang which is why it > wasn't a problem before 10.0. > <nscd.patch>_______________________________________________ > freebsd-current_at_freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-current > To unsubscribe, send any mail to "freebsd-current-unsubscribe_at_freebsd.org"
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:52 UTC