In message <20210224092047.qjazicrzfvnf4...@aniel.nours.eu>, Baptiste 
Daroussin
 writes:
> 
>
> --7stizekjxx47ph24
> Content-Type: text/plain; charset=us-ascii
> Content-Disposition: inline
> Content-Transfer-Encoding: quoted-printable
>
> On Tue, Feb 23, 2021 at 05:05:37PM -0800, Cy Schubert wrote:
> > In message <202102231027.11naryye041...@gitrepo.freebsd.org>, Baptiste=20
> > Daroussi
> > n writes:
> > > The branch main has been updated by bapt:
> > >
> > > URL: https://cgit.FreeBSD.org/src/commit/?id=3D77e1ccbee3ed6c837929e4e2=
> 32fd07f9
> > > 5bfc8294
> > >
> > > commit 77e1ccbee3ed6c837929e4e232fd07f95bfc8294
> > > Author:     Rick Parrish <unitrun...@gmail.com>
> > > AuthorDate: 2021-02-07 06:15:21 +0000
> > > Commit:     Baptiste Daroussin <b...@freebsd.org>
> > > CommitDate: 2021-02-23 10:16:53 +0000
> > >
> > >     rc: implement parallel boot
> > >    =20
> > >     take advantage of the rcorder -p argument to implement parallel
> > >     booting in rc.
> > >    =20
> > >     According to the author non scientific tests:
> > >     on a Core 2 Duo with spinning disk:
> > >    =20
> > >     | Services enabled | before | after | saving |
> > >     | 0                | 8s     | 8s    | 0      |
> > >     | 1                | 13s    | 13s   | 0      |
> > >     | 2                | 17s    | 13s   | 5      |
> > >     | 3                | 23s    | 13s   | 10     |
> > >     | 4                | 28s    | 13s   | 15     |
> > >     | 5                | 33s    | 13s   | 20     |
> > >    =20
> > >     PR:             249192
> > >     MFC after:      3 weeks
> > > ---
> > >  libexec/rc/rc | 49 ++++++++++++++++++++++++++++++++++---------------
> > >  1 file changed, 34 insertions(+), 15 deletions(-)
> > >
> > > diff --git a/libexec/rc/rc b/libexec/rc/rc
> > > index 35db4a850516..722d7fe35884 100644
> > > --- a/libexec/rc/rc
> > > +++ b/libexec/rc/rc
> > > @@ -91,19 +91,31 @@ if ! [ -e ${firstboot_sentinel} ]; then
> > >   skip_firstboot=3D"-s firstboot"
> > >  fi
> > > =20
> > > +# rc_parallel_start default is "NO"
> > > +rc_parallel_start=3D${rc_parallel_start:-NO}
> > > +_rc_parallel=3D''
> > > +# enable rcorder -p if /etc/rc.conf rc_parallel_start is "YES"
> > > +checkyesno rc_parallel_start && _rc_parallel=3D'-p'
> > > +
> > >  # Do a first pass to get everything up to $early_late_divider so that
> > >  # we can do a second pass that includes $local_startup directories
> > >  #
> > > -files=3D`rcorder ${skip} ${skip_firstboot} /etc/rc.d/* 2>/dev/null`
> > > +files=3D`rcorder ${skip} ${skip_firstboot} ${_rc_parallel} /etc/rc.d/*=
>  2>/dev/
> > > null`
> > > =20
> > >  _rc_elem_done=3D' '
> > > -for _rc_elem in ${files}; do
> > > - run_rc_script ${_rc_elem} ${_boot}
> > > - _rc_elem_done=3D"${_rc_elem_done}${_rc_elem} "
> > > -
> > > - case "$_rc_elem" in
> > > - */${early_late_divider})        break ;;
> > > - esac
> > > +IFS=3D$'\n'
> > > +for _rc_group in ${files}; do
> > > + IFS=3D$' '
> > > + for _rc_elem in ${_rc_group}; do
> > > +         run_rc_script ${_rc_elem} ${_boot} &
> > > +         _rc_elem_done=3D"${_rc_elem_done}${_rc_elem} "
> > > +
> > > +         case "$_rc_elem" in
> > > +         */${early_late_divider}) break ;;
> > > +         esac
> > > + done
> > > + wait
> > > + IFS=3D$'\n'
> > >  done
> > > =20
> > >  unset files local_rc
> > > @@ -122,14 +134,21 @@ if [ -e ${firstboot_sentinel} ]; then
> > >   skip_firstboot=3D""
> > >  fi
> > > =20
> > > -files=3D`rcorder ${skip} ${skip_firstboot} /etc/rc.d/* ${local_rc} 2>/=
> dev/null
> > > `
> > > -for _rc_elem in ${files}; do
> > > - case "$_rc_elem_done" in
> > > - *" $_rc_elem "*)        continue ;;
> > > - esac
> > > -
> > > - run_rc_script ${_rc_elem} ${_boot}
> > > +files=3D`rcorder ${skip} ${skip_firstboot} /etc/rc.d/* ${local_rc} ${_=
> rc_paral
> > > lel} 2>/dev/null`
> > > +IFS=3D$'\n'
> > > +for _rc_group in ${files}; do
> > > + IFS=3D$' '
> > > + for _rc_elem in ${_rc_group}; do
> > > +         case "$_rc_elem_done" in
> > > +         *" $_rc_elem "*) continue ;;
> > > +         esac
> > > +
> > > +         run_rc_script ${_rc_elem} ${_boot} &
> > > + done
> > > + wait
> > > + IFS=3D$'\n'
> > >  done
> > > +unset IFS
> > > =20
> > >  # Remove the firstboot sentinel, and reboot if it was requested.
> > >  # Be a bit paranoid about removing it to handle the common failure
> > >
> >=20
> > Since this commit my postfix, dovecot and nut fail to start at boot, and=
> =20
> > must be started by hand.
> >=20
> >=20
> I cannot reproduce, what failure do you have?=20

It was a missing unset IFS and it's been fixed.


-- 
Cheers,
Cy Schubert <cy.schub...@cschubert.com>
FreeBSD UNIX:  <c...@freebsd.org>   Web:  https://FreeBSD.org
NTP:           <c...@nwtime.org>    Web:  https://nwtime.org

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



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

Reply via email to