On 29.09.2016 8:08, Otto Moerbeek wrote:
> On Thu, Sep 29, 2016 at 12:10:47AM +0300, Evgeny Grin wrote:
> 
>> Hi!
>>
>> I configured freshly installed OpenBSD 6.0-release with
>>
>> kern.maxfiles=131072
>>
>> in /etc/sysctl.conf
>> and
>>
>> :openfiles-max=40960:openfiles-cur=40960:
>>
>> for daemon in /etc/login.conf
>>
>> And at each boot I see message:
>> kern.maxfiles: 7030 -> 131072
>> /etc/rc: ulimit: bad -n limit: Invalid argument
>>
>> I looked at /etc/rc and found that script at first step call 'ulimit -S
>> -n ' for value found for '-cur' and at second step call 'ulimit -H -n '
>> for value found for '-max'. That is incorrect as soft limit can't be set
>> to higher value than hard limit. Moreover, I can't just use
>> ":openfiles=40960:" for daemon class because "default" class has both
>> "-max" and "-cur" values - as result: at first step "40960" used for
>> both hard and soft limit, but immediately lowered by using "-cur" and
>> "-max" values from "default" class (getcap return them for "daemon"
>> class as well).
>>
>> As current workaround I use
>>
>> :openfiles=40960:openfiles-max=40960:openfiles-cur=40960:
>>
>> but it is not really elegant solution.
>>
>>
>> I this that at least order of suffix checking in /etc/rc must be changed
>> from
>> "for _suffix in {,-cur,-max}; do"
>> to
>> "for _suffix in {,-max,-cur}; do"
>>
>>
>> Am I right? Or I missed something?
>>
>> -- 
>> Best Wishes,
>> Evgeny Grin
> 
> First setting max and then cur should be enough.
> 
> Moving this to tech@
> 
>       -Otto
> 
> Index: rc
> ===================================================================
> RCS file: /cvs/src/etc/rc,v
> retrieving revision 1.486
> diff -u -p -r1.486 rc
> --- rc        10 Jul 2016 09:08:18 -0000      1.486
> +++ rc        29 Sep 2016 05:05:13 -0000
> @@ -31,7 +31,7 @@ update_limit() {
>       local _cap=$2 _val      # login.conf capability and its value
>       local _suffix
>  
> -     for _suffix in {,-cur,-max}; do
> +     for _suffix in {,-max,-cur}; do
>               _val=$(getcap -f /etc/login.conf -s ${_cap}${_suffix} daemon 
> 2>/dev/null)
>               [[ -n $_val ]] || continue
>               [[ $_val == infinity ]] && _val=unlimited
> 

May be it also worth to mention in /etc/login.conf comments, that if
both '-max' and '-cur' were set for "default" class, it's required to
override explicitly both values in other classes, because 'openfiles'
(without suffix) setting will be ineffective.

-- 
Best Wishes,
Evgeny Grin

Reply via email to