In message <2171b966-35c7-2dad-2c0f-f23061cb6...@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.schub...@cschubert.com>
FreeBSD UNIX:  <c...@freebsd.org>   Web:  http://www.FreeBSD.org

        The need of the many outweighs the greed of the few.



_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to