Hi Dave,
On 14/07/2016:10:45:13 AM, Dave Young wrote:
Hi, Pratyush
On 07/13/16 at 01:37pm, Pratyush Anand wrote:
> If dracut watchdog module is enabled then, it includes kernel watchdog
> module of active watchdog device in initramfs.
>
> kdump.conf has an option to modify dracut_args. So, if an user passes "-a
> watchdog" in dracut_args then dracut will add kernel watchdog module of
> active watchdog device in initramfs.
>
> Since, kexec-tools always requires to add kernel watchdog module of active
> watchdog device in initramfs, therefore even when an user does not pass any
> watchdog option then also kexec-tools adds "-a watchdog" in dracut args.
>
> Therefore, if an user does not want to add kernel watchdog module in
> initramfs then he/she must pass "-o watchdog" in dracut_args.
>
> Signed-off-by: Pratyush Anand <panand(a)redhat.com>
> ---
> kdump-lib.sh | 29 +++++++++++++++++++++++++++++
> mkdumprd | 5 ++++-
> 2 files changed, 33 insertions(+), 1 deletion(-)
>
> diff --git a/kdump-lib.sh b/kdump-lib.sh
> index 141a5614f1d5..bd1d95ea4bfd 100755
> --- a/kdump-lib.sh
> +++ b/kdump-lib.sh
> @@ -382,3 +382,32 @@ get_ifcfg_filename() {
>
> echo -n "${ifcfg_file}"
> }
> +
> +# returns 0 when omission of watchdog module is desired in dracut_args
> +# returns 1 when addition of watchdog module is desired in dracut_args
> +# returns 2 when there is no option for watchdog module in dracut_args
> +check_wdt_mod_omission() {
> + local dracut_args
> + local ret=2
> +
> + dracut_args=$(grep "^dracut_args" /etc/kdump.conf)
> + [[ -z $dracut_args ]] && return $ret
> +
> + eval set -- $dracut_args
> + while :; do
> + [[ -z $1 ]] && break
> + case $1 in
> + -o|--omit)
> + echo $2 | grep -qw "watchdog"
> + [[ $? == 0 ]] && ret=0
> + shift;;
> + -a|--add)
> + echo $2 | grep -qw "watchdog"
> + [[ $? == 0 ]] && ret=1
> + shift;;
> + esac
> + shift
> + done
> +
> + return $ret
> +}
It looks over complex.
I did below test:
dracut -H -f a.img --printsize `uname -r`
- no watchdog added
Correct
dracut -a watchdog -o watchdog -H -f a.img --printsize `uname -r`
- no watchdog added
Correct
dracut -o watchdog -a watchdog -H -f a.img --printsize `uname -r`
- no watchdog added
Hummm, this seem a bit unexpected. I had impression that last option should take
precedence and overwrite previous options. Isn't it a bug in dracut which should
be fixed.
dracut -a watchdog -H -f a.img --printsize `uname -r`
- watchdog being added
Correct
What ever options if one use -o watchdog in dracut_args the "-a" will
be discarded. So how about just add -a watchdog in code if needed and
add a code comment that dracut_args options "-o watchdog" will overwrite
the "-a watchdog"? If one specify -a watchdog in dracut_args it does not
matter as well
OK.
Still most part of the above function check_wdt_mod_omission() will still be
there with some modification. I will still have to parse dracut_args to look for
-o|--omit watchdog.
> diff --git a/mkdumprd b/mkdumprd
> index eb0d5e06fac9..f964940555ee 100644
> --- a/mkdumprd
> +++ b/mkdumprd
> @@ -16,8 +16,11 @@ SAVE_PATH=$(grep ^path $conf_file| cut -d' ' -f2)
> # strip the duplicated "/"
> SAVE_PATH=$(echo $SAVE_PATH | tr -s /)
>
> +check_wdt_mod_omission
> +[[ $? -eq 2 ]] && WDTCFG="-a watchdog"
> +
> extra_modules=""
> -dracut_args=("--hostonly" "-o" "plymouth dash resume
ifcfg")
> +dracut_args=("--hostonly" "-o" "plymouth dash resume
ifcfg" $WDTCFG)
> OVERRIDE_RESETTABLE=0
>
> add_dracut_arg() {
> --
> 2.5.5
> _______________________________________________
> kexec mailing list
> kexec(a)lists.fedoraproject.org
>
https://lists.fedoraproject.org/admin/lists/kexec@lists.fedoraproject.org
~Pratyush