Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 24 Feb 2021 13:50:53 +0000 (UTC)
From:      Baptiste Daroussin <bapt@FreeBSD.org>
To:        Cy Schubert <Cy.Schubert@cschubert.com>
Cc:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   Re: git: 77e1ccbee3ed - main - rc: implement parallel boot
Message-ID:  <f8c96f59-bf38-42c8-bd3c-0f486eebd4f9@FreeBSD.org>
In-Reply-To: <202102241348.11ODmB3X003509@slippy.cwsent.com>
References:  <202102231027.11NARYYE041280@gitrepo.freebsd.org> <202102240105.11O15bKn096987@slippy.cwsent.com> <20210224092047.qjazicrzfvnf4vb2@aniel.nours.eu> <202102241348.11ODmB3X003509@slippy.cwsent.com>

next in thread | previous in thread | raw e-mail | index | archive | help

24 f=C3=A9vr. 2021 14:48:29 Cy Schubert <Cy.Schubert@cschubert.com>:

> In message <20210224092047.qjazicrzfvnf4vb2@aniel.nours.eu>, Baptiste
> Daroussin
> writes:
>>
>>
>> --7stizekjxx47ph24
>> Content-Type: text/plain; charset=3Dus-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.11NARYYE041280@gitrepo.freebsd.org>, Baptiste=
=3D20
>>> Daroussi
>>> n writes:
>>>> The branch main has been updated by bapt:
>>>>
>>>> URL: https://cgit.FreeBSD.org/src/commit/?id=3D3D77e1ccbee3ed6c837929e=
4e2=3D
>> 32fd07f9
>>>> 5bfc8294
>>>>
>>>> commit 77e1ccbee3ed6c837929e4e232fd07f95bfc8294
>>>> Author:=C2=A0=C2=A0=C2=A0=C2=A0 Rick Parrish <unitrunker@gmail.com>
>>>> AuthorDate: 2021-02-07 06:15:21 +0000
>>>> Commit:=C2=A0=C2=A0=C2=A0=C2=A0 Baptiste Daroussin <bapt@FreeBSD.org>
>>>> CommitDate: 2021-02-23 10:16:53 +0000
>>>>
>>>> =C2=A0=C2=A0=C2=A0 rc: implement parallel boot
>>>> =C2=A0=C2=A0 =3D20
>>>> =C2=A0=C2=A0=C2=A0 take advantage of the rcorder -p argument to implem=
ent parallel
>>>> =C2=A0=C2=A0=C2=A0 booting in rc.
>>>> =C2=A0=C2=A0 =3D20
>>>> =C2=A0=C2=A0=C2=A0 According to the author non scientific tests:
>>>> =C2=A0=C2=A0=C2=A0 on a Core 2 Duo with spinning disk:
>>>> =C2=A0=C2=A0 =3D20
>>>> =C2=A0=C2=A0=C2=A0 | Services enabled | before | after | saving |
>>>> =C2=A0=C2=A0=C2=A0 | 0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 | 8s=C2=A0=C2=A0=C2=A0=C2=A0 | 8=
s=C2=A0=C2=A0=C2=A0 | 0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |
>>>> =C2=A0=C2=A0=C2=A0 | 1=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 | 13s=C2=A0=C2=A0=C2=A0 | 13s=C2=
=A0=C2=A0 | 0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |
>>>> =C2=A0=C2=A0=C2=A0 | 2=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 | 17s=C2=A0=C2=A0=C2=A0 | 13s=C2=
=A0=C2=A0 | 5=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |
>>>> =C2=A0=C2=A0=C2=A0 | 3=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 | 23s=C2=A0=C2=A0=C2=A0 | 13s=C2=
=A0=C2=A0 | 10=C2=A0=C2=A0=C2=A0=C2=A0 |
>>>> =C2=A0=C2=A0=C2=A0 | 4=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 | 28s=C2=A0=C2=A0=C2=A0 | 13s=C2=
=A0=C2=A0 | 15=C2=A0=C2=A0=C2=A0=C2=A0 |
>>>> =C2=A0=C2=A0=C2=A0 | 5=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 | 33s=C2=A0=C2=A0=C2=A0 | 13s=C2=
=A0=C2=A0 | 20=C2=A0=C2=A0=C2=A0=C2=A0 |
>>>> =C2=A0=C2=A0 =3D20
>>>> =C2=A0=C2=A0=C2=A0 PR:=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0 249192
>>>> =C2=A0=C2=A0=C2=A0 MFC after:=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 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
>>>> =C2=A0 skip_firstboot=3D3D"-s firstboot"
>>>> fi
>>>> =3D20
>>>> +# rc_parallel_start default is "NO"
>>>> +rc_parallel_start=3D3D${rc_parallel_start:-NO}
>>>> +_rc_parallel=3D3D''
>>>> +# enable rcorder -p if /etc/rc.conf rc_parallel_start is "YES"
>>>> +checkyesno rc_parallel_start && _rc_parallel=3D3D'-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=3D3D`rcorder ${skip} ${skip_firstboot} /etc/rc.d/* 2>/dev/null`
>>>> +files=3D3D`rcorder ${skip} ${skip_firstboot} ${_rc_parallel} /etc/rc.=
d/*=3D
>> 2>/dev/
>>>> null`
>>>> =3D20
>>>> _rc_elem_done=3D3D' '
>>>> -for _rc_elem in ${files}; do
>>>> - run_rc_script ${_rc_elem} ${_boot}
>>>> - _rc_elem_done=3D3D"${_rc_elem_done}${_rc_elem} "
>>>> -
>>>> - case "$_rc_elem" in
>>>> - */${early_late_divider})=C2=A0 break ;;
>>>> - esac
>>>> +IFS=3D3D$'\n'
>>>> +for _rc_group in ${files}; do
>>>> + IFS=3D3D$' '
>>>> + for _rc_elem in ${_rc_group}; do
>>>> +=C2=A0=C2=A0 run_rc_script ${_rc_elem} ${_boot} &
>>>> +=C2=A0=C2=A0 _rc_elem_done=3D3D"${_rc_elem_done}${_rc_elem} "
>>>> +
>>>> +=C2=A0=C2=A0 case "$_rc_elem" in
>>>> +=C2=A0=C2=A0 */${early_late_divider}) break ;;
>>>> +=C2=A0=C2=A0 esac
>>>> + done
>>>> + wait
>>>> + IFS=3D3D$'\n'
>>>> done
>>>> =3D20
>>>> unset files local_rc
>>>> @@ -122,14 +134,21 @@ if [ -e ${firstboot_sentinel} ]; then
>>>> =C2=A0 skip_firstboot=3D3D""
>>>> fi
>>>> =3D20
>>>> -files=3D3D`rcorder ${skip} ${skip_firstboot} /etc/rc.d/* ${local_rc} =
2>/=3D
>> dev/null
>>>> `
>>>> -for _rc_elem in ${files}; do
>>>> - case "$_rc_elem_done" in
>>>> - *" $_rc_elem "*)=C2=A0 continue ;;
>>>> - esac
>>>> -
>>>> - run_rc_script ${_rc_elem} ${_boot}
>>>> +files=3D3D`rcorder ${skip} ${skip_firstboot} /etc/rc.d/* ${local_rc} =
${_=3D
>> rc_paral
>>>> lel} 2>/dev/null`
>>>> +IFS=3D3D$'\n'
>>>> +for _rc_group in ${files}; do
>>>> + IFS=3D3D$' '
>>>> + for _rc_elem in ${_rc_group}; do
>>>> +=C2=A0=C2=A0 case "$_rc_elem_done" in
>>>> +=C2=A0=C2=A0 *" $_rc_elem "*) continue ;;
>>>> +=C2=A0=C2=A0 esac
>>>> +
>>>> +=C2=A0=C2=A0 run_rc_script ${_rc_elem} ${_boot} &
>>>> + done
>>>> + wait
>>>> + IFS=3D3D$'\n'
>>>> done
>>>> +unset IFS
>>>> =3D20
>>>> # Remove the firstboot sentinel, and reboot if it was requested.
>>>> # Be a bit paranoid about removing it to handle the common failure
>>>>
>>> =3D20
>>> Since this commit my postfix, dovecot and nut fail to start at boot, an=
d=3D
>> =3D20
>>> must be started by hand.
>>> =3D20
>>> =3D20
>> I cannot reproduce, what failure do you have?=3D20
>
> It was a missing unset IFS and it's been fixed.
>
>



Thank you for the fix and sorry about that!

Bapt



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?f8c96f59-bf38-42c8-bd3c-0f486eebd4f9>