Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Maxime Ripard <maxime.ripard@free-electrons.com>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH] Rework of shutdown policy in inittab
Date: Wed, 07 Dec 2011 14:08:04 +0100	[thread overview]
Message-ID: <4EDF6534.4090409@free-electrons.com> (raw)
In-Reply-To: <CAAXf6LU1QuFL=pOD09e0dzA1ntsauaFSD2qUr-OPEbmXB74fyw@mail.gmail.com>

On 07/12/2011 07:52, Thomas De Schampheleire wrote:
> Hi,
> 
> On Fri, Sep 2, 2011 at 2:25 PM, Maxime Ripard
> <maxime.ripard@free-electrons.com> wrote:
>> This commit follows commit ad501b66. Start up of the busybox logging
>> daemons were moved to an init script but the shutdown were still
>> performed in inittab. This commit moves the shutdown policy to an
>> rcK script that calls the stop function of all the init scripts in
>> a reversed order.
>>
>> Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
>> ---
>>  fs/skeleton/etc/init.d/rcK |   27 +++++++++++++++++++++++++++
>>  fs/skeleton/etc/inittab    |    3 +--
>>  2 files changed, 28 insertions(+), 2 deletions(-)
>>  create mode 100755 fs/skeleton/etc/init.d/rcK
>>
>> diff --git a/fs/skeleton/etc/init.d/rcK b/fs/skeleton/etc/init.d/rcK
>> new file mode 100755
>> index 0000000..59e9c54
>> --- /dev/null
>> +++ b/fs/skeleton/etc/init.d/rcK
>> @@ -0,0 +1,27 @@
>> +#!/bin/sh
>> +
>> +
>> +# Stop all init scripts in /etc/init.d
>> +# executing them in reversed numerical order.
>> +#
>> +for i in $(ls -r /etc/init.d/S??*) ;do
>> +
>> +     # Ignore dangling symlinks (if any).
>> +     [ ! -f "$i" ] && continue
>> +
>> +     case "$i" in
>> +       *.sh)
>> +           # Source shell script for speed.
>> +           (
>> +               trap - INT QUIT TSTP
>> +               set stop
>> +               . $i
>> +           )
>> +           ;;
>> +       *)
>> +           # No sh extension, so fork subprocess.
>> +           $i stop
>> +           ;;
>> +    esac
>> +done
>> +
>> diff --git a/fs/skeleton/etc/inittab b/fs/skeleton/etc/inittab
>> index ac410d6..85881f4 100644
>> --- a/fs/skeleton/etc/inittab
>> +++ b/fs/skeleton/etc/inittab
>> @@ -30,8 +30,7 @@ null::sysinit:/bin/hostname -F /etc/hostname
>>  ::ctrlaltdel:/sbin/reboot
>>
>>  # Stuff to do before rebooting
>> -null::shutdown:/usr/bin/killall klogd
>> -null::shutdown:/usr/bin/killall syslogd
>> +null::shutdown:/etc/init.d/rcK
>>  null::shutdown:/bin/umount -a -r
>>  null::shutdown:/sbin/swapoff -a
> 
> This is a different behavior now. Before only the logging daemons were
> killed, now all init scripts are run.
> 
> For this to work properly, all init scripts that users have in
> /etc/init.d should actually have a stop() function. Since this
> behavior was not required previously, I expect several users not to
> have this.
> For such users, a reboot would suddenly trigger several
> initializations that are unexpected.

I have to admit, I didn't think about in-the-wild users in such a case.

> I think there are at least two solutions:
> 1. Keep the new behavior created with this patch, but make sure that
> the release notes clearly state this behavior change and update the
> documentation.

I hardly see how this is a new behaviour, every single init scripts we
have already implements it, and we require it to.

> 2. Adapt the new behavior: currently you are following
> /etc/init.d/Sxxxx files/links, while I think that the default policy
> on many distributions is to use /etc/init.d/Kxxxx for shutdown (and
> Sxxxx only for startup).

The only one doing that I can think of is OpenWRT, it is barely many.

> In this scenario, users who have custom Sxxx
> init scripts will not be impacted. Only if they choose to, can they
> create appropriate Kxxxx links and provide stop functions.
> For scripts present in the buildroot distribution, we can provide
> appropriate S and K links immediately.

You're right.

I'm glad we can finally have that sort of discussion, I was starting to
think every one had a dev/null rule for my patches.

However, this touches the same area than my systemd patches, so I'd
prefer not to touch the same area in every packages in such a small time
frame. So maybe the easier way would be to merge such as mechanism with
the init mechanism introduced with these patches.

Maxime
-- 
Maxime Ripard, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com

  parent reply	other threads:[~2011-12-07 13:08 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-09-02 12:25 [Buildroot] [PATCH] Rework of shutdown policy in inittab Maxime Ripard
2011-11-24  8:32 ` Maxime Ripard
2011-12-07  4:31 ` Kelvin Cheung
2011-12-07  6:52 ` Thomas De Schampheleire
2011-12-07  7:26   ` Kelvin Cheung
2011-12-07  9:50     ` Gustavo Zacarias
2011-12-07 13:08   ` Maxime Ripard [this message]
2011-12-08  9:33     ` Thomas De Schampheleire
2011-12-14 16:46   ` Thomas Petazzoni
2011-12-15  8:44     ` Thomas De Schampheleire
2012-01-03 10:22       ` Maxime Ripard
2012-01-03 10:48         ` Thomas De Schampheleire
  -- strict thread matches above, loose matches on Subject: below --
2011-12-15 13:21 Sagaert Johan
2011-12-15 15:08 ` Thomas De Schampheleire

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4EDF6534.4090409@free-electrons.com \
    --to=maxime.ripard@free-electrons.com \
    --cc=buildroot@busybox.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox