Add default OOM Score option from conf file
[external/systemd.git] / packaging / default_oom_score.patch
1 diff --git a/src/main.c b/src/main.c
2 index ed317b4..6b56a86 100644
3 --- a/src/main.c
4 +++ b/src/main.c
5 @@ -76,6 +76,7 @@ static bool arg_sysv_console = true;
6  static bool arg_mount_auto = true;
7  static bool arg_swap_auto = true;
8  static char **arg_default_controllers = NULL;
9 +static char *arg_default_oom_score_adj = NULL;
10  static char ***arg_join_controllers = NULL;
11  static ExecOutput arg_default_std_output = EXEC_OUTPUT_JOURNAL;
12  static ExecOutput arg_default_std_error = EXEC_OUTPUT_INHERIT;
13 @@ -656,6 +657,7 @@ static int parse_config_file(void) {
14                  { "Manager", "MountAuto",             config_parse_bool,         0, &arg_mount_auto          },
15                  { "Manager", "SwapAuto",              config_parse_bool,         0, &arg_swap_auto           },
16                  { "Manager", "DefaultControllers",    config_parse_strv,         0, &arg_default_controllers },
17 +                { "Manager", "DefaultOOMScoreAdj",    config_parse_string,       0, &arg_default_oom_score_adj },
18                  { "Manager", "DefaultStandardOutput", config_parse_output,       0, &arg_default_std_output  },
19                  { "Manager", "DefaultStandardError",  config_parse_output,       0, &arg_default_std_error   },
20                  { "Manager", "JoinControllers",       config_parse_join_controllers, 0, &arg_join_controllers },
21 @@ -1260,6 +1262,13 @@ int main(int argc, char *argv[]) {
22  
23          if (parse_config_file() < 0)
24                  goto finish;
25 +        
26 +               if (arg_default_oom_score_adj) {
27 +                       if (write_one_line_file("/proc/self/oom_score_adj", arg_default_oom_score_adj) < 0) {
28 +                               log_error("Failed to set default oom_score_adj: %s", arg_default_oom_score_adj);
29 +                               goto finish;
30 +                       }
31 +               }
32  
33          if (arg_running_as == MANAGER_SYSTEM)
34                  if (parse_proc_cmdline() < 0)
35 diff --git a/src/system.conf b/src/system.conf
36 index 33d09bc..c24a606 100644
37 --- a/src/system.conf
38 +++ b/src/system.conf
39 @@ -18,6 +18,7 @@
40  #SysVConsole=yes
41  #CrashChVT=1
42  #CPUAffinity=1 2
43 +DefaultOOMScoreAdj=-1000
44  #MountAuto=yes
45  #SwapAuto=yes
46  #DefaultControllers=cpu
47 diff --git a/src/user.conf b/src/user.conf
48 index 9508a02..70c5540 100644
49 --- a/src/user.conf
50 +++ b/src/user.conf
51 @@ -8,6 +8,7 @@
52  # See systemd.conf(5) for details
53  
54  [Manager]
55 +DefaultOOMScoreAdj=-1000
56  #LogLevel=info
57  #LogTarget=console
58  #LogColor=yes