mirror of
https://github.com/systemd/systemd.git
synced 2024-12-25 01:34:28 +03:00
sysctl: consider --prefix while parsing the files
not while applying the parsed sysctl values. Otherwise info "Overwriting earlier assignment of %s in file %s" is visible many times even though the given --prefix doesn't try to set the overridden value. This also optimizes the startup tiny bit since we have udev rules running on network devices and setting sysctl through the rules.
This commit is contained in:
parent
2a7e23fbba
commit
b99802f769
@ -78,22 +78,6 @@ static int apply_sysctl(const char *property, const char *value) {
|
||||
n = stpcpy(p, "/proc/sys/");
|
||||
strcpy(n, property);
|
||||
|
||||
if (!strv_isempty(arg_prefixes)) {
|
||||
char **i;
|
||||
bool good = false;
|
||||
|
||||
STRV_FOREACH(i, arg_prefixes)
|
||||
if (path_startswith(p, *i)) {
|
||||
good = true;
|
||||
break;
|
||||
}
|
||||
|
||||
if (!good) {
|
||||
log_debug("Skipping %s", p);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
k = write_string_file(p, value);
|
||||
if (k < 0) {
|
||||
log_full(k == -ENOENT ? LOG_DEBUG : LOG_WARNING,
|
||||
@ -173,6 +157,20 @@ static int parse_file(Hashmap *sysctl_options, const char *path, bool ignore_eno
|
||||
p = normalize_sysctl(strstrip(p));
|
||||
value = strstrip(value);
|
||||
|
||||
if (!strv_isempty(arg_prefixes)) {
|
||||
char **i, *t;
|
||||
STRV_FOREACH(i, arg_prefixes) {
|
||||
t = path_startswith(*i, "/proc/sys/");
|
||||
if (t == NULL)
|
||||
t = *i;
|
||||
if (path_startswith(p, t))
|
||||
goto found;
|
||||
}
|
||||
/* not found */
|
||||
continue;
|
||||
}
|
||||
|
||||
found:
|
||||
existing = hashmap_get2(sysctl_options, p, &v);
|
||||
if (existing) {
|
||||
if (streq(value, existing))
|
||||
|
Loading…
Reference in New Issue
Block a user