mirror of
https://git.FreeBSD.org/src.git
synced 2024-12-15 10:17:20 +00:00
Don't call stat(2) on nsswitch.conf(5) every time nsdispatch(3)
and dependent functions (eg getpwname(3)) get called. This can improve performance of binaries that perform a lot of name lookups, such as gssd(8). It also matches documented behaviour of Linux and Solaris. The old code is left in place, should anyone need it, guarded by #ifdef NS_REREAD_CONF. Reviewed by: imp, bcr MFC after: 2 weeks Relnotes: yes Sponsored by: DARPA, AFRL Differential Revision: https://reviews.freebsd.org/D17934
This commit is contained in:
parent
236e308af1
commit
8d113f4aec
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=340339
@ -335,6 +335,7 @@ static int
|
||||
nss_configure(void)
|
||||
{
|
||||
static time_t confmod;
|
||||
static int already_initialized = 0;
|
||||
struct stat statbuf;
|
||||
int result, isthreaded;
|
||||
const char *path;
|
||||
@ -352,6 +353,16 @@ nss_configure(void)
|
||||
if (path == NULL)
|
||||
#endif
|
||||
path = _PATH_NS_CONF;
|
||||
#ifndef NS_REREAD_CONF
|
||||
/*
|
||||
* Define NS_REREAD_CONF to have nsswitch notice changes
|
||||
* to nsswitch.conf(5) during runtime. This involves calling
|
||||
* stat(2) every time, which can result in performance hit.
|
||||
*/
|
||||
if (already_initialized)
|
||||
return (0);
|
||||
already_initialized = 1;
|
||||
#endif /* NS_REREAD_CONF */
|
||||
if (stat(path, &statbuf) != 0)
|
||||
return (0);
|
||||
if (statbuf.st_mtime <= confmod)
|
||||
|
@ -33,7 +33,7 @@
|
||||
.\"
|
||||
.\" $FreeBSD$
|
||||
.\"
|
||||
.Dd June 6, 2016
|
||||
.Dd November 10, 2018
|
||||
.Dt NSSWITCH.CONF 5
|
||||
.Os
|
||||
.Sh NAME
|
||||
@ -340,6 +340,12 @@ sets a policy of "if the user is notfound in nis, do not try files."
|
||||
This treats nis as the authoritative source of information, except
|
||||
when the server is down.
|
||||
.Sh NOTES
|
||||
The
|
||||
.Nm
|
||||
file is parsed by each program only once.
|
||||
Subsequent changes will not be applied until the program
|
||||
is restarted.
|
||||
.Pp
|
||||
If system got compiled with
|
||||
.Va WITHOUT_NIS
|
||||
you have to remove
|
||||
|
Loading…
Reference in New Issue
Block a user