Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 18 Jun 2016 20:32:26 -0700
From:      Adrian Chadd <adrian@freebsd.org>
To:        Cy Schubert <Cy.Schubert@komquats.com>
Cc:        Niclas Zeising <zeising@freebsd.org>,  "src-committers@freebsd.org" <src-committers@freebsd.org>,  "svn-src-all@freebsd.org" <svn-src-all@freebsd.org>,  "svn-src-head@freebsd.org" <svn-src-head@freebsd.org>
Subject:   Re: svn commit: r288291 - head/etc
Message-ID:  <CAJ-VmonLqPNaN_CMO%2BdwyiTw4ULSnridcREF6NGkLU5QohoMew@mail.gmail.com>
In-Reply-To: <201606190006.u5J06Qk6009591@slippy.cwsent.com>
References:  <zeising@freebsd.org> <2171b966-35c7-2dad-2c0f-f23061cb677a@freebsd.org> <201606190006.u5J06Qk6009591@slippy.cwsent.com>

next in thread | previous in thread | raw e-mail | index | archive | help
i think that's fine for -11. I'd like to just move limits to /bin for
12. (I mean, it's 2016, why are you splitting / and /usr again? But..)

I don't want to see differing system behaviour between limits but it's
likely unavoidable for 11 and could do with some errata notice so
people know what to expect.

Thanks,


-adrian


On 18 June 2016 at 17:06, Cy Schubert <Cy.Schubert@komquats.com> wrote:
> In message <2171b966-35c7-2dad-2c0f-f23061cb677a@freebsd.org>, Niclas
> Zeising w
> rites:
>> On 09/27/15 06:03, Adrian Chadd wrote:
>> > Author: adrian
>> > Date: Sun Sep 27 04:03:11 2015
>> > New Revision: 288291
>> > URL: https://svnweb.freebsd.org/changeset/base/288291
>> >
>> > Log:
>> >   Enforce consistent limits of daemons run from rc.subr:
>> >
>> >   * Allow the user to configure the login class to use in rc.conf
>> >     by using {daemon}_login_class, which;
>> >   * Use the daemon class by default;
>> >   * .. and then use 'limits' to set the login class so it works both
>> >     via init at startup (which runs this in 'daemon' class) and via
>> >     whichever root environment (eg command line, other daemons, etc.)
>> >
>> >   Reviewed by:      dteske
>> >   Differential Revision:    https://reviews.freebsd.org/D3630
>> >
>> > Modified:
>> >   head/etc/rc.subr
>> >
>> > Modified: head/etc/rc.subr
>> > ===========================================================================
>> ===
>> > --- head/etc/rc.subr        Sun Sep 27 03:46:55 2015        (r288290)
>> > +++ head/etc/rc.subr        Sun Sep 27 04:03:11 2015        (r288291)
>> > @@ -768,6 +768,8 @@ check_startmsgs()
>> >  #
>> >  #  ${name}_prepend n       Command added before ${command}.
>> >  #
>> > +#  ${name}_login_class n   Login class to use, else "daemon".
>> > +#
>> >  #  ${rc_arg}_cmd   n       If set, use this as the method when invoked;
>> >  #                          Otherwise, use default command (see below)
>> >  #
>> > @@ -942,7 +944,7 @@ run_rc_command()
>> >         _nice=\$${name}_nice        _user=\$${name}_user \
>> >         _group=\$${name}_group      _groups=\$${name}_groups \
>> >         _fib=\$${name}_fib          _env=\$${name}_env \
>> > -       _prepend=\$${name}_prepend
>> > +       _prepend=\$${name}_prepend  _login_class=\${${name}_login_class:-da
>> emon}
>> >
>> >     if [ -n "$_user" ]; then        # unset $_user if running as that user
>> >             if [ "$_user" = "$(eval $IDCMD)" ]; then
>> > @@ -1050,6 +1052,9 @@ $command $rc_flags $command_args"
>> >                             fi
>> >                     fi
>> >
>> > +                                   # Prepend default limits
>> > +                   _doit="limits -C $_login_class $_doit"
>>                                ^^^^^^^^^^
>> > +
>> >                                     # run the full command
>> >                                     #
>> >                     if ! _run_rc_doit "$_doit"; then
>>
>> Apologies for waking so late.
>> This breaks the start of scripts running before file systems are
>> mounted, for example /etc/rc.d/ddb, if / and /usr are on separate
>> partitions.  The issue is that limits is /usr/bin/limits, and for
>> obvious reasons can't be found before /usr is mounted.
>> I suggest either move /usr/bin/limits to /bin/limits or avoid using it
>> altogether.
>> Do you want me to open a PR to track this issue?
>> Regards!
>
> A simple solution might be,
>
> Index: rc.subr
> ===================================================================
> --- rc.subr     (revision 302001)
> +++ rc.subr     (working copy)
> @@ -1071,8 +1071,13 @@
>                                 fi
>                         fi
>
> +                       # Before we prepend limits, test if limits is
> +                       # available (/usr is mounted) so that limits can
> +                       # be run.
> +                       if limits >/dev/null 2>&1; then
>                                         # Prepend default limits
> -                       _doit="limits -C $_login_class $_doit"
> +                               _doit="limits -C $_login_class $_doit"
> +                       fi
>
>                                         # run the full command
>                                         #
>
>
> --
> Cheers,
> Cy Schubert <Cy.Schubert@cschubert.com>
> FreeBSD UNIX:  <cy@FreeBSD.org>   Web:  http://www.FreeBSD.org
>
>         The need of the many outweighs the greed of the few.
>
>
>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAJ-VmonLqPNaN_CMO%2BdwyiTw4ULSnridcREF6NGkLU5QohoMew>