On Thu, Sep 29, 2016 at 11:45:21AM +0300, Evgeny Grin wrote: > > > 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.
I don't think that is true in general. That only holds for daemon. Other cases are handled by login. -Otto