-----Original Message-----
From: Hatayama, Daisuke/畑山 大輔 <d.hatayama(a)fujitsu.com>
Sent: Wednesday, November 13, 2019 6:16 PM
To: Onitsuka, Shinichi/鬼束 伸一 <onitsuka.shinic(a)fujitsu.com>
Cc: kexec(a)lists.fedoraproject.org; 'Kairui Song' <kasong(a)redhat.com>
Subject: RE: [PATCH 1/3] dracut-kdump.sh: Execute the binary and script files in
/etc/kdump/{pre.d,post.d}.
> -----Original Message-----
> From: Kairui Song [mailto:kasong@redhat.com]
> Sent: Tuesday, November 12, 2019 6:05 PM
> To: Onitsuka, Shinichi/鬼束 伸一 <onitsuka.shinic(a)fujitsu.com>
> Cc: kexec(a)lists.fedoraproject.org
> Subject: Re: [PATCH 1/3] dracut-kdump.sh: Execute the binary and script files
> in /etc/kdump/{pre.d,post.d}.
>
> On Wed, Nov 6, 2019 at 12:26 PM onitsuka.shinic(a)fujitsu.com
> <onitsuka.shinic(a)fujitsu.com> wrote:
> >
> > This patch executes the binary and script files in /etc/kdump/{pre.d,post.d}
> > just like kdump_pre or kdump_post directive written in /etc/kdump.conf.
> >
> > Signed-off-by: shin-onitsuka <onitsuka.shinic(a)fujitsu.com>
> >
> > ---
> > dracut-kdump.sh | 36 ++++++++++++++++++++++++++++++++++++
> > 1 file changed, 36 insertions(+)
> >
> > diff --git a/dracut-kdump.sh b/dracut-kdump.sh
> > index 2ae1c7c..51a1f73 100755
> > --- a/dracut-kdump.sh
> > +++ b/dracut-kdump.sh
> > @@ -30,15 +30,51 @@ do_dump()
> >
> > do_kdump_pre()
> > {
> > + local _ret
> > +
> > if [ -n "$KDUMP_PRE" ]; then
> > "$KDUMP_PRE"
> > + _ret=$?
> > + if [ $_ret -ne 0 ]; then
> > + echo "kdump: $KDUMP_PRE exited with $_ret status"
> > + return $_ret
> > + fi
> > + fi
> > +
> > + if [ -d /etc/kdump/pre.d ]; then
> > + for file in `find /etc/kdump/pre.d -type f | sort`; do
> > + "$file"
> > + _ret=$?
> > + if [ $_ret -ne 0 ]; then
> > + echo "kdump: $file exited with $_ret status"
> > + return $_ret
> > + fi
> > + done
> > fi
> > }
>
> Currently the behavior is:
> # kdump_pre <binary | script>
> # - Works like the "kdump_post" directive, but instead of
running
> # after the dump process, runs immediately before it.
> # Exit status of this binary is interpreted as follows:
> # 0 - continue with dump process as usual
> # non 0 - reboot the system
>
> After this patch, if any one of the scripts in pre.d failed, rest of
> the scripts will be skipped, and kdump will reboot the system.
> Better to doc this somewhere.
>
> And this whole new thing needs a proper doc too.
>
In addition to the Kairui's comment,
please mention explicitly in the doc the order of execution of
kdump_pre and files in /etc/kdump/pre.d, i.e. the command specified
in kdump_pre is first executed and then the rest of the commands
under /etc/kdump/pre.d directory are executed.
How about the idea to behave as follows?
script/binary | behavior of non 0 Exit status
----------------+-------------------------------------------
in kdump_pre | reboot the system with error message
| (as usual)
----------------+-------------------------------------------
in kdump/pre.d | continue with next script/binary or kdump
| with error message
The script/binary has already been specified by kdump_pre can be executed
without the correction.
On the other hand, the script/binary that will be specified by kdump/pre.d
should not return with non 0 exit code but reboot the system,
if it want to be skipped rest of the scripts/binaries and kdump.
> >
> > do_kdump_post()
> > {
> > + local _ret
> > +
> > + if [ -d /etc/kdump/post.d ]; then
> > + for file in `find /etc/kdump/post.d -type f | sort`; do
> > + "$file" "$1"
> > + _ret=$?
> > + if [ $_ret -ne 0 ]; then
> > + echo "kdump: $file exited with $_ret status"
> > + return $_ret
> > + fi
> > + done
> > + fi
> > +
> > if [ -n "$KDUMP_POST" ]; then
> > "$KDUMP_POST" "$1"
> > + _ret=$?
> > + if [ $_ret -ne 0 ]; then
> > + echo "kdump: $KDUMP_POST exited with $_ret status"
> > + return $_ret
> > + fi
> > fi
> > }
> >
> > --
> > 1.8.3.1
>
> --
> Best Regards,
> Kairui Song
> _______________________________________________
> kexec mailing list -- kexec(a)lists.fedoraproject.org
> To unsubscribe send an email to kexec-leave(a)lists.fedoraproject.org
> Fedora Code of Conduct:
>
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
> List Guidelines:
https://fedoraproject.org/wiki/Mailing_list_guidelines
> List Archives:
>
https://lists.fedoraproject.org/archives/list/kexec@lists.fedoraproject.or
> g