1
0
mirror of https://github.com/systemd/systemd synced 2024-07-08 20:15:55 +00:00

manager: define a string constant for LONG_MAX and use that for sysctl

This moves the formatting of the constant to compilation time and let's us
avoid asprintf() in the very hot path of initial boot.
This commit is contained in:
Zbigniew Jędrzejewski-Szmek 2022-12-03 11:55:55 +01:00
parent b47e0fac03
commit a5fac1df27
2 changed files with 5 additions and 1 deletions

View File

@ -510,6 +510,10 @@ conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
conf.set('SIZEOF_TIMEX_MEMBER', cc.sizeof('typeof(((struct timex *)0)->freq)', prefix : '#include <sys/timex.h>'))
long_max = cc.compute_int('LONG_MAX', prefix : '#include <limits.h>')
assert(long_max > 100000)
conf.set_quoted('LONG_MAX_STR', '@0@'.format(long_max))
decl_headers = '''
#include <uchar.h>
#include <sys/mount.h>

View File

@ -1184,7 +1184,7 @@ static void bump_file_max_and_nr_open(void) {
#if BUMP_PROC_SYS_FS_FILE_MAX
/* The maximum the kernel allows for this since 5.2 is LONG_MAX, use that. (Previously things were
* different, but the operation would fail silently.) */
r = sysctl_writef("fs/file-max", "%li", LONG_MAX);
r = sysctl_write("fs/file-max", LONG_MAX_STR);
if (r < 0)
log_full_errno(IN_SET(r, -EROFS, -EPERM, -EACCES) ? LOG_DEBUG : LOG_WARNING,
r, "Failed to bump fs.file-max, ignoring: %m");